Base64 인코딩·디코딩

텍스트와 파일을 Base64로 인코딩하거나 디코딩합니다. 한글(UTF-8)도 깨지지 않습니다.

파일 → Base64

파일은 업로드되지 않고 브라우저 안에서만 읽습니다.

사용 방법

  1. 인코딩: 텍스트를 넣으면 UTF-8 바이트로 바꾼 뒤 Base64로 보여 줍니다.
  2. 디코딩: Base64를 넣으면 원래 텍스트로 되돌립니다. 공백·줄바꿈은 무시하고, data:...;base64, 앞부분도 자동으로 떼어 냅니다.
  3. 디코딩 결과가 텍스트가 아니라 이미지 같은 이진 데이터이면 16진수로 앞부분을 보여 주고, 파일로 저장할 수 있습니다.
  4. 파일을 Base64나 data URL로 바꾸려면 아래 파일 → Base64에서 파일을 고르세요.

인코딩 예시

텍스트UTF-8 바이트Base64Base64URL (패딩 없음)
Hello5SGVsbG8=SGVsbG8
foobar6Zm9vYmFyZm9vYmFy
한글67ZWc6riA7ZWc6riA
안녕하세요157JWI64WV7ZWY7IS47JqU7JWI64WV7ZWY7IS47JqU
😀48J+YgA==8J-YgA
a+b/c?6YStiL2M/YStiL2M_

"foobar"의 결과 Zm9vYmFy는 Base64 표준 문서(RFC 4648) 10장의 테스트 값과 같습니다. 바이트 수가 3의 배수가 아니면 끝에 = 가 1~2개 붙습니다(예: 1,000바이트 → 1,336자).

알아 두기

자주 묻는 질문

btoa("한글")을 실행하면 InvalidCharacterError가 나는 이유는?

btoa는 한 글자가 1바이트(Latin-1)인 문자열만 받기 때문입니다. 한글은 UTF-8에서 한 글자가 3바이트라 먼저 TextEncoder로 바이트 배열로 바꾼 뒤 인코딩해야 합니다. 이 도구는 그렇게 처리하므로 한글·이모지가 깨지지 않습니다.

Base64와 Base64URL은 무엇이 다른가요?

Base64URL은 주소나 파일 이름에 넣기 곤란한 + 와 / 를 각각 - 와 _ 로 바꾸고, 보통 끝의 = 패딩을 뺍니다(RFC 4648 5장). JWT 토큰의 각 부분이 대표적인 Base64URL입니다. 디코딩할 때는 두 형식을 자동으로 구분합니다.

끝에 붙는 = 는 지워도 되나요?

= 는 전체 길이를 4의 배수로 맞추는 패딩이라 없어도 원래 데이터를 복원할 수 있습니다. 다만 패딩을 요구하는 라이브러리도 있으니 받는 쪽 규칙을 확인하세요. 이 도구는 패딩이 있든 없든 디코딩하되, 개수가 틀리면 오류로 알려 줍니다.

Base64로 바꾸면 용량이 얼마나 늘어나나요?

3바이트가 4글자가 되므로 약 33% 커집니다. 예를 들어 30KB 이미지는 약 40KB 문자열이 됩니다. 76자마다 줄을 바꾸는 MIME 형식이면 줄바꿈 문자만큼 조금 더 늘어납니다.

작은 아이콘을 data URL로 바꿔 CSS에 넣어도 되나요?

몇 KB 이하의 작은 아이콘은 요청 수를 줄일 수 있어 괜찮지만, 큰 이미지는 CSS·HTML 파일이 커지고 따로 캐시되지 않아 오히려 느려질 수 있습니다. 아래 파일 변환에서 "data URL" 결과를 복사해 url(...) 안에 넣으면 됩니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구