Base64 디코딩

Base64 문자열을 붙여넣으면 원래의 텍스트나 바이트로 되돌립니다. 줄 바꿈, URL 안전 문자, 누락된 패딩, data: 접두사는 자동으로 처리되며, 오류가 있으면 문제가 된 문자의 정확한 위치를 알려 줍니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. Base64 문자열을 입력란에 붙여넣거나, ‘파일 열기’를 클릭해 Base64 텍스트가 담긴 파일을 불러옵니다.
  2. ‘출력 형식’을 ‘텍스트’로 두고 ‘문자 인코딩’(기본값 UTF-8)을 선택하거나, 바이너리 데이터라면 ‘출력 형식’을 ‘16진수’로 바꿉니다.
  3. 디코딩에 실패하면 오류 메시지를 확인합니다. 첫 번째 잘못된 문자의 위치가 표시됩니다.
  4. 디코딩 결과를 복사하거나 다운로드합니다.

디코더가 받아들이는 입력

디코딩은 인코딩의 역과정입니다. 각 문자를 원래의 6비트 값으로 되돌리고, 4문자마다 3바이트를 만듭니다. 실제로 접하는 Base64는 깔끔하지 않은 경우가 많기 때문에 이 디코더는 입력을 너그럽게 처리합니다.

  • 공백과 줄 바꿈은 무시되므로 줄 바꿈된 MIME 본문이나 PEM 블록을 그대로 붙여넣을 수 있습니다. 다만 -----BEGIN 줄과 -----END 줄은 먼저 지우십시오. 이 줄에 있는 영문자와 대시는 유효한 Base64 문자이므로 데이터로 디코딩됩니다.
  • URL 안전 입력, 즉 -, _ 문자가 들어간 입력도 +, / 문자를 쓰는 표준 Base64와 똑같이 디코딩됩니다.
  • 패딩이 없어도 괜찮습니다. 길이가 4n + 1자인 경우만 거부되는데, 남은 문자 하나로는 바이트를 만들 수 없기 때문입니다. 이런 경우는 대개 문자열이 잘렸다는 뜻입니다.
  • data URI도 처리됩니다. 앞에 붙은 data:...;base64, 접두사는 디코딩 전에 제거됩니다.

텍스트 출력과 바이너리 출력

디코딩 결과는 항상 바이트열입니다. 원본이 텍스트였다면 텍스트 출력을 유지하고 해당 문자 인코딩을 선택하십시오. 이미지, PDF, 압축 파일, 키, 암호문이었다면 어떤 문자 인코딩을 골라도 읽을 수 있는 텍스트가 되지 않습니다. 출력을 ‘16진수’로 바꿔 바이트를 살펴보거나, Base64 파일 변환 도구 또는 Base64 이미지 변환 도구에서 미리 보고 저장하십시오. 처음 몇 글자만 봐도 내용을 짐작할 수 있는 경우가 많습니다.

Base64 시작 부분디코딩된 내용
iVBORw0KGgoPNG 이미지
/9j/JPEG 이미지
R0lGODGIF 이미지
JVBERi0PDF 문서
UEsDBZIP 압축 파일(DOCX, XLSX, JAR 포함)
H4sIgzip 압축 데이터
eyJJSON 객체(예: JWT 헤더)

디코딩한 텍스트가 깨지는 이유

  • 잘못된 문자 인코딩. UTF-8 텍스트를 Windows-1252로 읽으면 é가 é로 바뀌고, EUC-KR, GBK, Shift_JIS 텍스트를 UTF-8로 읽으면 대체 문자(�)가 표시됩니다. 텍스트를 작성할 때 사용한 문자 인코딩을 선택하십시오.
  • 바이너리 데이터. 무작위 기호 사이로 앞부분에 PNG나 PK처럼 읽을 수 있는 조각이 드문드문 보인다면 텍스트가 아니라 파일입니다.
  • 압축되거나 암호화된 데이터. gzip 스트림, Protocol Buffers, 암호문은 올바르게 디코딩되더라도 텍스트가 아닙니다. 16진수 출력으로 실제 내용을 확인할 수 있습니다.
  • 이중 인코딩. 출력이 다시 Base64라면 입력란에 다시 붙여넣고 한 번 더 디코딩하십시오.

코드에서 Base64 디코딩하기

# Python
base64.b64decode(s).decode('utf-8')

// Node.js(URL 안전 입력도 처리)
Buffer.from(s, 'base64').toString('utf8')

// 브라우저: atob()는 바이트마다 문자 하나를 반환하므로 그 뒤에 UTF-8로 디코딩
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))

# Linux 및 macOS 셸
echo 'SGVsbG8=' | base64 --decode

사양

알파벳A-Z a-z 0-9 + /
출력 크기3바이트당 4문자(약 133%)
패딩= 문자로 4의 배수 길이까지 채움
표준RFC 4648 4절
대소문자 구분예

예시

입력 (UTF-8)출력
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

자주 묻는 질문

잘못된 문자 오류가 발생하는 이유는 무엇입니까?
입력에 Base64 알파벳에 없는 문자가 들어 있기 때문입니다. 따옴표, 백슬래시, 또는 URL에서 함께 복사된 %2B, %3D 같은 퍼센트 이스케이프가 대표적입니다. 따옴표를 지우거나 먼저 문자열을 URL 디코딩하십시오. 오류 메시지에 문제가 된 첫 번째 문자의 위치가 표시됩니다.
패딩 없는 Base64도 디코딩할 수 있습니까?
예. 이 디코더는 끝에 붙는 = 기호가 없어도 되므로 JWT, URL, API에서 가져온 패딩 없는 문자열도 정상적으로 디코딩됩니다.
URL에서 Base64를 복사한 뒤 결과가 잘못 나오는 이유는 무엇입니까?
Base64를 이스케이프하지 않고 쿼리 문자열에 넣으면 폼 디코딩 과정에서 +가 모두 공백으로 바뀌는 경우가 많습니다. 이 도구는 공백을 무시하므로 해당 문자가 사라집니다. 디코딩하기 전에 공백을 +로 바꾸고, URL로 전달하는 값에는 Base64URL을 사용하십시오.
Base64를 이미지나 파일로 디코딩하려면 어떻게 합니까?
사진을 미리 보고 다운로드하려면 Base64 이미지 변환 도구를, PDF, 압축 파일, 오디오 등 그 밖의 파일에는 Base64 파일 변환 도구를 사용하십시오. 두 도구 모두 첫 바이트를 보고 파일 형식을 감지합니다.
입력한 Base64가 서버로 전송됩니까?

아니요. 디코딩은 브라우저에서 JavaScript로 실행되며 입력은 기기 밖으로 나가지 않습니다. 토큰, 설정 파일의 비밀 값, 개인 정보를 디코딩할 때 특히 중요한 점입니다.