JWT 디코더
브라우저 처리JWT 토큰의 header와 payload를 풀어 읽기 좋은 JSON으로 보여 주고, iat·nbf·exp를 한국 시간과 남은 시간으로 바꿔 지금 쓸 수 있는 토큰인지, 밀리초 실수나 alg none 같은 문제가 없는지 알려 줍니다.
- 보안·인코딩·토큰·네트워크 관련 결과는 작업 보조용입니다. 비밀번호, 비밀키, 운영 토큰, 실제 서비스 취약점 정보는 입력하지 말고 공식 보안 기준을 함께 확인하세요.
JWT(JSON Web Token)는 점(.)으로 나뉜 세 부분 header.payload.signature로 이뤄진 인증 토큰입니다. 앞의 두 부분은 Base64URL로 인코딩된 JSON이라 누구나 풀어 볼 수 있습니다. 이 디코더는 토큰을 붙여 넣는 즉시 header와 payload를 들여쓰기된 JSON으로 보여 줍니다.
HEADER
{ "alg": "HS256", "typ": "JWT" }
PAYLOAD
{ "sub": "1234567890", "name": "ToolBada", "iat": 1718700000 }
JWT 디코더 사용 가이드
JWT(JSON Web Token)는 점(.)으로 나뉜 세 부분 header.payload.signature로 이뤄진 인증 토큰입니다. 앞의 두 부분은 Base64URL로 인코딩된 JSON이라 누구나 풀어 볼 수 있습니다. 이 디코더는 토큰을 붙여 넣는 즉시 header와 payload를 들여쓰기된 JSON으로 보여 줍니다.
그 아래에는 시간 클레임이 정리됩니다. iat(발급), nbf(사용 시작), exp(만료)를 Unix 시간과 한국 시간, '3시간 후'·'2일 전' 같은 상대 시간으로 함께 보여 주고, 지금 기준 상태를 '유효 (만료까지 50분)', '만료됨', '아직 사용할 수 없음 (nbf 이전)' 중 하나로 판정합니다. exp가 없으면 무기한 토큰이라 exp를 넣으라고 안내하고, iat와 exp가 모두 있으면 토큰 수명을 분 단위로 계산합니다.
흔한 실수도 짚어 줍니다. 1718700000000처럼 13자리인 값은 밀리초로 넣은 것이라 초 단위 값을 알려 주고, 발급 시각이 현재보다 미래면 서버 시계가 어긋났을 수 있다고 경고합니다. header의 alg가 none이면 서명 없는 토큰이라 서버가 반드시 거부해야 한다고 표시합니다.
이 도구는 내용만 풀어 보여 주고 서명은 검증하지 않습니다. 화면에 내용이 보인다고 토큰이 진짜라는 뜻은 아니며, 서명 검증은 서버에서 비밀 키나 공개 키로 해야 합니다.
사용 방법
- JWT 토큰 전체를 입력란에 붙여 넣습니다. 'Bearer ' 접두어는 지우고 넣습니다.
- HEADER에서 알고리즘(alg)과 형식(typ)을, PAYLOAD에서 sub, exp, iat 같은 클레임을 확인합니다.
- 아래 상태 문구와 시간 클레임에서 구조가 유효한지, 지금 쓸 수 있는 토큰인지, 수명이 의도한 길이인지 확인합니다.
예시: 샘플 토큰
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlRvb2xCYWRhIiwiaWF0IjoxNzE4NzAwMDAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
HEADER
{ "alg": "HS256", "typ": "JWT" }
PAYLOAD
{ "sub": "1234567890", "name": "ToolBada", "iat": 1718700000 }iat 1718700000은 발급 시각으로, 시간 클레임에 2024년 6월 18일 17:40:00(한국)과 지금으로부터 지난 기간이 함께 나옵니다. exp가 없어 상태는 '만료 시각(exp)이 없어 무기한 토큰입니다'로 표시됩니다.
이럴 때 쓰면 좋아요
- 로그인 오류가 날 때 토큰이 만료됐는지, 아직 nbf 이전인지 확인할 때
- 토큰에 어떤 사용자 정보와 권한(role, scope)이 담겼는지 볼 때
- 인증 서버 설정 후 발급된 토큰의 알고리즘과 수명(exp − iat)을 점검할 때
- 모바일 앱이 밀리초 단위로 exp를 넣어 토큰이 영원히 유효해지는 실수를 찾을 때
문제가 생겼을 때
점(.)이 두 개 있는 세 부분이어야 합니다. 'Bearer '나 따옴표, 줄바꿈이 섞여 들어가지 않았는지 확인하세요.
토큰 일부가 잘렸거나 암호화된 JWE 토큰(점이 네 개)일 수 있습니다. JWE는 키 없이는 내용을 볼 수 없습니다.
JavaScript의 Date.now()처럼 밀리초 값을 그대로 넣은 경우입니다. JWT 시간 클레임은 초 단위이므로 1000으로 나눈 값을 쓰도록 발급 코드를 고치세요. 그대로 두면 서버가 아주 먼 미래로 읽어 만료되지 않는 토큰이 됩니다.
활용 팁
- payload는 암호화가 아니라 인코딩일 뿐이라 누구나 읽을 수 있습니다. 비밀번호나 주민등록번호 같은 민감한 정보를 JWT에 넣으면 안 됩니다.
- 실서비스 토큰을 붙여 넣을 때는 이미 만료됐거나 테스트용인 토큰을 쓰는 습관이 안전합니다.
- 서버는 서명을 먼저 검증한 뒤 시간 클레임을 확인해야 하고, 서버 사이 시계 차이를 고려해 보통 1~2분의 오차를 허용합니다.
자주 묻는 질문
아니요. 이 도구는 header와 payload를 읽기 쉽게 풀어 줄 뿐 서명을 검증하지 않습니다. 서명 검증은 키를 가진 서버나 라이브러리에서 하세요.
지금 사용하는 기기의 시계와 payload의 exp·nbf(초 단위)를 비교합니다. 기기 시계가 틀리면 판단도 틀릴 수 있고, 한국어 페이지는 한국 시간으로, 영어 페이지는 기기의 시간대로 표시합니다.
토큰 해석은 이 페이지 안의 스크립트가 처리하며 별도 요청을 보내지 않습니다. 그래도 운영 토큰은 되도록 붙여 넣지 마세요.
계산·판단 기준
- 입력 문자열, 토큰, 해시, 인코딩 값, 네트워크 형식처럼 사용자가 제공한 데이터를 브라우저에서 변환하거나 점검합니다.
- 보안 관련 도구는 개발과 학습을 돕기 위한 참고 결과를 만들며 운영 환경 검증을 대신하지 않습니다.
- 실제 비밀번호, 개인 키, 운영 토큰, 고객 정보, 취약점 상세처럼 노출되면 위험한 값은 입력하지 마세요.
- 해시, 토큰, 인코딩 결과는 보안성 보장이나 침해 여부 확인을 의미하지 않습니다.
- 운영 보안 판단 전에는 조직 보안 정책, 공식 문서, 전문 보안 점검 절차와 함께 확인하세요.
- 공식 외부 출처OWASP Cheat Sheet Series웹 보안 구현과 검증을 위한 실무 권고 모음입니다.
검토 범위: 입력, 실행, 결과 표시가 설명대로 동작하는지 자동으로 점검하지만 모든 입력 형식과 사용 환경을 보장하지는 않습니다. 결과를 제출하거나 공유하기 전에 직접 열어 확인하세요.