Base64 인코더·디코더

어느 쪽에 입력하든 반대쪽이 바로 바뀝니다. Base64(표준, URL 안전), 2진수, 16진수, URL 인코딩, HTML 엔티티를 지원하며 이모지와 한글, 악센트 문자도 정확하게 처리합니다.

텍스트

형식
.txt 다운로드

두 상자 모두 편집할 수 있습니다. 오른쪽에 인코딩된 텍스트를 붙여 넣으면 디코딩되며, 붙여 넣을 때 형식이 자동으로 감지됩니다.

Base64

올바름

모든 작업은 브라우저에서 실행됩니다. 입력하거나 끌어다 놓은 것은 업로드되지 않습니다.

파일을 Base64로

출력 형태

Base64 인코딩과 디코딩 방법

이 Base64 인코더·디코더는 양방향으로 동시에 작동합니다. 왼쪽에 일반 텍스트를 입력하면 오른쪽에 Base64가 나타나고, 오른쪽에 Base64를 붙여 넣으면 왼쪽에 디코딩된 텍스트가 나타납니다. Hello는 SGVsbG8=가 되고, SGVsbG8=를 붙여 넣으면 다시 Hello가 나옵니다.

같은 입력창 두 개로 이진수, 16진수, URL 인코딩, HTML 엔티티까지 네 가지 형식을 더 다룹니다. 오른쪽에 내용을 붙여 넣으면 도구가 내용을 살펴보고 맞는 형식으로 자동 전환하므로, 0과 1로 된 문자열은 따로 고르지 않아도 이진수로 읽습니다. 인코딩된 문자열을 실수로 일반 텍스트 칸에 붙여 넣으면 대신 디코딩하겠냐고 물어봅니다.

Base64가 실제로 하는 일

Base64는 어떤 바이트든 안전한 64개 문자(A–Z, a–z, 0–9, + 그리고 /)로 바꿔서, 이메일, JSON, HTML 속성, 환경 변수처럼 텍스트용으로 만들어진 시스템에서도 바이너리 데이터를 주고받게 해 줍니다. 3바이트(24비트)를 6비트씩 네 조각으로 나누고, 조각마다 문자 하나를 씁니다.

Man → 01001101 01100001 01101110 → 010011 010110 000101 101110 → TWFu

입력이 3바이트의 배수가 아니면 끝에 = 기호가 채워집니다. Ma는 TWE=, M은 TQ==입니다. Base64는 암호화가 아닙니다. 누구나 1초 만에 디코딩할 수 있으니 Base64로 바꾼 비밀번호를 숨겨진 것으로 생각하면 안 됩니다.

표준과 URL 안전 형식의 차이

+와 /는 URL과 파일 이름에서 문제를 일으키므로, URL 안전 형식은 대신 -와 _를 쓰고 보통 패딩도 생략합니다. 바이트 FB FF는 표준 Base64에서 +/8=, URL 안전 형식에서 -_8입니다. JWT 토큰과 많은 API 키가 URL 안전 형식을 씁니다. 디코딩할 때는 고를 필요가 없습니다. 두 문자 집합 모두 패딩이 있든 없든 받아들이고, 공백과 줄바꿈은 무시합니다.

이메일 본문이나 PEM 인증서용 MIME 형식 출력이 필요하면 76자마다 줄바꿈에 체크하세요.

형식별로 본 흔한 문자

여기서는 모든 것이 UTF-8을 거쳐 변환됩니다. 거의 모든 웹사이트와 API가 쓰는 인코딩입니다. 그래서 é는 2바이트, 이모지는 4바이트를 차지합니다. 이 단계를 건너뛰는 도구는 악센트 문자를 깨뜨리는데, 온라인 Base64 디코더에 대한 불만 가운데 가장 흔한 것이 이 문제입니다.

문자Base64이진수16진수URL
AQQ==0100000141A
aYQ==0110000161a
공백IA==0010000020%20
&Jg==0010011026%26
éw6k=11000011 10101001C3 A9%C3%A9
€4oKs11100010 10000010 10101100E2 82 AC%E2%82%AC

텍스트를 이진수로, 이진수를 텍스트로

이진수를 고르면 텍스트의 각 바이트가 8비트로 표시됩니다. Hi는 01001000 01101001이 됩니다. 바이트 사이 공백을 끄면 끊김 없는 한 줄로 나옵니다.

이진수를 텍스트로 바꾸는 번역기로 쓰려면 오른쪽 칸에 비트를 붙여 넣으세요. 8개씩 묶어 바이트로 읽습니다. 일부 사이트는 ASCII를 7비트(1001000 1101001)로 표기하는데, 묶음이 공백으로 구분되어 있다면 앞에 0을 채워 올바르게 읽습니다. 공백이 없으면 전체 비트 수가 8의 배수여야 하고, 오류 메시지에 찾은 비트 수가 표시되므로 빠진 숫자를 찾을 수 있습니다.

16진수도 바이트당 두 자리로 같은 방식입니다. 디코딩할 때는 0x, \x, 콜론, 쉼표 같은 접두사와 구분 기호가 제거되므로 디버거나 C 배열에서 바로 붙여 넣어도 됩니다.

URL 인코딩과 디코딩

URL 인코딩은 안전하지 않은 문자를 %와 16진수 두 자리로 바꿉니다. 공백은 %20, é는 %C3%A9가 됩니다. 알맞은 범위를 고르세요.

HTML 엔티티

HTML 모드는 마크업을 깨뜨릴 수 있는 다섯 문자 & < > " '를 이스케이프합니다. 그래서 <b>는 &lt;b&gt;가 되어 굵은 글씨가 되는 대신 텍스트로 표시됩니다. 디코딩할 때는 &eacute;, &nbsp; 같은 이름 엔티티와 &#8364;(€) 같은 숫자 엔티티를 모두 이해합니다.

이미지를 Base64 데이터 URI로

아래 상자에 파일을 놓으면 데이터 URI, 순수 문자열, <img> 태그, CSS 배경 중 원하는 형태의 Base64를 바로 쓸 수 있게 만들어 줍니다. 크기 표시에서 비용을 확인할 수 있습니다. Base64는 용량이 3분의 1 늘어나므로, HTTP 요청 한 번을 아끼는 것이 늘어난 바이트보다 중요한 1KB 아이콘 같은 작은 파일에서만 이득입니다. 200KB 사진이라면 일반 이미지 파일이 낫습니다. 더 작고, 캐시되고, HTML이나 CSS를 부풀리지 않습니다.

파일 크기Base64 크기
1KB (1,024바이트)1,368자
10KB13,656자
50KB68,268자
1MB1,398,104자

반대 방향도 됩니다. 오른쪽에 Base64나 데이터 URI를 붙여 넣었을 때 텍스트가 아니면, 도구가 앞부분 바이트를 읽어 파일 형식(PNG, JPEG, GIF, WebP, PDF, ZIP, MP3 등)을 판별하고, 이미지는 미리보기를 보여 주며 알맞은 확장자로 다운로드할 수 있게 해 줍니다.

아무것도 업로드되지 않습니다. 디코딩하는 문자열이 API 키, 세션 토큰, 이메일 첨부 파일인 경우가 많아서 여기서는 이 점이 특히 중요합니다.

자주 묻는 질문

Base64는 어떻게 디코딩하나요?

오른쪽 상자에 Base64를 붙여 넣으면 왼쪽에 디코딩된 텍스트가 바로 나타납니다. 예를 들어 SGVsbG8=은 Hello로 디코딩됩니다. 결과가 텍스트가 아니라 이미지나 PDF라면 대신 파일로 저장 버튼이 나타납니다.

텍스트를 2진수로 바꾸려면 어떻게 하나요?

2진수를 고르고 왼쪽에 텍스트를 입력하세요. 바이트 하나가 8비트가 되므로 Hi는 01001000 01101001이 됩니다. é나 한글처럼 영어가 아닌 문자는 UTF-8에서 2바이트 이상을 차지하므로 16비트 이상이 됩니다.

2진수 코드를 다시 텍스트로 바꾸려면 어떻게 하나요?

2진수를 고르고 오른쪽 상자에 0과 1을 붙여 넣으세요. 8비트 묶음을 바이트로 읽으므로 01001000 01101001은 Hi가 됩니다. 공백으로 구분한 7비트 묶음도 되며, 앞에 0을 붙여 채웁니다.

이미지를 Base64 데이터 URI로 바꾸려면 어떻게 하나요?

아래쪽 파일 상자에 이미지를 끌어다 놓고 결과를 복사하세요. PNG는 data:image/png;base64,iVBORw0KGgo… 형태가 되며, img src나 CSS 배경에 붙여 넣을 수 있습니다. 원본 파일보다 약 33% 커진다고 보면 됩니다.

Base64는 왜 원본보다 33% 정도 커지나요?

Base64는 3바이트를 4글자로 쓰므로 30KB 이미지가 약 40KB의 텍스트가 됩니다. 76자마다 넣는 MIME 줄 바꿈은 약 2.6%를 더합니다. 그래서 데이터 URI는 작은 파일에만 쓸 만합니다.

Base64와 URL 안전 Base64는 무엇이 다른가요?

URL 안전 Base64는 +를 -로, /를 _로 바꾸고 = 패딩을 빼는 경우가 많아 URL이나 파일 이름에 넣을 수 있습니다. JWT 토큰이 이 방식을 씁니다. 이 디코더는 두 알파벳을 자동으로 모두 받아들입니다.

%20이나 %3A가 들어간 URL은 어떻게 디코딩하나요?

URL을 고르고 오른쪽에 텍스트를 붙여 넣으세요. %20은 공백, %3A는 콜론이 되어 https%3A%2F%2Fexample.com은 https://example.com으로 읽힙니다. 공백이 +로 적히는 양식에서 가져온 텍스트라면 공백을 +로에 체크하세요.

텍스트나 파일이 서버로 전송되나요?

아니요. 모든 인코딩과 디코딩은 브라우저에서 자바스크립트로 실행되므로 API 키, 토큰, 개인 파일에도 안심하고 쓸 수 있습니다.