🔒 서버 전송 없음

JWT 디코더

토큰을 붙여넣으면 헤더·페이로드 해석, 만료 시간 확인, 서명 검증까지 한 번에

JWT 토큰 입력
예시 토큰:

🔒 토큰과 비밀키는 이 브라우저 안에서만 처리되며 서버로 전송되거나 저장되지 않습니다. 그래도 운영 환경의 실제 토큰은 가급적 만료된 것으로 확인하세요.

HEADER 헤더
토큰을 입력하면 여기에 표시됩니다
PAYLOAD 페이로드
토큰을 입력하면 여기에 표시됩니다
시간 정보 (한국시간 KST)
iat · exp · nbf 가 있으면 날짜로 바꿔 보여줍니다
SIGNATURE 서명 검증 -
ℹ️
비밀키를 입력하면 바로 검증합니다예시 토큰의 비밀키는 unidago-secret 입니다.
클레임 설명
토큰에 들어 있는 클레임(필드)의 의미를 여기에 정리해 드립니다
사용 방법
  1. 로그인 응답, 쿠키, 또는 Authorization: Bearer ... 헤더에서 JWT 문자열을 복사해 입력칸에 붙여넣습니다. Bearer 접두어나 앞뒤 공백·줄바꿈은 자동으로 제거됩니다.
  2. 점(.)으로 나뉜 세 부분이 색으로 구분되고, 헤더와 페이로드가 정렬된 JSON 으로 표시됩니다.
  3. 시간 정보에서 발급 시각(iat), 만료 시각(exp), 사용 시작 시각(nbf)을 한국시간으로 확인하고, 지금 기준으로 만료됐는지와 남은 시간을 봅니다. 남은 시간은 1초마다 갱신됩니다.
  4. 알고리즘이 HS256/HS384/HS512 라면 서버에서 쓰는 비밀키를 입력해 서명이 맞는지 검증합니다. 키가 Base64 로 저장되어 있다면 체크박스를 켜세요.

JWT 구조 한눈에 보기

JWT 는 헤더.페이로드.서명 세 부분으로 되어 있고, 앞의 두 부분은 JSON 을 Base64URL 로 인코딩한 것입니다. 즉 암호화가 아니라 누구나 읽을 수 있는 형태이므로 비밀번호나 주민번호 같은 민감한 정보를 페이로드에 넣으면 안 됩니다. 서명은 헤더.페이로드 문자열을 비밀키로 HMAC(또는 RSA/ECDSA) 서명한 값이라, 내용이 한 글자라도 바뀌면 검증에 실패합니다.

자주 묻는 질문
붙여넣은 JWT 토큰이 서버로 전송되나요?

아니요. 디코딩과 서명 검증은 모두 브라우저 안에서 JavaScript 와 Web Crypto API(crypto.subtle)로 처리됩니다. 토큰과 비밀키는 네트워크로 전송되지 않고, 브라우저 저장소에도 남기지 않습니다.

exp 값은 어떻게 읽나요? 왜 숫자인가요?

exp, iat, nbf 는 1970-01-01 00:00:00 UTC 부터 지난 초 단위 Unix 시간입니다(밀리초가 아님). 예를 들어 1767225600 은 2026-01-01 09:00:00 KST 입니다. 이 도구가 자동으로 한국시간으로 바꿔 보여줍니다.

디코딩이 잘 되면 유효한 토큰인가요?

아닙니다. 헤더와 페이로드는 단순 인코딩이라 누구나 만들어 낼 수 있습니다. 토큰이 위조되지 않았는지는 서명 검증으로만 확인할 수 있고, 실제 서비스에서는 서명·만료·발급자(iss)·대상(aud)을 서버에서 반드시 검사해야 합니다.

RS256, ES256 토큰도 검증되나요?

디코딩과 만료 확인은 모든 알고리즘에서 됩니다. 서명 검증은 공유 비밀키를 쓰는 HS256·HS384·HS512 만 지원합니다. RS·ES·PS 계열은 발급자의 공개키(JWKS)가 필요합니다.

"점이 5개" 또는 "부분이 5개"라는 오류가 나요.

다섯 부분으로 된 토큰은 서명된 JWT(JWS)가 아니라 암호화된 JWE 입니다. JWE 는 복호화 키 없이는 내용을 볼 수 없어 이 도구로 해석할 수 없습니다.