입력한 내용은 서버로 보내지 않습니다. 브라우저 안에서만 처리하고, 어디에도 저장하지 않습니다.
JWT 디코더
액세스 토큰·ID 토큰이 왜 거부되는지 볼 때 씁니다. 헤더(알고리즘)와 페이로드(클레임)를 JSON으로 펼치고, exp·iat·nbf 같은 시각은 한국 시간으로 바꿔 만료됐는지 바로 보여 줍니다.
Bearer 가 앞에 붙어 있어도 됩니다. 토큰은 서버로 전송되지 않고 브라우저 안에서만 처리하며 어디에도 저장하지 않습니다.
글을 붙여 넣으면 결과가 바로 표시됩니다.
다른 가능한 해석
JWT의 구조
JWT(JSON Web Token, RFC 7519)는 점(.)으로 나뉜 세 부분 헤더.페이로드.서명입니다. 헤더와 페이로드는 JSON을 Base64url로 바꾼 것이라 누구나 읽을 수 있습니다. 암호화가 아니므로 비밀번호·주민번호 같은 민감한 값을 넣으면 안 됩니다.
서명은 비밀 키(HS256) 또는 개인 키(RS256·ES256)로 만들어 위조를 막는 부분이며, 키가 없는 이 도구는 서명을 검증하지 않습니다.
| 부분 | 내용 | 예 |
|---|---|---|
| 헤더 | 서명 알고리즘 alg, 종류 typ, 키 식별자 kid | {"alg":"RS256","typ":"JWT","kid":"abc"} |
| 페이로드 | 클레임(주장). 표준 클레임과 서비스가 정한 클레임 | {"sub":"user1","exp":1793500000,"role":"admin"} |
| 서명 | 헤더+페이로드를 키로 서명한 값 | SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c |
표준 클레임과 시각 읽는 법
exp(만료),iat(발급),nbf(유효 시작)는 유닉스 시간(초)입니다. 밀리초가 아니므로 13자리로 넣으면 서버가 거부합니다. 이 도구는 KST·UTC와 "n시간 후/전"으로 바꿔 보여 줍니다.iss(발급자),aud(대상),sub(주체),jti(토큰 ID),scope(권한 범위)는 서버가 검사하는 값입니다. 401이 난다면aud가 내 서비스와 다르거나exp가 지난 경우가 가장 흔합니다.- 시계 차이 때문에 발급 직후
nbf검사에 걸리기도 합니다. 서버는 보통 수십 초의 여유(leeway)를 둡니다. - 다른 타임스탬프를 날짜로 바꾸려면 유닉스 타임스탬프 변환기를 쓰세요.
보안 주의
alg: none인 토큰은 서명이 없습니다. 서버가 이를 허용하면 누구나 토큰을 위조할 수 있으므로 라이브러리에서 허용 알고리즘을 명시해야 합니다.- HS256 비밀 키가 짧거나 추측 가능하면 오프라인에서 깨질 수 있습니다. 공개 서비스는 RS256·ES256 같은 비대칭 서명이 안전합니다.
- JWE(점으로 5부분)는 페이로드가 암호화돼 있어 이 도구로 열 수 없습니다.
- 붙여 넣은 토큰은 유효한 인증 수단입니다. 채팅·이슈 트래커에 올리지 마세요. 이 페이지는 서버로 보내지 않습니다. 내 계정의 토큰인데 내가 발급받은 것이 아니라면 다른 곳에서 돌아다니는 것이니 폐기하고 다시 발급하세요.
자주 묻는 질문
서명이 맞는지도 확인할 수 있나요?
아니요. 서명 검증에는 서버의 비밀 키나 공개 키(JWKS)가 필요합니다. 이 도구는 내용 해석만 하며, "서명 길이"만 표시합니다.
페이로드의 한글이 깨져 보여요.
JWT 페이로드는 UTF-8 JSON입니다. 다른 사이트에서 깨졌다면 Base64를 1바이트 글자로 풀어서입니다. 이 도구는 UTF-8로 정확히 풉니다. 이미 깨진 글은 깨진 한글 복구로 되돌려 보세요.
JWT가 아닌 다른 문자열도 풀 수 있나요?
Base64·URL 인코딩·16진수 등 여러 형식을 자동 판별하는 문자열 디코더를 쓰세요.
출처
이 도구가 도움이 됐다면 알려 주세요
페이지 링크만 보냅니다. 입력한 값이나 파일은 담기지 않습니다.