Decodex

DECODEX · BASE64 · UTF-8

Base64와 Base64URL 차이 — URL 안전 문자·패딩·디코딩 예제

Base64와 Base64URL의 + /, - _ 차이와 패딩 생략 조건을 예제로 비교합니다. URL에서 문자가 바뀌는 이유와 UTF-8 디코딩 방법을 확인하세요.

Base64URL은 Base64에서 두 문자를 URL에 쓰기 편한 문자로 바꾼 형식입니다. 같은 바이트를 표현하며, -를 +로, _를 /로 바꾸고 필요한 패딩을 복원하면 디코딩할 수 있습니다. Decodex는 두 형식 모두 입력받아 UTF-8 텍스트로 변환합니다.

Base64와 Base64URL은 무엇이 다른가요?

일반 Base64는 영문자·숫자와 +, /를 사용하고, Base64URL은 + 대신 -, / 대신 _를 사용합니다. 패딩 =의 생략 여부는 별도 규칙입니다. Base64URL이라고 해서 반드시 =가 없는 것은 아닙니다. 영문자와 숫자만 있는 문자열은 문자만 보고 두 형식을 구분할 수 없습니다.

같은 이모지를 두 형식으로 비교하기

😀는 UTF-8에서 4바이트이며 일반 Base64로 인코딩하면 8J+YgA==가 됩니다. 패딩을 포함한 Base64URL은 8J-YgA==이고, 패딩을 생략하면 8J-YgA입니다. Decodex에서 세 문자열 모두 같은 이모지로 디코딩됩니다. 아래 비교 표와 예제 링크로 직접 확인할 수 있습니다.

URL에 넣었더니 +가 공백으로 바뀌는 이유

application/x-www-form-urlencoded 형식에서는 +를 공백으로 해석할 수 있습니다. /는 URL 경로에서 구분자로 쓰이므로 원래 의도와 다르게 처리될 수도 있습니다. Base64URL은 이 두 문자를 피하지만, URL을 제대로 구성하는 작업까지 대신하지는 않습니다. URLSearchParams 같은 API를 사용하세요. 이미 +가 공백으로 손실된 경우 디코더가 원래 값을 확실하게 복구할 수는 없습니다.

Base64URL로 변환하는 순서

먼저 원본 바이트를 Base64로 인코딩한 뒤 +를 -, /를 _로 바꿉니다. 받는 서비스의 규칙이 허용하는 경우에만 끝의 =를 제거하세요. 반대로 디코딩할 때는 문자를 원래 알파벳으로 바꾸고 필요한 패딩을 붙입니다. Decodex의 인코더는 일반 패딩 포함 Base64를 만들며, 디코더는 Base64URL도 지원합니다.

JWT 조각을 디코딩해도 검증되는 것은 아닙니다

서명된 JWT의 헤더와 페이로드는 보통 패딩 없는 Base64URL을 사용합니다. 내용을 읽는 것만으로 서명, 만료 여부, 권한을 확인할 수는 없습니다. 서명 조각은 바이너리이므로 UTF-8 텍스트로 읽히지 않을 수 있습니다. Decodex는 JWT 검증기가 아닙니다. 실제 접근 토큰을 예제로 공유하지 마세요.

예제로 직접 변환하기

형식텍스트Base64
Base64😀8J+YgA==
Base64URL😀8J-YgA==
Base64URL (JWT)😀8J-YgA

예제로 직접 변환하기 →

Base64 → UTF-8 · UTF-8 → Base64

자주 묻는 질문

Base64URL도 암호화인가요?

아니요. 둘 다 바이트를 되돌릴 수 있는 텍스트로 표현하는 인코딩입니다. 문자를 바꿔도 비밀 정보가 보호되지는 않습니다.

Base64URL 끝의 =는 무조건 지워야 하나요?

아니요. 패딩 생략은 해당 프로토콜의 규칙에 따릅니다. 받는 서비스가 요구하는 형식을 확인하세요.

참고 자료

더 알아보기