도
도구상자FREE ONLINE TOOLS
← 모든 도구

JWT 디코더

JWT 토큰을 붙여넣으면 헤더와 페이로드를 즉시 파싱합니다.

사용법
  1. JWT 토큰(header.payload.signature 형식)을 입력창에 붙여넣습니다.
  2. "디코딩" 버튼을 클릭하면 헤더와 페이로드가 보기 좋은 JSON 형태로 표시됩니다.
  3. iss(발급자), exp(만료 시각), sub(주체), role(권한) 등 주요 클레임 값을 확인합니다.
  4. 필요한 부분을 복사 버튼으로 클립보드에 저장합니다.
JWT는 어떻게 생겼을까

JWT(JSON Web Token)는 점(.)으로 구분된 세 부분으로 이뤄집니다: 헤더.페이로드.서명. 앞 두 부분은 Base64URL로 인코딩된 JSON이라 누구나 내용을 볼 수 있고, 세 번째 서명이 위조를 막습니다.

  • 헤더(header): 토큰 종류와 서명 알고리즘(예: HS256).
  • 페이로드(payload): 사용자 ID(sub)·권한(role)·만료(exp) 등 담긴 정보(클레임).
  • 서명(signature): 비밀 키로 만든 검증값. 내용이 바뀌면 서명이 깨집니다.

이 도구는 앞 두 부분을 디코딩해 내용을 보여 줄 뿐, 내용 자체는 암호화돼 있지 않습니다. 자세한 구조는 JWT란? 가이드에 있습니다.

숫자로 보는 예시 — 199자짜리 토큰을 뜯어 보면

아래는 예시용으로 만든 토큰(비밀 키 secret, HS256)을 이 도구에 넣어 얻은 결과입니다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTEwNDIiLCJuYW1lIjoi7ZmN6ri464-ZIiwicm9sZSI6Im1lbWJlciIsImlhdCI6MTc5MDAwMDAwMCwiZXhwIjoxNzkwMDAzNjAwfQ.KoYKQbpfRjuMnYuF3cYMwTt14d8PSput3sjms0DtNHo
부분글자 수디코딩 결과
헤더36{"alg":"HS256","typ":"JWT"} (27바이트)
페이로드118{"sub":"user-1042","name":"홍길동","role":"member","iat":1790000000,"exp":1790003600} (88바이트)
서명43표시하지 않음 (HMAC-SHA256 결과 32바이트)

세 부분 36 + 118 + 43자에 구분점 2개를 더해 199자입니다. 88바이트짜리 페이로드가 118자로 늘어난 것은 Base64URL이 3바이트를 4글자로 바꾸기 때문입니다. 토큰은 요청마다 헤더에 실려 가므로, 클레임을 많이 넣을수록 모든 요청이 그만큼 무거워집니다.

iat과 exp 읽기

클레임값한국 시간
iat (발급)17900000002026-09-21 23:13:20
exp (만료)17900036002026-09-22 00:13:20

exp − iat = 3,600초이므로 유효 기간이 1시간인 토큰입니다. 날짜로 바꾸지 않아도 두 값의 차이만 보면 수명을 알 수 있습니다(86,400이면 하루, 604,800이면 일주일).

디코딩된다고 유효한 토큰은 아닙니다

입력이 도구의 결과
페이로드의 role을 admin으로 바꾸고 서명은 그대로 둔 토큰정상 디코딩 — role이 admin으로 표시됨
서명을 뗀 헤더.페이로드정상 디코딩
앞에 "Bearer "가 붙은 토큰접두어를 떼고 정상 디코딩
헤더 한 부분만유효한 JWT 형식이 아닙니다
페이로드가 중간에 잘린 토큰파싱 오류

내용을 고친 토큰도 화면에는 멀쩡하게 표시됩니다. 서버는 서명을 검증해 이런 토큰을 거부하지만, 이 도구는 서명을 확인하지 않기 때문입니다. 여기서 보이는 값은 "토큰에 이렇게 적혀 있다"는 뜻일 뿐, 그 토큰이 진짜라는 보증이 아닙니다.

활용 팁
  • 만료 시각(exp) 확인: exp 클레임은 Unix 타임스탬프(초 단위)로 저장됩니다. 디코딩 결과에서 exp 값을 현재 시각과 비교해 토큰이 아직 유효한지 직접 검토할 수 있습니다.
  • API 디버깅: 401 Unauthorized 오류가 발생할 때, 발급된 JWT 페이로드를 디코딩해 권한(role), 사용자 ID, 만료 시각 등을 빠르게 확인해 원인을 파악하세요.
  • 보안 주의: 프로덕션 환경의 실제 사용자 토큰은 입력하지 마세요. 개발·테스트용 더미 토큰이나 만료된 토큰만 이 도구에서 사용하는 것이 안전합니다.
자주 묻는 질문
Q. 서명(signature) 검증도 되나요?

아닙니다. 이 도구는 Base64URL 디코딩만 수행합니다. 서명 검증은 서버 측에서 비밀 키나 공개 키를 사용해야 합니다.

Q. JWT가 아닌 다른 토큰을 입력하면 어떻게 되나요?

header.payload.signature 구조(점 두 개로 구분)가 아니면 오류 메시지가 표시됩니다.

Q. 토큰이 만료됐는지 여기서 알 수 있나요?

디코딩된 payload의 exp 값(만료 시각, Unix 타임스탬프)을 보면 됩니다. 이 도구는 내용만 해석해 보여주므로, 실제 만료 여부는 exp를 현재 시각과 비교하거나 타임스탬프 변환 도구로 확인하세요.

Q. JWT는 암호화된 건가요?

기본 JWT는 암호화가 아니라 '서명'된 것입니다. 페이로드는 Base64로 인코딩만 돼 있어 누구나 디코딩해 볼 수 있으므로, 비밀번호 같은 민감 정보를 담으면 안 됩니다. 서명은 내용 위조를 막을 뿐 내용을 숨기지는 않습니다.

Q. 디코딩한 토큰이 외부로 전송되나요?

아닙니다. 디코딩은 브라우저 안에서만 이뤄지며 입력한 토큰은 서버로 전송되지 않습니다. 다만 안전을 위해 실제 운영 환경의 유효한 사용자 토큰보다 테스트·만료된 토큰을 사용하는 것이 좋습니다.

함께 보면 좋은 가이드