JWT 디코더
토큰의 헤더·페이로드를 열어보고 만료를 확인합니다
불러오는 중…
이 도구가 도움이 됐나요?
이 도구는
JWT(JSON Web Token)의 header·payload를 디코딩해서 안에 담긴 클레임을 보여줍니다. 토큰은 점(.)으로 구분된 세 부분(header, payload, signature)으로 이뤄지는데, 이 도구는 앞의 두 부분을 Base64URL로 디코딩해 JSON으로 보여줄 뿐 서명을 검증하지 않습니다. exp 클레임이 있으면 만료 여부도 함께 판정합니다.
사용법
- 토큰을 입력창에 붙여넣거나 예시 버튼으로 샘플 토큰을 불러옵니다.
- 점으로 구분된 세 부분 중 header와 payload가 각각 JSON으로 펼쳐집니다.
- payload에 exp가 있으면 만료됨/유효함 배지와 만료 시각이 표시됩니다.
- payload 아래 목록에서 iss·sub·aud 같은 표준 클레임의 뜻을 함께 확인합니다.
- 복사 버튼으로 header나 payload JSON을 바로 가져갑니다.
- 서명(signature) 부분은 해독되지 않은 원문 그대로 표시되며, 검증에는 비밀 키가 필요하다는 안내가 함께 뜹니다.
자주 묻는 질문
- JWT 디코딩은 서명 검증과 다른가요?
- 네, 완전히 다릅니다. 이 도구는 토큰 내용을 읽기만 할 뿐 서명이 진짜인지는 확인하지 않습니다. 서명 검증에는 발급자만 아는 비밀 키(또는 공개 키)가 필요한데, 이 도구는 키를 요구하지 않고 받지도 않습니다.
- 만료됨(expired)이라고 나오면 이 토큰은 이제 쓸 수 없나요?
- 이 도구는 payload의 exp 클레임과 현재 시각만 비교해서 알려주는 참고 정보입니다. 실제로 토큰이 거부되는지는 서버의 검증 로직에 달려 있습니다.
- 서명(signature) 부분은 왜 해독이 안 되나요?
- 서명은 header와 payload를 비밀 키로 서명한 값이라 원문으로 복원되는 데이터가 아닙니다. 이 도구는 서명 문자열을 그대로 보여주기만 합니다.
- 입력한 토큰이 서버로 전송되나요?
- 아니요. 디코딩은 전부 브라우저 안에서 이뤄지고 토큰은 서버로 전송되지 않습니다.
- 예시 버튼을 누르면 나오는 토큰이 실제로 유효한가요?
- 아닙니다. 예시 토큰은 형식을 보여주기 위한 데모 값으로, 서명이 실제로 유효하지 않습니다. 만료 시각(exp)만 먼 미래로 잡혀 있어 유효함으로 표시될 뿐, 진짜 서비스에서 발급한 토큰이 아닙니다.
- 이 도구로 새 토큰을 만들거나 서명할 수 있나요?
- 아니요. 이 도구는 기존 토큰을 읽기만 하며 새 토큰을 만들거나 서명하는 기능은 없습니다. 토큰을 발급하려면 서버 쪽에서 비밀 키로 서명하는 라이브러리를 쓰세요.
- 형식이 잘못됐다는 오류는 언제 뜨나요?
- 점(.)으로 구분된 부분이 2개 미만이면 '점으로 구분된 형식이 아닙니다'가 뜨고, 점은 있지만 Base64URL로 디코딩할 수 없거나 JSON이 아니면 '디코딩할 수 없습니다'가 뜹니다. 앞뒤에 공백이 섞여 들어간 경우에도 디코딩이 실패할 수 있습니다.
- header나 payload 아래에 클레임 설명이 안 보일 때가 있어요.
- payload에 iss·sub·aud·exp·nbf·iat·jti 같은 표준 클레임이 있을 때만 그 아래에 설명이 붙습니다. 커스텀 클레임(예: role, name)은 JSON 원문에는 나오지만 별도 설명 목록에는 나오지 않습니다.
이 페이지는 토큰을 디코딩만 할 뿐 서명 검증은 하지 않으며, 입력한 토큰을 서버로 보내지 않습니다. 만료되지 않은 것처럼 보여도 서명이 위조된 토큰일 수 있으니 실제 인증에는 반드시 서버 쪽 검증을 거치세요.