파일 업로드
  1. base64hub
  2. 텍스트 도구
  3. Base64 → 텍스트

Base64를 텍스트로: Base64 문자열 디코딩

Base64 문자열을 붙여넣으면 안에 든 텍스트를 읽을 수 있습니다. 기본은 UTF-8이며, 결과가 깨져 보이면 27가지 문자 인코딩 중 하나로 바꾸거나 도구가 추측하게 할 수 있습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 업데이트 2026. 10. 27.
입력 0 B출력 0 B크기 –

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

Base64를 텍스트로 변환하는 방법

  1. 입력 · Base64 상자에 Base64 문자열을 붙여넣으세요. 공백, 줄 바꿈, 앞뒤 따옴표가 있어도 됩니다.
  2. 출력 · 텍스트에서 텍스트를 읽으세요. 도구 아래 상태 표시줄에 입력이 올바른 Base64였는지, 몇 바이트였는지, 내용이 무엇으로 보이는지 나옵니다.
  3. 출력에 �나 이상한 글자가 보이면 문자 인코딩을 바꾸세요. 한글이 깨진다면 EUC-KR을 먼저 시도해 보세요. 자동 감지는 바이트 순서 표시, UTF-8, UTF-16을 확인합니다.
  4. 출력 복사로 텍스트를 복사하거나 다운로드로 저장하세요.

반대 방향은 텍스트를 Base64로입니다.

문자열이 Base64인지 알아보는 방법

Base64 문자열은 64개 문자와 패딩용 =만 씁니다. 표준 Base64에는 +와 /가 있고, URL-safe 변형은 대신 -와 _를 씁니다. 패딩이 있는 문자열은 길이가 4로 나누어떨어지며, =는 끝에만 올 수 있습니다.

이 규칙은 필요조건이지만 충분조건은 아닙니다. 평범한 단어도 많이 통과합니다. Test는 올바른 Base64이며 아무 의미 없는 3바이트 4D EB 2D로 디코딩됩니다. 실용적인 검사 방법은 문자열을 디코딩해 의미 있는 결과가 나오는지 보는 것입니다. 예/아니요 이상의 답이 필요하다면 Base64 검사기가 문자열이 어긴 문자, 길이, 패딩 규칙을 짚어 주고 애초에 Base64일 가능성이 얼마나 되는지 점수로 보여 줍니다.

예시

Base64 문자열텍스트비고
VGhhbmsgeW91IQ==Thank you!일반 ASCII
SGVsbG8sIFfDtnJsZA==Hello, Wörldö는 UTF-8에서 2바이트
5L2g5aW9你好6바이트, 글자당 3바이트
0J/RgNC40LLQtdGCПриветUTF-8 키릴 문자
QmFzZTY0IGlzIG5vdCBlbmNyeXB0aW9uLg==Base64 is not encryption.누구나 읽을 수 있음
dXNlcm5hbWU6c2VjcmV0username:secretHTTP Basic 인증 헤더의 형식

마지막 행에서 보듯이 Authorization: Basic 헤더를 본 사람은 누구나 그 안의 비밀번호를 읽을 수 있습니다. Basic Auth 디코더는 이런 헤더를 사용자와 비밀번호로 나누어 주며, 실제로 이를 비공개로 지켜 주는 것이 HTTPS인 이유는 인코딩과 암호화의 차이에서 설명합니다.

바이트에서 문자열로

Base64를 디코딩하면 바이트가 나옵니다. 거기서 문자열을 얻는 것은 문자 인코딩이 필요한 두 번째 단계이며, “텍스트가 깨지는” 문제 대부분이 이 단계에서 생깁니다. 대부분의 언어는 두 단계를 명시적으로 나눕니다.

import base64

raw = base64.b64decode("SGVsbG8sIFfDtnJsZA==")
raw                     # b'Hello, W\xc3\xb6rld'
raw.decode("utf-8")     # 'Hello, Wörld'
raw.decode("latin-1")   # 'Hello, Wörld'

JavaScript에서는 fatal: true를 준 TextDecoder가 조용히 �를 넣는 대신 TypeError를 던지므로, 깨진 텍스트를 저장하느니 실패하는 편이 나을 때 유용합니다.

const bytes = Uint8Array.from(atob("Y2Fm6Q=="), c => c.charCodeAt(0));
new TextDecoder("utf-8", { fatal: true }).decode(bytes);
// TypeError: the bytes are not valid UTF-8
new TextDecoder("windows-1252").decode(bytes);   // "café"

더 많은 패턴은 Python과 JavaScript 페이지에 있습니다.

출력이 읽을 수 있는 텍스트가 아닐 때

  • 대부분 기호이고 읽을 수 있는 단어가 몇 개뿐입니다. 문자열에 파일이 들어 있습니다. 상태 표시줄의 추정 형식을 확인한 뒤 미리 보고 저장할 수 있는 Base64를 파일로에서 여세요.
  • 글자 사이가 띄엄띄엄 떨어져 있습니다. UTF-16 텍스트입니다. 문자 인코딩을 UTF-16LE로 설정하세요.
  • 한글이 ÇѱÛ처럼 깨집니다. EUC-KR 텍스트를 다른 인코딩으로 읽은 것입니다. 문자 인코딩을 EUC-KR로 바꾸세요.
  • 읽을 수는 있는데 é가 é로 보입니다. 인코딩되기 전 어딘가에서 텍스트가 잘못 디코딩되었습니다. Base64는 문제가 없고 원본 데이터가 문제입니다.
  • 출력이 다시 Base64입니다. 두 번 인코딩되었습니다. 출력을 복사해 입력으로 붙여넣고 한 번 더 디코딩하세요.
  • 무작위처럼 보이는 바이트에 감지된 형식도 없습니다. 데이터가 암호화되었거나 압축되었을 가능성이 높습니다. Base64 디코딩은 첫 번째 층일 뿐이며, gzip이나 zlib 데이터라면 gzip Base64 디코더를 사용해 보세요.

자주 묻는 질문

Base64 문자열이란 무엇인가요?

A–Z, a–z, 0–9, +, / 문자로만 이루어지고 흔히 =나 ==로 끝나는 텍스트입니다. 텍스트, 이미지, 그 밖의 어떤 파일이든 바이트를 나타내며, 일반 문자만 다루는 시스템을 통과할 수 있도록 쓴 것입니다.

디코딩하기 전에 Base64 문자열에 무엇이 들었는지 알 수 있나요?

첫 글자들을 보면 알 수 있는 경우가 많습니다. eyJ는 JSON, PD94bWwg는 XML, iVBORw0KGgo는 PNG, JVBERi0은 PDF입니다. 디코딩하면 상태 표시줄에 감지된 형식이 나옵니다. 자주 보는 Base64 접두사를 참고하세요.

Python에서 Base64를 문자열로 바꾸려면 어떻게 하나요?

base64.b64decode(s).decode("utf-8")를 쓰세요. 첫 호출은 바이트를 돌려주고, .decode()가 지정한 문자 인코딩으로 이를 str로 바꿉니다. 한국어 레거시 데이터라면 "utf-8" 대신 "euc-kr"을 지정하세요.

디코딩한 텍스트가 또 Base64 문자열인 이유는 무엇인가요?

값이 두 번 인코딩되었기 때문입니다. 시스템의 두 계층이 각자 인코딩할 때 생깁니다. 출력을 다시 입력란에 붙여넣고 한 번 더 디코딩하세요.