Base64 인코딩/디코딩

Base64 온라인 인코딩·디코딩. 한글도 UTF-8로 깨지지 않고, URL-safe와 파일·이미지 변환을 지원해요. 무료, 회원가입 없음, 데이터는 업로드되지 않아요.

  • 한글 깨짐 없음
  • URL-safe
  • 파일·이미지 변환
  • 업로드 없음

데이터는 브라우저 안에서만 처리되며 업로드하거나 저장하지 않아요.

🔒 모든 계산은 브라우저 안에서 이뤄지며 데이터는 어떤 서버에도 업로드되지 않아요.

이럴 때 쓰면 좋아요

  • 웹페이지에 작은 이미지 넣기: 아이콘이나 작은 이미지를 Base64로 바꿔 HTML·CSS의 data URI에 넣으면 네트워크 요청이 하나 줄어들어요.
  • JWT 내용 확인: JWT의 가운데 부분은 URL-safe Base64라 디코딩하면 안에 든 데이터를 볼 수 있어요.
  • API·이메일 디버깅: API 응답이나 이메일 원본에 들어 있는 Base64를 텍스트나 파일로 되돌려요.
  • 설정 파일·인증: 아이디와 비밀번호, 인증서를 Base64로 바꿔 HTTP Basic 인증이나 Kubernetes Secret 설정에 넣어요.

사용 방법

  1. ‘인코딩’ 또는 ‘디코딩’을 고르고 왼쪽에 텍스트나 Base64를 입력하면 오른쪽에 바로 결과가 나와요. 한글과 이모지는 UTF-8로 처리해요.
  2. 파일이나 이미지를 Base64로 바꾸려면 ‘파일 열기’를 누르세요. URL이나 JWT에 넣을 때는 ‘URL-safe’를 체크해요.
  3. 디코딩 결과가 텍스트면 그대로 보여 주고, 이미지는 미리보기가 나오며, 다른 파일은 ‘다운로드’로 저장해요. ‘바꾸기’를 누르면 결과를 입력란으로 옮겨 반대로 변환할 수 있어요.

사용 예시

중국어 인코딩: '你好'는 UTF-8로 6바이트이며 인코딩하면 5L2g5aW9(8자)예요. 3바이트마다 Base64 4자가 되므로 6바이트는 정확히 8자이고 = 패딩이 붙지 않아요.

URL-safe: '<<???>>'는 7바이트로, 일반 Base64는 PDw/Pz8+Pg==이고 URL-safe를 체크하면 PDw_Pz8-Pg가 되어 URL에 바로 쓸 수 있어요. 이것을 디코딩에 붙여 넣으면 다시 <<???>>가 돼요.

이미지 복원: 1×1 픽셀 PNG의 data URI(data:image/png;base64,iVBORw0KGgo…) 전체를 디코딩에 붙여 넣으면 앞부분이 자동으로 제거되고 70바이트가 PNG로 인식되어 미리보기가 나와요. ‘다운로드’를 누르면 decoded.png로 저장돼요.

결과 해석

  • 인코딩 후 '18 bytes → 24자'처럼 표시돼요. 앞은 UTF-8 바이트 수(한글은 한 글자에 보통 3바이트, 이모지는 4바이트), 뒤는 Base64 길이로 바이트 수의 약 4/3을 4의 배수로 올린 값이에요.
  • 끝의 =는 패딩으로 0~2개 붙어요. URL-safe 형식은 보통 생략하며 디코딩에는 영향이 없어요.
  • 디코딩 결과가 올바른 UTF-8 텍스트면 그대로 보여 주고, 아니면 파일로 처리해 앞부분 바이트로 PNG, JPEG, GIF, WebP, PDF, ZIP을 구분해요. 이미지는 미리보기가 나와요.
  • 디코딩에 실패하면 잘못된 문자가 몇 번째 줄 몇 번째 열에 있는지 알려 줘요. 복사할 때 따옴표, 백슬래시, 전각 문장부호가 섞여 들어간 경우가 흔해요.

원리와 계산 방법

  • 텍스트를 먼저 UTF-8 바이트로 바꾸고, 3바이트(24비트)마다 6비트 4개로 나눠 RFC 4648에 정의된 64개 문자(A–Z, a–z, 0–9, +, /)에 대응시켜요. 마지막이 3바이트보다 짧으면 =로 채워요.
  • URL-safe는 RFC 4648 5장에 따라 +를 -로, /를 _로 바꾸고 끝의 =를 없애 URL과 파일 이름에 안전하게 쓸 수 있어요.
  • 디코딩할 때는 공백과 줄바꿈을 무시하고, RFC 2397 data URI 앞부분(data:…;base64,)을 제거하며, 일반 문자와 URL-safe 문자를 모두 받고, 빠진 =도 자동으로 채워요.
  • 디코딩한 바이트가 올바른 UTF-8이고 탭과 줄바꿈 외의 제어 문자가 없으면 텍스트로 보여 주고, 그렇지 않으면 바이너리 파일로 처리해요.

한계와 주의점

  • Base64는 암호화가 아니라 인코딩이에요. 누구나 원래대로 되돌릴 수 있으므로 비밀번호나 개인정보 보호에 쓰면 안 돼요.
  • 파일은 10MB까지이며 Base64 출력은 원본보다 약 3분의 1 커져요.
  • 텍스트는 항상 UTF-8로 처리해요. EUC-KR 등 다른 인코딩의 데이터는 바이너리로 디코딩되므로 다운로드한 뒤 맞는 인코딩으로 여세요.
  • 흔한 몇 가지 파일 형식만 구분해요. 그 밖의 형식은 확장자 .bin으로 다운로드되므로 이름을 바꿔야 해요.

자주 묻는 질문

Base64를 디코딩하면 글자가 깨지거나 바이너리로 나오는 이유는?

대부분 원래 데이터가 UTF-8 텍스트가 아니기 때문이에요. EUC-KR 같은 다른 인코딩의 오래된 데이터이거나 원래 이미지·압축 파일일 수 있어요. UTF-8로 읽을 수 없는 내용은 바이너리로 처리하므로 ‘다운로드’로 저장한 뒤 맞는 프로그램으로 여세요.

URL-safe Base64란? 언제 쓰나요?

일반 Base64의 +와 /는 URL에서 특별한 의미가 있어서, URL-safe 버전(base64url)은 -와 _로 바꾸고 끝의 =를 생략해요. JWT, URL 파라미터, 파일 이름에 자주 쓰여요. 디코딩할 때는 두 형식을 자동으로 구분해요.

Base64로 바꾼 이미지를 HTML이나 CSS에 넣으려면?

‘파일 열기’로 이미지를 고르고 출력을 복사한 뒤 앞에 data:image/png;base64,(JPEG는 image/jpeg)를 붙이세요. 예: <img src="data:image/png;base64,iVBOR...">. 반대로 data URI 전체를 디코딩에 붙여 넣으면 이미지로 되돌릴 수 있어요.

데이터가 업로드되나요?

아니요. 인코딩, 디코딩, 파일 읽기, 이미지 미리보기 모두 브라우저 안에서 처리되며 서버로 보내거나 저장하지 않아요.

Base64는 암호화인가요?

아니에요. Base64는 인코딩 방식일 뿐이라 누구나 원문으로 되돌릴 수 있으므로, 비밀번호나 기밀 데이터를 보호하는 데 쓸 수 없어요.

Base64로 바꾸면 왜 파일이 커지나요?

Base64는 3바이트를 4개의 문자로 바꾸기 때문에 크기가 약 33% 늘어나요. 그래서 작은 파일에만 적합해요.

JWT 안의 내용은 어떻게 보나요?

JWT는 . 으로 구분된 세 부분으로 이뤄져 있어요. ‘디코딩’을 고르고 ‘URL-safe’를 체크한 뒤 가운데 부분을 붙여 넣으면 JSON 내용이 보여요. 디코딩일 뿐이라 서명이 유효한지는 검증할 수 없어요.

참고 자료