파일 업로드
  1. base64hub
  2. 텍스트 도구
  3. 크기 계산기

Base64 크기 계산기

바이트, KB, MB 단위로 크기를 입력하거나 파일을 놓으면 패딩, 줄 바꿈, data URI 접두사를 넣거나 뺀 정확한 Base64 길이를 보여 줍니다. 역방향 모드는 Base64 길이를 바이트로 되돌립니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 정확한 값 패딩, 줄 바꿈, 접두사까지 계산 업데이트 2026. 10. 27.
크기만 읽고 파일 내용은 열지 않습니다.

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

Base64 크기를 계산하는 방법

  1. 바이트 → Base64 길이를 그대로 두고 원본 크기를 입력한 다음 단위를 고르세요. 단위 설정에서 크기를 잰 방식에 맞게 1 KB = 1000 B 또는 1 KiB = 1024 B를 선택합니다.
  2. 또는 상자에 파일을 놓으세요. 크기만 읽고 파일 내용은 열지 않습니다.
  3. 표를 확인하세요. 패딩 있는 길이와 없는 길이, 퍼센트 오버헤드, 사용자 지정 줄 바꿈(줄 길이와 줄 바꿈 설정), MIME 이메일 줄, PEM 본문, 파일의 MIME 타입이 들어간 data: URI, 따옴표를 포함한 JSON 문자열이 나옵니다.
  4. 반대 방향은 Base64 길이 → 바이트로 바꾸고 길이를 입력한 뒤, 줄 바꿈이 포함되었는지 정하고 패딩 상황을 고르세요. 알고 있음, 알 수 없음 (0–2개), 없음 중 하나입니다. Base64 자체를 붙여넣으면 정확한 답이 나옵니다.

표 아래의 실시간 공식은 직접 입력한 숫자로 계산을 다시 보여 주므로, 코드 주석이나 티켓에 옮겨 적기 좋습니다.

공식과 33%인 이유

Base64는 3바이트마다 6비트씩 담은 4문자로 바꿉니다. 마지막 그룹은 =로 패딩해 4문자를 채우므로 다음과 같습니다.

padded   = 4 × ⌈n ÷ 3⌉
unpadded = ⌈4n ÷ 3⌉
decoded  = (characters × 3 ÷ 4) − number of "=" signs

입력이 크면 증가율은 33.3%로 고정됩니다. 아주 작은 입력에서는 패딩이 크게 작용해 1바이트가 4문자, 즉 300% 오버헤드가 됩니다. 아래 표는 계산기가 실행하는 코드와 같은 코드로 만들었습니다.

원본패딩 있는 Base64패딩 없음MIME (76 + CRLF)PEM (64 + LF)
1바이트4244
100바이트136134138138
1,000바이트 (1 KB)1,3361,3341,3701,356
1,024바이트 (1 KiB)1,3681,3661,4021,389
1,048,576바이트 (1 MiB)1,398,1041,398,1021,434,8961,419,949
5,000,000바이트 (5 MB)6,666,6686,666,6676,842,1066,770,834

줄 바꿈은 줄과 줄 사이에만 세고 마지막 줄 뒤에는 세지 않습니다. Python의 base64.encodebytes 같은 일부 인코더는 마지막 줄까지 모든 줄을 \n으로 끝내므로 줄 바꿈이 하나 더 생깁니다. data URI라면 접두사도 더하세요. data:image/png;base64,는 22자입니다.

크기 제한에 맞춰 계획하기

무언가 실패하기 전에 확인해 둘 만한 대표적인 제한입니다.

  • 요청 본문 제한. 엔드포인트가 10,000,000바이트까지 받고 파일을 JSON 필드에 넣는다면, 파일은 최대 약 7,500,000바이트에서 나머지 JSON만큼을 뺀 크기입니다. 역방향 모드로 바꿔 제한값을 넣고 필드 이름만큼 빼세요.
  • 데이터베이스 컬럼과 환경 변수. VARCHAR(255)에는 최대 189바이트의 Base64가 들어갑니다. 190바이트는 이미 256자가 필요합니다.
  • 이메일. MIME 첨부 파일은 76자마다 CRLF로 줄 바꿈하므로 전체적으로 약 37% 커집니다. 따라서 메시지 크기 제한의 약 73% 크기 파일까지만 보낼 수 있습니다. 자세한 내용은 이메일 속 Base64에 있습니다.
  • HTML이나 CSS의 data URI. 인라인 이미지는 파일보다 3분의 1 더 크고 따로 캐시할 수 없습니다. 그래도 이득인 경우는 data URI 성능에서 설명합니다.

코드에서 Base64 길이 구하기

어느 언어든 실제로 인코딩하지 않고 계산할 수 있습니다.

import math

def b64_len(n, padded=True):
    return 4 * math.ceil(n / 3) if padded else math.ceil(4 * n / 3)

print(b64_len(1048576), b64_len(1048576, padded=False))

출력은 1398104 1398102입니다. JavaScript에서 패딩 있는 길이는 4 * Math.ceil(n / 3)입니다. 이미 가진 문자열은 줄 바꿈을 지운 뒤 len(s) * 3 // 4 - s.count("=")로 디코딩 크기를 구할 수 있습니다. 역방향 모드가 4로 나눈 나머지가 1인 것 같은 불가능한 길이를 보고하면 문자열이 손상된 것입니다. Base64 검사기로 어디가 문제인지 찾으세요.

자주 묻는 질문

Base64 길이를 구하는 공식은 무엇인가요?

n바이트일 때 패딩이 있으면 4 × ⌈n ÷ 3⌉자, 패딩이 없으면 ⌈4n ÷ 3⌉자입니다. 줄 바꿈, data: 접두사, JSON 따옴표는 그 위에 더해집니다.

Base64를 디코딩하면 파일 크기는 얼마가 되나요?

줄 바꿈을 뺀 Base64 문자 수에 3을 곱하고 4로 나눈 뒤, 끝에 있는 = 하나마다 1바이트를 빼세요. 1,400,000자 문자열은 패딩에 따라 1,049,998~1,050,000바이트로 디코딩됩니다.

요청 크기 제한이 10 MB인 API로 보낼 수 있는 가장 큰 파일은 얼마인가요?

제한이 10,000,000바이트라면 대략 7.5 MB입니다. 10,000,000 × 3 ÷ 4 = 7,500,000이고, 여기서 문자열을 둘러싼 JSON 필드와 헤더만큼을 빼야 합니다. 정확한 값은 역방향 모드에 제한값을 길이로 넣어 확인하세요.

gzip을 쓰면 Base64 오버헤드가 사라지나요?

전송 구간에서는 대부분 사라집니다. gzip은 Base64를 인코딩된 바이트 크기 근처까지 다시 줄입니다. 랜덤 1,000,000바이트는 Base64 1,333,336자가 되고, 이것을 gzip으로 압축하면 1,009,976바이트입니다. 하지만 JSON 필드, 데이터베이스 컬럼, 압축하지 않은 요청처럼 텍스트 자체를 세는 제한에는 3분의 1이 그대로 적용됩니다.