JWT 디코더

모든 JSON Web Token을 브라우저에서 디코딩하세요. 헤더와 페이로드, exp·iat·nbf를 내 시간대의 실제 날짜로 보여주고 만료 여부도 바로 알려줍니다.

브라우저에서 디코딩됩니다. 토큰은 절대 서버로 전송되지 않습니다.

요약

헤더


                    

페이로드 (클레임)


                    

토큰과 서명

어디에도 보내지 않고 JWT를 읽어 보세요

JSON Web Token을 붙여넣으면 디코더가 세 부분으로 나눠 줍니다. 헤더(어떤 알고리즘으로 서명했는지), 페이로드(클레임: 사용자가 누구인지, 무엇에 접근할 수 있는지, 토큰이 언제 만료되는지), 그리고 서명입니다. JSON은 보기 좋게 정리되어 한눈에 읽을 수 있습니다.

시간 클레임은 실제 날짜로 바뀝니다. exp, iat, nbf를 내 시간대와 UTC, 그리고 “20분 후”나 “3일 전” 형태로 보여 주며, 상태 항목에서 토큰이 아직 유효한지, 만료됐는지, 아직 유효하지 않은지를 바로 알 수 있습니다.

토큰은 실제 계정에 접근할 수 있는 경우가 많기 때문에 모든 디코딩은 브라우저에서 이루어집니다. 토큰은 서버에 업로드되거나 기록·저장되지 않습니다. 챗봇이나 서버로 전송하는 사이트에 붙여넣는 것보다 안전합니다.

JWT 디코딩 방법

  1. 앱, Authorization 헤더, 쿠키 또는 브라우저 개발자 도구에서 토큰을 복사합니다.
  2. 입력란에 붙여넣습니다. Bearer 접두사, 따옴표, 공백, 줄바꿈은 자동으로 제거됩니다.
  3. 요약을 확인합니다: 상태, 알고리즘, 발급자, 주체, 대상, 정확한 발급 및 만료 시각.
  4. 복사 버튼으로 정리된 헤더나 페이로드 JSON을 버그 리포트나 메모에 옮길 수 있습니다.

자주 쓰는 클레임의 의미

  • exp (expiration time): 이 시각 이후에는 토큰을 거부해야 합니다.
  • iat (issued at): 토큰이 만들어진 시각입니다.
  • nbf (not before): 이 시각 전에는 토큰을 받아들이면 안 됩니다.
  • iss (issuer): 토큰을 만든 주체로, 보통 로그인 서버의 URL입니다.
  • sub (subject): 토큰이 가리키는 대상으로, 보통 사용자 ID입니다.
  • aud (audience): 토큰을 사용할 앱이나 API입니다.
  • alg와 kid (헤더): HS256, RS256 같은 서명 알고리즘과 서명에 쓴 키의 ID입니다.

JWT 날짜는 NumericDate 값, 즉 1970년 1월 1일 UTC부터 지난 초 수입니다. 디코더가 알아서 변환하므로 별도의 타임스탬프 변환기가 필요 없습니다.

디버깅 팁

  • 로그인 직후 API가 401을 반환한다면 먼저 exp와 nbf를 확인하세요. 서버 시계가 몇 분 빠르거나 느린 것이 흔한 원인이며, 대부분의 라이브러리는 약간의 오차를 허용합니다.
  • 수만 년 뒤의 날짜가 나온다면 값이 초가 아니라 밀리초로 기록된 것입니다. 이 경우 디코더가 경고해 줍니다.
  • aud와 iss를 API가 기대하는 값과 비교하세요. 다른 앱이나 환경(운영 대신 스테이징)용으로 발급된 토큰은 “잘못된 토큰” 오류의 흔한 원인입니다.
  • 헤더의 alg가 none이면 서명되지 않은 토큰입니다. 운영 환경에서는 이런 토큰을 절대 허용하지 마세요.

한계와 알아 둘 점

  • 디코딩은 검증이 아닙니다. 누구나 원하는 클레임으로 토큰을 만들 수 있으며, 진짜임을 증명하는 것은 서버에서 올바른 키로 서명을 확인하는 것뿐입니다. 이 도구는 서명을 검증하지 않습니다.
  • 일반 JWT의 페이로드는 인코딩만 되어 있을 뿐 암호화되지 않았습니다. 토큰을 가진 사람은 누구나 읽을 수 있으니 비밀번호나 비밀 정보를 클레임에 넣지 마세요.
  • 암호화된 토큰(JWE, 5개 부분)은 키 없이 읽을 수 없으므로 헤더만 표시됩니다.
  • 숫자는 토큰에 적힌 그대로 표시되므로 긴 숫자 ID가 반올림되지 않습니다.

자주 묻는 질문

실제 토큰을 붙여넣어도 안전한가요?

네. 디코딩은 브라우저의 JavaScript로 실행되며 토큰은 절대 서버로 전송되지 않습니다. 그래도 사용 중인 토큰은 비밀번호처럼 다루세요. 스크린샷이나 채팅으로 공유하지 말고 만료되도록 두세요.

이 도구로 토큰이 유효한지 알 수 있나요?

날짜를 기준으로 토큰이 만료됐는지, 아직 유효하지 않은지를 알려 줍니다. 서명이 진짜인지는 알 수 없습니다. 그러려면 서버만 가지고 있어야 하는 비밀 키나 공개 키가 필요하기 때문입니다.

방금 받은 토큰이 왜 만료됐다고 나오나요?

토큰을 발급한 서버의 시계를 확인하고 exp가 밀리초가 아닌 초 단위인지 확인하세요. iat도 몇 시간 전으로 나온다면 서버 시계가 틀렸을 가능성이 큽니다.

JWT 디코더와 Base64 디코더는 무엇이 다른가요?

JWT는 Base64URL로 인코딩된 세 부분을 점으로 이은 것입니다. Base64 디코더는 한 번에 한 부분만 읽지만, JWT 디코더는 토큰을 알아서 나누고 URL 안전 문자와 빠진 패딩을 처리하며 날짜를 읽기 쉬운 시간으로 바꿔 줍니다.

오프라인에서도 작동하나요?

네. 페이지가 로드된 뒤에는 인터넷 연결을 끊어도 계속 토큰을 디코딩할 수 있습니다.

관련 도구

  • Base64 디코더: Base64 문자열을 읽을 수 있는 텍스트로 즉시 디코딩하세요. 인증 헤더, 토큰, API 페이로드, 이메일 내용 확인에 유용. 무료 온라인 Base64 디코더.
  • JSON 검사기 및 정렬기: 온라인에서 JSON 유효성을 검사하고 보기 좋게 정렬하세요. 문법 오류를 찾고 한 줄로 압축된 JSON을 들여쓰기된 코드로 바꿉니다. 무료 JSON 포매터, 가입 불필요.
  • URL 디코더: 퍼센트 인코딩된 URL과 쿼리 문자열을 읽을 수 있는 텍스트로 되돌리세요. %20, %26, %EC%84%9C 같은 코드를 한글과 일반 문자로 즉시 변환. 무료 URL 디코더.
  • Base64 인코더: 텍스트나 문자열을 Base64로 즉시 인코딩하세요. data URI, HTTP Basic 인증 헤더, 이메일, API 작업에 유용합니다. 무료 온라인 Base64 인코더, 회원가입 불필요.

유사한 도구

Base64 디코더

Base64 문자열을 읽을 수 있는 텍스트로 즉시 디코딩하세요. 인증 헤더, 토큰, API 페이로드, 이메일 내용 확인에 유용. 무료 온라인 Base64 디코더.

JSON 검사기 및 정렬기

온라인에서 JSON 유효성을 검사하고 보기 좋게 정렬하세요. 문법 오류를 찾고 한 줄로 압축된 JSON을 들여쓰기된 코드로 바꿉니다. 무료 JSON 포매터, 가입 불필요.

URL 디코더

퍼센트 인코딩된 URL과 쿼리 문자열을 읽을 수 있는 텍스트로 되돌리세요. %20, %26, %EC%84%9C 같은 코드를 한글과 일반 문자로 즉시 변환. 무료 URL 디코더.

인기 무료 도구