Menu

Base64 인코더 / 디코더

Base64 문자열과 파일을 즉시 인코딩/디코딩.

마지막 업데이트

모드
텍스트텍스트를 붙여넣어 시작
Base64
인코딩 또는 디코딩된 출력이 여기에 표시됩니다 — 모두 로컬에서 실행.

Base64란?

Base64는 바이너리 데이터를 출력 가능한 64개 문자로 표현하는 인코딩 방식입니다. 텍스트만 다루는 시스템에 바이트를 실어 보내야 할 때 자주 쓰이죠. HTML에 박아 넣는 작은 이미지, 토큰, 이메일 첨부파일, data URL, 로그에 복붙해야 하는 비밀값, 바이너리를 담는 JSON 필드 같은 상황에서 거의 매번 등장합니다.

Base64는 *인코딩*이지 암호화가 아닙니다. 누구든 디코더에 넣기만 하면 원본이 바로 드러나기 때문에 보안 수단으로 착각하면 안 됩니다. Base64 안에 들어 있는 값은 *인코딩 이전에* 따로 암호화해 두지 않았다면 사실상 공개된 데이터라고 봐야 합니다.

내부 동작을 보면, Base64는 3바이트(24비트)를 가져다가 고정된 64자 알파벳(AZ, az, 09, +, /) 중 4개의 문자로 다시 씁니다. 입력 길이가 3의 배수가 아니면 끝에 =를 한두 개 붙여 패딩을 채우고요. Base64 문자열 끝에 =가 붙어 있는 이유가 바로 이것입니다.

Base64를 다루며 알게 되는 것들

  • 인코딩은 데이터를 표현하는 방식만 바꿀 뿐, 데이터를 숨기거나 보호하지 않습니다. 누구나 디코딩할 수 있어요.
  • Base64 결과물은 원본 바이트의 약 4/3 크기입니다. 다루기 편하지만 공간 효율은 좋지 않다는 뜻이죠.
  • 끝에 붙는 = 같은 패딩 문자는 마지막 4글자 그룹을 채우는 정상적인 부호입니다.

Base64 인코딩/디코딩 단계별 사용법

  1. 방향 정하기

    일반 텍스트나 파일을 Base64로 만들고 싶다면 인코딩(Encode)을, Base64 문자열에서 원본을 되찾고 싶다면 디코딩(Decode)을 선택하세요.

  2. 입력 붙여넣거나 파일 드롭하기

    텍스트 박스에 문자열을 붙여 넣거나, 드롭 영역에 파일(이미지, PDF 등 무엇이든)을 끌어다 놓으세요. 파일은 HTML이나 CSS에 바로 임베드할 수 있는 data: URL 형태로 변환됩니다.

  3. 결과 확인하기

    인코딩 결과는 Base64 문자열이고, 디코딩 결과는 원본 텍스트입니다. 입력이 파일이었다면 복원된 바이트가 다운로드 링크 형태로 제공됩니다.

  4. 결과 복사하기

    복사 버튼을 누르면 클립보드로 들어갑니다. 모든 처리는 브라우저 안에서만 이루어지므로 입력값이 외부로 빠져나가지 않습니다.

Base64 빠른 참고표

Base64를 쓰다 보면 계속 마주치게 되는 핵심 개념들입니다. 자세한 명세는 RFC 4648에 정의돼 있습니다.

구성 요소의미예시
알파벳표준 Base64에서 쓰는 64개 문자A–Z, a–z, 0–9, +, /
URL-safe 알파벳JWT와 URL에서 사용A–Z, a–z, 0–9, -, _
패딩길이가 3의 배수가 아닐 때 마지막 그룹을 채움= 또는 ==
그룹 단위인코딩 한 덩어리당 바이트 수 → 출력 4글자3바이트 → 4글자
길이 증가출력은 입력보다 약 33% 커짐100 B → 136자
Data URLHTML/CSS에 파일을 인라인으로 박아 넣기data:image/png;base64,...

직접 따라 해 볼 Base64 예제

간단한 단어 디코딩하기

인코딩된 값

SGVsbG8gV29ybGQ=

디코딩된 값

Hello World

끝의 =는 패딩입니다. Hello World가 11바이트라 3의 배수가 아니기 때문이죠. 디코딩할 때는 이 패딩이 알아서 정리됩니다.

작은 JSON 페이로드 인코딩하기

원본
{"role":"student","active":true}
Base64

eyJyb2xlIjoic3R1ZGVudCIsImFjdGl2ZSI6dHJ1ZX0=

JWT 토큰의 각 세그먼트도 정확히 이런 식으로 인코딩됩니다. JWT 페이로드가 보통 eyJ로 시작하는 이유가 여기 있는데, 이건 {"의 Base64 형태입니다.

data URL 알아보기

Data URL

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgAAIAAAUAAen8GVAAAAAASUVORK5CYII=

앞쪽은 미디어 타입(image/png)과 인코딩 방식(base64)을 선언하는 부분이고, 콤마 뒤가 실제 파일 내용입니다. 페이지와 함께 즉시 로드되어야 하는 작은 이미지에 유용합니다.

표준 vs URL-safe 알파벳 비교

표준

Pj4/Pyc+Pg==

URL-safe

Pj4_Pyc-Pg

URL-safe Base64는 +-로, /_로 바꿉니다. 그래야 추가 이스케이프 없이 URL에 그대로 넣을 수 있거든요. JWT가 이 변형을 사용합니다.

자주 하는 Base64 실수

  • Base64를 "암호화됐다"고 말하는 것. 비밀번호도 키도 없이 누구나 디코딩할 수 있습니다.
  • 유니코드 문자열은 Base64로 인코딩하기 *전에* UTF-8 바이트로 먼저 변환해야 한다는 걸 잊는 경우. 그러지 않으면 한글이나 이모지 같은 비ASCII 문자가 왕복하면서 깨집니다.
  • = 패딩을 손으로 떼어낸 다음, 패딩을 요구하는 엄격한 디코더에 그대로 집어넣는 경우. (URL-safe 디코더는 보통 패딩 누락을 허용하지만, 표준 디코더는 거부할 수 있습니다.)

Base64 자주 묻는 질문

Base64 인코딩이란 무엇인가요?
Base64는 64자로 된 알파벳을 사용해 바이너리 데이터를 출력 가능한 텍스트로 표현하는 인코딩입니다. 바이트가 텍스트만 허용되는 시스템(API, JSON, JWT, 이메일, data URL 등)을 통과해야 할 때 어디서든 쓰입니다.
Base64는 어떻게 동작하나요?
입력 3바이트(24비트)를 가져와 6비트씩 4개 그룹으로 나눕니다. 각 6비트 그룹은 64자 알파벳 중 한 글자로 매핑되고요. 입력 길이가 3의 배수가 아니라면 끝에 =를 한두 개 붙여 패딩 처리합니다.
Base64 문자열은 어떻게 디코딩하나요?
Base64 디코더에 문자열을 붙여 넣으면 원본 텍스트나 파일이 나옵니다. 코드에서는 거의 모든 언어가 기본 함수를 제공하는데, 브라우저는 atob(), Node.js는 Buffer.from(str, 'base64'), Python은 base64.b64decode()를 쓰면 됩니다.
Base64는 안전한가요?
아니요. Base64는 인코딩이지 암호화가 아닙니다. 표현과 전송을 위한 방식이지 비밀 유지를 위한 게 아닙니다. 기밀이 필요하다면 데이터를 먼저 암호화하고, 그렇게 만든 암호문을 Base64로 인코딩하세요.
Base64 끝에 =가 붙는 이유는요?
=는 패딩입니다. Base64는 입력 3바이트마다 4글자를 만들어 내는데, 입력 길이가 3의 배수가 아닐 때 인코딩 결과 길이를 4의 배수로 맞추기 위해 =를 한두 개 덧붙입니다.
Base64로 이미지도 인코딩할 수 있나요?
네. 이미지 바이트를 Base64로 인코딩한 뒤 data:image/png;base64,... 형태의 URL에 넣으면, 별도 네트워크 요청 없이 이미지를 HTML, CSS, JSON에 직접 임베드할 수 있습니다.

다른 개발자 도구

Coddy로 코딩 배우기

시작하기