토큰 401 뜰 때마다 Base64URL 디코딩 페이지부터 여는 이유

Base64URL디코딩은 -와 _가 섞인 Base64URL 문자열을 원래 UTF-8 텍스트로 되돌리는 페이지다. API가 401을 뱉었을 때 토큰 안에 적힌 만료 시각을 눈으로 확인하는 용도로 쓰면 한 번 붙여넣고 끝난다. 입력은 브라우저 안에서만 처리되고 서버로 올라가지 않는다.

토큰 만료 시각은 어떻게 확인하나?

상황은 늘 비슷하다. 요청이 401로 막혔는데 토큰이 만료된 건지 권한이 없는 건지 구분이 안 된다. 토큰 문자열만 있으면 서버 로그를 뒤질 필요가 없다.

  1. 토큰을 복사한다. 점 두 개로 나뉜 세 조각 중 가운데가 payload다. 첫 조각은 헤더, 마지막은 서명이라 풀어도 볼 내용이 거의 없다.
  2. 끝에 =가 붙어 있으면 지운다. 이 페이지는 padding이 없는 base64url만 읽는다.
  3. 입력란에 붙여넣고 실행을 누르면 exp, sub, iat 같은 값이 JSON으로 나온다. 결과 복사로 바로 가져가면 된다.

헤더 조각 eyJhbGciOiJIUzI1NiJ9을 넣으면 {"alg":"HS256"}가 나온다. 페이지에 들어 있는 예제도 SGVsbG8 하나인데, 실행하면 Hello다. 한글도 그대로 돈다. 안녕하세요를 인코딩한 값 7JWI64WV7ZWY7IS47JqU를 넣으면 원문이 그대로 돌아온다.

요점은 조각 단위로 넣는 것이다. 토큰 전체를 통째로 붙이면 점 때문에 오류가 난다.

왜 어떤 문자열은 오류가 나나?

이 페이지가 읽는 문자는 64자, 정확히는 A-Z, a-z, 0-9, -, _ 뿐이다. 옵션 칸이 비어 있어서 알파벳을 바꾸거나 padding을 켜는 설정도 없다.

넣은 값결과이유
7JWI64WV7ZWY7IS47JqU안녕하세요URL-safe 문자만 사용
SGVsbG8=오류=는 알파벳에 없음
SGVsbG8+오류표준 Base64 문자는 읽지 않음
PNG, ZIP 바이트오류결과를 UTF-8 텍스트로만 읽음

오류 문구는 처리할 수 없습니다. 입력 형식을 확인하세요. 한 줄뿐이라 어디가 틀렸는지는 알려주지 않는다. 위 네 가지를 순서대로 지워보면 대개 답이 나온다. 줄바꿈과 공백은 문제되지 않는다. 읽기 전에 전부 지우기 때문에 메신저에서 여러 줄로 깨져 붙은 문자열도 그대로 통한다.

입력 상한은 2,000,000자다. 넘으면 Input exceeds 2 MB가 뜬다. 파일로 넣을 때는 .txt, .json, .csv, .md 등 12개 확장자만 열린다. 로그인도 설치도 없고, 고른 파일도 업로드되지 않는다.

이 페이지가 하지 않는 일: 반대 방향 인코딩, 문자셋 선택, 16진수나 Base58 출력. 결과는 텍스트로만 나오니 PNG나 ZIP을 복원하려면 여기가 아니다. 버튼도 입력, 예제 입력, 지우기, 실행, 결과 복사, 파일 저장 여섯 개가 전부다.

기능과 파라미터는 toolpug.com의 이 도구 페이지 2026년 11월 버전을 기준으로 한다.