본문 바로가기

JWT 디코더

브라우저 처리

JWT 토큰의 header와 payload를 풀어 읽기 좋은 JSON으로 보여 주고, iat·nbf·exp를 한국 시간과 남은 시간으로 바꿔 지금 쓸 수 있는 토큰인지, 밀리초 실수나 alg none 같은 문제가 없는지 알려 줍니다.

사용 전 확인
  • 보안·인코딩·토큰·네트워크 관련 결과는 작업 보조용입니다. 비밀번호, 비밀키, 운영 토큰, 실제 서비스 취약점 정보는 입력하지 말고 공식 보안 기준을 함께 확인하세요.
도구 실행입력 후 결과 확인
JWT 디코더 샘플 실행

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이면 서명 없는 토큰이라 서버가 반드시 거부해야 한다고 표시합니다.

이 도구는 내용만 풀어 보여 주고 서명은 검증하지 않습니다. 화면에 내용이 보인다고 토큰이 진짜라는 뜻은 아니며, 서명 검증은 서버에서 비밀 키나 공개 키로 해야 합니다.

사용 방법

  1. JWT 토큰 전체를 입력란에 붙여 넣습니다. 'Bearer ' 접두어는 지우고 넣습니다.
  2. HEADER에서 알고리즘(alg)과 형식(typ)을, PAYLOAD에서 sub, exp, iat 같은 클레임을 확인합니다.
  3. 아래 상태 문구와 시간 클레임에서 구조가 유효한지, 지금 쓸 수 있는 토큰인지, 수명이 의도한 길이인지 확인합니다.

예시: 샘플 토큰

입력
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는 키 없이는 내용을 볼 수 없습니다.

exp가 '밀리초 단위로 보입니다'로 표시됨

JavaScript의 Date.now()처럼 밀리초 값을 그대로 넣은 경우입니다. JWT 시간 클레임은 초 단위이므로 1000으로 나눈 값을 쓰도록 발급 코드를 고치세요. 그대로 두면 서버가 아주 먼 미래로 읽어 만료되지 않는 토큰이 됩니다.

활용 팁

  • payload는 암호화가 아니라 인코딩일 뿐이라 누구나 읽을 수 있습니다. 비밀번호나 주민등록번호 같은 민감한 정보를 JWT에 넣으면 안 됩니다.
  • 실서비스 토큰을 붙여 넣을 때는 이미 만료됐거나 테스트용인 토큰을 쓰는 습관이 안전합니다.
  • 서버는 서명을 먼저 검증한 뒤 시간 클레임을 확인해야 하고, 서버 사이 시계 차이를 고려해 보통 1~2분의 오차를 허용합니다.

자주 묻는 질문

서명이 올바른지 확인할 수 있나요?

아니요. 이 도구는 header와 payload를 읽기 쉽게 풀어 줄 뿐 서명을 검증하지 않습니다. 서명 검증은 키를 가진 서버나 라이브러리에서 하세요.

만료 판단은 어떤 시각 기준인가요?

지금 사용하는 기기의 시계와 payload의 exp·nbf(초 단위)를 비교합니다. 기기 시계가 틀리면 판단도 틀릴 수 있고, 한국어 페이지는 한국 시간으로, 영어 페이지는 기기의 시간대로 표시합니다.

토큰이 어딘가로 전송되나요?

토큰 해석은 이 페이지 안의 스크립트가 처리하며 별도 요청을 보내지 않습니다. 그래도 운영 토큰은 되도록 붙여 넣지 마세요.

계산·판단 기준

근거
  • 입력 문자열, 토큰, 해시, 인코딩 값, 네트워크 형식처럼 사용자가 제공한 데이터를 브라우저에서 변환하거나 점검합니다.
  • 보안 관련 도구는 개발과 학습을 돕기 위한 참고 결과를 만들며 운영 환경 검증을 대신하지 않습니다.
한계
  • 실제 비밀번호, 개인 키, 운영 토큰, 고객 정보, 취약점 상세처럼 노출되면 위험한 값은 입력하지 마세요.
  • 해시, 토큰, 인코딩 결과는 보안성 보장이나 침해 여부 확인을 의미하지 않습니다.
공식 확인
  • 운영 보안 판단 전에는 조직 보안 정책, 공식 문서, 전문 보안 점검 절차와 함께 확인하세요.
출처·검증 경로

검토 범위: 입력, 실행, 결과 표시가 설명대로 동작하는지 자동으로 점검하지만 모든 입력 형식과 사용 환경을 보장하지는 않습니다. 결과를 제출하거나 공유하기 전에 직접 열어 확인하세요.