Base64 인코딩 용량 계산기란?
Base64는 바이너리 데이터를 출력 가능한 64개의 ASCII 문자로 표현하는 인코딩 방식입니다. HTML/CSS에 이미지를 직접 넣을 때(data URI), 이메일에 파일을 첨부할 때(MIME), JSON이나 토큰 안에 바이너리 데이터를 담을 때 폭넓게 쓰입니다. Base64는 원본 3바이트를 출력 4문자로 변환하기 때문에 인코딩 결과는 항상 원본보다 커지며, 대략 33%가량 늘어납니다. 이 계산기는 여러분의 데이터가 인코딩 후 정확히 얼마나 커지는지 알려줍니다.
사용 방법
원본 파일이나 데이터의 크기를 입력하고 단위(바이트, KB, MB, GB)를 고른 뒤, 출력에 표준 패딩(끝에 붙는 = 문자)을 포함할지 선택하세요. 계산기는 인코딩 후 크기를 바이트 단위로 보여주고, 인코딩으로 늘어난 용량을 비율(%)로도 알려줍니다.
계산 공식 풀이
표준 Base64는 입력을 3바이트 단위로 처리합니다. 각 그룹은 정확히 4문자가 되고, 마지막에 남는 부분 그룹은 = 문자로 4문자가 되도록 채워집니다. 따라서 패딩을 포함한 크기는 다음과 같습니다.
$$\text{인코딩\_바이트} = 4 \times \left\lceil \frac{\text{입력\_바이트}}{3} \right\rceil$$
패딩을 끄면 실제로 필요한 문자만 생성됩니다. \( \left\lceil \frac{4 \times \text{입력\_바이트}}{3} \right\rceil \) 공식이 적용되어, 인코딩마다 붙던 1~2개의 패딩 문자를 줄일 수 있습니다.
계산 예시
1,000바이트짜리 파일이 있다고 해봅시다. 3으로 나누면 333.33, 올림(ceil)하면 334, 여기에 4를 곱하면 \( 334 \times 4 = 1{,}336 \)바이트입니다. 늘어난 비율은 \( (1336 - 1000) / 1000 = 33.6\% \)가 됩니다. 패딩을 빼면 \( \left\lceil 4000/3 \right\rceil = \left\lceil 1333.33 \right\rceil = 1{,}334 \)바이트가 됩니다.
주요 용어 설명
- Base64
-
64개의 인쇄 가능한 ASCII 문자(A–Z, a–z, 0–9, 그리고
+와/)를 사용하여 임의의 바이너리 데이터를 나타내는 바이너리-텍스트 인코딩 방식입니다. 이메일 본문, JSON, XML, URL 등 텍스트 전용 채널을 통해 바이너리 콘텐츠를 안전하게 전달할 수 있게 합니다. - 3바이트 그룹 / 4문자 블록
- Base64는 고정된 그룹으로 작동합니다. 입력의 모든 3바이트(24비트)가 4개의 6비트 청크로 분할되며, 각각 하나의 Base64 문자로 매핑됩니다. 따라서 3개의 입력 바이트는 항상 4개의 출력 문자가 되며, 이것이 인코딩의 크기 증가의 근본 원인입니다.
-
패딩(
=) -
입력 길이가 3의 정확한 배수가 아닌 경우, 최종 그룹이 불완전합니다. 인코더는 하나 또는 두 개의
=문자를 추가하여 출력 길이가 4의 배수로 유지되도록 합니다. 남은 바이트 1개는=2개를 생성하고, 남은 바이트 2개는=1개를 생성합니다. - 오버헤드
- Base64가 원본 데이터와 비교하여 추가하는 여분의 크기입니다. 3바이트가 4문자가 되므로, 인코딩된 데이터는 약 \(4/3 \approx 1.333\)배 더 크며, 이는 대략 33%의 증가입니다(패딩과 줄 바꿈이 포함되면 약간 더 많습니다).
- 데이터 URI
-
파일의 Base64 인코딩된 콘텐츠를 문서에 직접 포함시키는 URL 스킴(예:
data:image/png;base64,iVBORw0KGgo…)으로, 작은 자산에 대한 별도의 네트워크 요청의 필요성을 제거합니다. - MIME 줄 래핑
- 이메일(MIME) 인코딩에서 Base64 출력은 최대 76문자의 줄로 분할되며, 각각은 CRLF로 끝납니다. 이러한 줄 바꿈은 기본 33% 확장 이상의 소량의 추가 크기를 더합니다.
- ASCII 문자
- 7비트 ASCII 집합의 단일 문자로, 1바이트로 인코딩됩니다. Base64 출력의 모든 문자는 ASCII 문자이므로, 문자 단위의 인코딩된 길이는 바이트 단위의 길이와 같습니다.
자주 묻는 질문
Base64는 왜 항상 더 커지나요? 6비트 데이터를 8비트짜리 ASCII 문자 하나로 표현하기 때문에 효율이 25% 떨어지고, 결과적으로 약 33% 더 많은 바이트가 생깁니다.
줄바꿈(line break)도 포함되나요? 아니요. 일부 MIME 인코더는 76자마다 줄바꿈을 넣어 아주 약간의 용량이 추가되지만, 이 도구는 순수한 인코딩 크기만 계산합니다.
data URI는 어떤가요? data URI에는 data:image/png;base64, 같은 접두사가 추가로 붙습니다. 전체 URI 길이를 알고 싶다면 이 접두사 문자열의 길이를 인코딩 크기에 더하면 됩니다.