Base64 인코더·디코더 소개
Base64는 임의의 바이트를 출력 가능한 문자 64개(A–Z, a–z, 0–9, +, /)로 적는 방식입니다. 그래서 JSON과 XML 문서, 이메일, HTTP 헤더, 환경 변수, HTML과 CSS의 data: URL처럼 텍스트만 다룰 수 있는 곳으로도 바이너리 데이터를 보낼 수 있습니다. 3바이트가 4자가 되므로 인코딩한 결과는 원본보다 약 3분의 1 커집니다.
이 도구는 텍스트(UTF-8로 인코딩)와 파일을 Base64로 바꾸고, 다시 원래대로 되돌립니다. Base64url로 알려진 URL 안전 방식, 선택형 패딩, MIME 방식의 줄바꿈을 지원하며 data: URL도 읽습니다. 디코딩할 때 읽을 수 있는 텍스트는 바로 보여 주고, 그 밖의 데이터는 가능한 한 내용에서 형식을 알아낸 뒤 파일로 제공합니다.
변환은 모두 브라우저 안에서 이루어집니다. 파일은 사용자의 기기에서 읽으며 아무것도 업로드하지 않습니다.
사용 방법
- "방향"에서 "인코딩"이나 "디코딩"을 고르세요.
- 인코딩하려면 "텍스트"를 고르고 "인코딩할 텍스트"에 입력하거나 붙여넣으세요. 또는 "파일"을 고르고 25 MB 이하의 파일을 선택하세요. 바로 쓸 수 있는 data: URL이 필요하면 "data: URL 접두사 붙이기"를 체크하세요.
- 필요하면 "URL 안전 문자(-와 _)", "패딩(=)", "76자마다 줄바꿈" 옵션을 조절하세요.
- 디코딩하려면 Base64나 완전한 data: URL을 상자에 붙여넣거나 "텍스트 파일 열기"를 쓰세요. 읽을 수 있는 UTF-8 텍스트는 "디코딩된 텍스트"에, 그 밖의 데이터는 크기, 형식, hex 미리보기와 함께 "디코딩된 파일"에 표시됩니다.
- "결과 복사"나 "텍스트 복사", ".txt 다운로드"나 "파일 다운로드"로 결과를 보관하세요. "서로 바꾸기"를 누르면 결과를 반대 방향으로 넘기고, "지우기"를 누르면 처음부터 다시 시작합니다.
기능
- 텍스트와 파일: 텍스트를 UTF-8로 변환하므로 한글, 악센트가 붙은 글자, 이모지도 문제없습니다. 25 MB까지 모든 형식의 파일을 지원하며, 브라우저의 btoa 함수에서 생기는 크기 제한과 유니코드 문제가 없습니다.
- 표준 Base64와 URL 안전 Base64: 두 문자 집합 중 하나로, = 패딩을 붙이거나 빼고 만들 수 있습니다. 디코더는 두 문자 집합과 패딩이 빠진 입력, 공백, 줄바꿈을 모두 받아들입니다.
- 명확한 검사: 올바르지 않은 입력은 이유를 정확히 알려 줍니다. 어떤 문자가 몇 번째 위치에서 허용되지 않는지, 길이가 Base64로 성립할 수 없는지, 패딩이 잘못된 자리에 있는지 보여 줍니다.
- 양방향 data: URL: 파일을 그 파일의 MIME 형식을 쓰는 data: URL로 바꾸거나, data: URL을 붙여넣어 그 안에 적힌 형식대로 디코딩할 수 있습니다.
- 텍스트 또는 파일로 출력: 디코딩한 바이트가 올바른 UTF-8이면 텍스트로 보여 줍니다. 그 밖의 데이터는 다운로드할 수 있게 제공하며, PNG, JPEG, GIF, WebP, PDF, ZIP은 첫 바이트로 알아보고, 가능하면 이미지 미리보기와 처음 64바이트의 hex 덤프를 함께 보여 줍니다.
사용 예
Basic 인증 헤더 만들기
user:pa55word를 인코딩하면 dXNlcjpwYTU1d29yZA==가 되며, 이 값을 Authorization: Basic dXNlcjpwYTU1d29yZA== 헤더에 넣습니다. 헤더를 본 사람은 누구나 다시 디코딩할 수 있다는 점을 기억하세요.
JSON Web Token의 페이로드 읽기
JWT의 가운데 부분은 패딩 없는 Base64url입니다. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSJ9를 디코딩하면 {"sub":"1234567890","name":"Ada Lovelace"}가 나옵니다. 디코딩은 토큰의 서명을 검증하지 않습니다.
CSS에 작은 아이콘 넣기
"파일"을 고르고 작은 PNG를 선택한 뒤 "data: URL 접두사 붙이기"를 체크하세요. 결과는 data:image/png;base64,로 시작하며 background-image: url(…)이나 <img>의 src 속성에 바로 쓸 수 있습니다.
API가 돌려준 파일 저장하기
어떤 API는 문서를 JSON 안의 Base64 문자열로 돌려줍니다. 그 문자열을 디코딩 모드에 붙여넣으세요. PDF라면 도구가 application/pdf를 알아내고, "파일 다운로드"를 누르면 decoded.pdf로 저장됩니다.
제한 사항과 참고
- 25 MB까지의 파일을 인코딩할 수 있고, 디코딩용으로 40 MB까지의 텍스트 파일을 열 수 있습니다. 아주 긴 결과는 상자에 미리보기로만 표시되지만, 복사와 다운로드에는 항상 전체 결과가 쓰입니다.
- 내용으로 파일 형식을 알아내는 것은 PNG, JPEG, GIF, WebP, PDF, ZIP뿐입니다. 그 밖의 바이너리 데이터는 data: URL에 형식이 적혀 있지 않으면 .bin 파일로 저장됩니다.
- 텍스트는 항상 UTF-8로 다룹니다. UTF-16이나 Windows-1252처럼 다른 인코딩으로 된 텍스트의 Base64는 텍스트로 보여 주지 않고 파일로 제공합니다.
- 텍스트 상자에 입력하거나 붙여넣은 줄바꿈은 브라우저가 LF로 바꾸므로, Windows(CRLF) 줄바꿈이 있는 텍스트도 LF로 인코딩됩니다. 바이트가 정확히 같아야 한다면 파일 자체를 인코딩하세요.
- 줄바꿈한 출력은 LF 줄바꿈을 씁니다. 엄격한 MIME 규격은 CRLF를 쓰지만, 이 도구를 포함한 디코더는 둘 다 받아들입니다.
- Base64는 암호화가 아니라 인코딩입니다. 데이터를 보호하지 않으며 누구나 디코딩할 수 있습니다.
자주 묻는 질문
Base64는 암호화의 한 종류인가요?
아닙니다. Base64는 바이트를 적는 방식만 바꿀 뿐이며 디코딩에 키가 필요하지 않습니다. 텍스트만 다루는 경로로 데이터를 보낼 때 쓰고, 비밀번호나 다른 비밀 정보를 숨기는 데는 절대 쓰지 마세요.
Base64는 왜 =나 ==로 끝나는 경우가 많나요?
Base64는 3바이트 단위로 처리합니다. 입력 길이가 3의 배수가 아니면 마지막 묶음에 = 기호를 한두 개 붙여 텍스트 길이를 4의 배수로 맞춥니다. JWT처럼 패딩을 빼는 형식도 많으며, 이 디코더는 두 형태를 모두 받아들입니다.
Base64와 Base64url은 무엇이 다른가요?
Base64url(RFC 4648, 5절)은 +를 -로, /를 _로 바꿔 URL과 파일 이름에 이스케이프 없이 쓸 수 있게 합니다. 이 두 문자와, 보통 패딩을 빼는 점을 빼면 인코딩 방식은 같습니다.
디코딩할 때 "길이가 올바르지 않습니다"라는 오류가 나는 이유는 무엇인가요?
패딩 없는 Base64 텍스트의 길이는 4n + 1자가 될 수 없습니다. 문자 하나에는 6비트만 담기므로 한 바이트를 채우지 못하기 때문입니다. 대개 복사하다가 텍스트가 잘렸거나 문자가 하나 더 들어갔다는 뜻입니다.
Base64 텍스트가 원래 파일보다 큰 이유는 무엇인가요?
3바이트를 4자로 적기 때문에 인코딩한 텍스트는 원본보다 약 33% 커집니다(줄바꿈을 켜면 줄바꿈 문자만큼 더 커집니다). 안전하게 출력할 수 있는 문자만 쓰는 대가입니다.
파일이나 텍스트가 업로드되나요?
아닙니다. 인코딩과 디코딩은 이 페이지의 JavaScript가 처리하며 파일은 기기 안에서 읽습니다. 서버로는 아무것도 전송되지 않습니다.