Base 인코더 — Base64·Base32·Base58·Ascii85·Z85

텍스트든 파일이든 Base64·Base32·Base58·Base64URL·Ascii85·Z85로 인코딩·디코딩합니다. 문자 집합 5종, 76자 MIME 줄, 줄 단위 처리. 브라우저에서 처리.

🔒 인코딩과 디코딩은 브라우저에서 처리되며 업로드되지 않습니다.

여섯 가지 알파벳으로 인코딩·디코딩

텍스트를 입력하고 방식을 고르세요 — Base64·Base32· Base58·Base64URL·Ascii85·Z85. 인코딩과 디코딩은 버튼 하나로 오갑니다. Base64URL은 URL·JWT에 넣기 안전한 변형, Base58은 비트코인·IPFS가 쓰는 알파벳, Ascii85는 PostScript·PDF가 이진 데이터를 담는 방식, Z85는 따옴표 걱정 없이 소스에 넣도록 ZeroMQ가 다듬은 판입니다. 모두 브라우저에서 처리되어 업로드되지 않습니다.

어떤 바이트가 들어가는가

이 알파벳들이 인코딩하는 것은 글자가 아니라 바이트입니다. 그래서 입력 칸을 어떻게 읽을지 고를 수 있습니다 — UTF-8·UTF-16LE·UTF-16BE· Latin-1(ISO-8859-1)·ASCII. 같은 두 글자가 UTF-8에서는 두 바이트, UTF-16에서는 네 바이트라 두 결과는 아무것도 겹치지 않습니다. UTF-8만 쓰는 도구로는 상대가 UTF-16이나 Latin-1로 만든 값을 재현할 수 없는 이유입니다. 고른 문자 집합에 바이트가 없는 글자는 물음표로 슬쩍 바꾸지 않고 그 사실을 알려주며 거절합니다. 줄바꿈도 같은 문제라 LF(유닉스)CRLF(윈도우)를 고를 수 있습니다 — 화면에 똑같아 보여도 결과는 달라집니다.

줄 단위 처리, 그리고 텍스트가 아닌 파일

줄마다 따로 처리를 켜면 각 줄을 독립된 항목으로 다뤄, 값 백 개를 넣으면 한 덩어리가 아니라 인코딩된 백 줄이 나옵니다. 디코딩도 같은 방식으로 되돌립니다. 76자 줄로 나누기는 MIME(RFC 2045)와 PEM이 하는 대로 결과를 접습니다. 접힌 값을 다시 붙여넣어도 한 덩어리로 디코딩되는데, 공백은 이 알파벳들 어디에도 속하지 않기 때문입니다.

파일을 열면 바이트 그대로 인코딩합니다 — 텍스트뿐 아니라 PNG·키 파일·zip도 됩니다. 반대로 디코딩할 때는 디코딩 결과 파일로 저장이 그 값이 가리키는 바이트를 그대로 내려줍니다. 그래서 텍스트가 아닌 Base64 문자열도 원래의 파일로 돌아옵니다.

자주 묻는 질문

어떤 인코딩을 지원하나요?

여섯 가지입니다 — Base64·Base32·Base58·Base64URL·Ascii85(Adobe)·Z85. 각각 인코딩과 디코딩이 되며, 드롭다운에서 하나를 고르면 같은 입력창으로 모두 처리합니다.

Base64와 Base64URL의 차이는?

Base64URL은 + / 를 - _ 로 바꾸고 패딩을 없애 URL과 JWT에 안전하게 넣을 수 있습니다.

텍스트가 업로드되나요?

아니요. 인코딩·디코딩은 물론 열어 본 파일까지 전부 브라우저 안에서 처리됩니다.

텍스트 말고 파일도 인코딩할 수 있나요?

네. 파일 열기는 5 MB까지 받습니다. 텍스트 파일은 입력 칸에 들어가 그대로 고칠 수 있고, 텍스트를 고치거나 텍스트를 읽는 방식·줄바꿈·줄마다 따로 처리를 바꾸기 전까지는 줄바꿈 문자와 BOM까지 바이트 그대로 인코딩합니다. 그림·키·압축 파일처럼 텍스트가 아닌 파일은 바이트 그대로 인코딩하면서 파일 이름과 크기를 함께 보여 줍니다. 디코딩 모드의 "디코딩 결과 파일로 저장"은 그 값이 가리키는 바이트를 파일로 내려주므로, Base64 문자열을 원래 그림으로 되돌릴 수 있습니다.

상대가 준 Base64와 값이 다릅니다. 왜 그런가요?

보통은 양쪽이 서로 다른 바이트를 인코딩하고 있어서입니다. "텍스트를 읽는 방식"을 상대와 맞추세요 — UTF-8·UTF-16LE·UTF-16BE·Latin-1·ASCII. 같은 문장이라도 문자 집합마다 바이트가 다릅니다. 여러 줄이라면 줄바꿈 설정도 확인하세요. LF와 CRLF는 줄마다 한 바이트씩 차이가 나서, 그 줄부터 결과가 전부 달라집니다.

줄마다 따로 인코딩하거나 76자로 나눌 수 있나요?

둘 다 됩니다. "줄마다 따로 처리"는 각 줄을 독립된 항목으로 인코딩(디코딩)하므로, 문서 하나가 아니라 값 목록을 다룰 때 알맞습니다. "76자 줄로 나누기"는 메일이나 PEM 파일처럼 결과를 MIME 폭으로 접습니다. 접힌 값은 어느 설정에서도 디코딩되는데, 공백은 이 알파벳들에 속하지 않기 때문입니다.