퍼센트 인코딩(RFC 3986)은 URL에 쓸 수 없는 바이트를 %와 16진수 두 자리로 씁니다. 공백은 %20, &는 %26, 한글 가는 %EA%B0%80입니다. 쿼리 값에는 구성 요소 모드, / ? #를 살리려면 전체 URI 모드, HTML 폼과 같게 하려면 공백을 +로 옵션을 쓰세요.
사용법
- Base64, Base32, 16진수, 2진수, URL, HTML, 유니코드, 퓨니코드 중 형식을 고르세요.
- 인코딩이나 디코딩을 고른 뒤 입력하거나 붙여 넣으세요. 입력하는 대로 결과가 바뀝니다.
- 결과를 탭하면 복사되고, 내려받을 수도 있습니다. 바꾸기 버튼은 결과를 입력으로 옮기고 방향을 뒤집습니다.
- Base64에서는 아무 파일이나 끌어다 놓으면 Base64 문자열이나 data URL로 변환됩니다. 이미지의 Base64를 디코딩하면 미리 보기가 나오고 내려받을 수 있습니다.
- 디코딩할 수 없는 입력이면 오류 메시지가 문제의 문자와 위치를 정확히 알려 줍니다.
- 모든 처리는 UTF-8 기준입니다. 한글, 이모지, 악센트 문자 등 어떤 문자도 손실 없이 변환됩니다.
- Base64 디코딩은 표준과 URL-safe 문자 집합, 패딩 누락, 줄바꿈, data: URL을 모두 받아들입니다.
- URL 컴포넌트 모드는 예약 문자(/ ? & = #)를 모두 인코딩하고, 전체 URI 모드는 URL 구조를 그대로 둡니다. HTML 폼 데이터에는 “공백을 +로”를 쓰세요.
- 퓨니코드는 국제화 도메인 이름을 변환합니다. 예: 한국.kr ⇄ xn--3e0b707e.kr. 전체 URL을 붙여 넣으면 호스트 부분만 변환합니다.
- 아무것도 업로드되지 않습니다. 인코딩과 디코딩은 모두 브라우저 안에서 처리됩니다.
인코딩은 암호화가 아닙니다
여기서 다루는 형식은 모두 바이트를 텍스트로 적는 되돌릴 수 있는 방법이며 공개 표준으로 정해져 있습니다. Base64와 Base32는 RFC 4648, 퍼센트 인코딩은 RFC 3986, 엔티티는 HTML 표준, 퓨니코드는 RFC 3492입니다. 키 없이 누구나 디코딩할 수 있으므로, 특정 문자만 허용하는 시스템에 데이터를 통과시키는 용도로만 쓰고 비밀을 숨기는 데 쓰면 안 됩니다.
Base64의 원리
Base64는 바이트를 3개(24비트)씩 묶어 A–Z, a–z, 0–9, +, / 중 4글자로 씁니다. 그래서 결과가 원본보다 약 33% 커지고, 마지막 묶음은 =로 채웁니다. Man은 TWFu, Hello는 SGVsbG8=가 됩니다. URL 안전 버전은 +와 /를 -와 _로 바꿔 URL이나 파일 이름에 넣을 수 있게 한 것으로, JWT가 이 방식을 씁니다.
텍스트는 먼저 UTF-8 바이트로 바뀝니다. 한글 가는 3바이트(ea b0 80), €도 3바이트(e2 82 ac)로 정확히 인코딩됩니다. 이 과정을 건너뛰는 도구에서는 한글이 깨집니다.
형식 고르는 법
쿼리 문자열 값에는 URL 인코딩(공백은 %20, HTML 폼에서는 +), 사용자가 입력한 글을 페이지에 넣을 때는 HTML 엔티티, 원시 바이트를 살펴볼 때는 16진수나 2진수, 대소문자를 구분하지 않는 코드(TOTP 비밀키 등)에는 Base32, 국제화 도메인에는 퓨니코드를 씁니다. 예를 들어 한글.kr은 DNS에서 xn--bj0bj06e.kr로 바뀝니다.
자주 묻는 질문
Base64는 암호화인가요?
아니요. Base64는 키 없이 누구나 바로 되돌릴 수 있는 인코딩일 뿐이며, 바이너리 데이터를 텍스트로 보낼 수 있게 해 줄 뿐입니다. 비밀로 지켜야 할 데이터는 먼저 암호화하세요.
Base64로 바꾸면 왜 크기가 커지나요?
입력 3바이트가 4글자가 되므로 크기가 약 33% 늘고, 끝에 =가 최대 두 개 붙습니다. 30KB 이미지는 Base64로 약 40KB가 됩니다.
URL 구성 요소 인코딩과 전체 URI 인코딩은 어떻게 다른가요?
구성 요소 모드는 / ? & = # 같은 예약 문자까지 인코딩해 값이 쿼리 문자열 안에 들어갈 수 있게 합니다. 전체 URI 모드는 이 문자들을 그대로 두어 주소 전체가 계속 작동하게 합니다.
어떤 URL은 %20, 어떤 URL은 +인 이유는 무엇인가요?
둘 다 공백입니다. %20은 표준 퍼센트 인코딩(RFC 3986)이고, +는 application/x-www-form-urlencoded 폼 데이터에서만 씁니다. 폼 형식 쿼리 문자열을 만들 때는 공백을 +로 옵션을 켜세요.
Base64 디코딩으로 이미지나 파일을 되돌릴 수 있나요?
네. 디코딩 모드에서 Base64나 data: URL을 붙여 넣으면 이미지일 경우 미리 보기가 나오고, 어떤 파일이든 원래 바이트 그대로 내려받을 수 있습니다.
URL 인코딩이나 Base64 변환에서 한글이 깨지지 않나요?
깨지지 않습니다. 인코딩 전에 UTF-8로 바꾸고 디코딩 후 다시 UTF-8에서 되돌리므로 이모지, 한글, 일본어, 키릴 문자가 입력한 그대로 나옵니다.