본문으로 건너뛰기
123도구

JWT 디코더

JWT의 헤더와 페이로드를 풀어 보고 발급·만료 시각을 사람이 읽는 시간으로 보여줍니다. 서명 검증 여부를 분명히 구분합니다.

  • RFC 7519 · 서명 미검증
  • 파일·입력값이 서버로 전송되지 않음
  • 가입 없이 무료

헤더 . 페이로드 . 서명 — 점(.)으로 나뉜 세 부분입니다.

해석 결과

서명은 검증하지 않았습니다. 내용은 누구나 읽을 수 있고, 위조 여부는 아래에서 비밀키로 따로 확인해야 합니다.

헤더 · HS256

{
  "alg": "HS256",
  "typ": "JWT"
}

페이로드

{
  "sub": "user_1024",
  "name": "김도구",
  "role": "admin",
  "iat": 1791158400,
  "exp": 1822694400
}

클레임 읽기

발급 시각 (iat)
2026-10-05 09:00:00 (월) KST1791158400
만료 시각 (exp)
2027-10-05 09:00:00 (화) KST1822694400
주체(사용자 ID) (sub)
user_1024
이름 (name)
김도구

서명 확인

HS256은 비밀키 하나로 서명합니다. 비밀키를 넣으면 이 브라우저 안에서 서명을 다시 계산해 비교합니다.

민감한 운영 토큰, 비밀번호, API 키를 입력하지 마세요. 입력한 토큰과 비밀키는 서버로 전송되지 않고 브라우저 안에서만 해석됩니다.

사용 방법

  1. 토큰을 붙여 넣습니다. Authorization: Bearer ...에서 복사했다면 Bearer가 붙어 있어도 됩니다.
  2. 헤더와 페이로드가 JSON으로 풀리고, 발급·만료 시각이 한국 시간으로 표시됩니다. 위쪽 상자에서 지금 기준으로 만료됐는지 바로 볼 수 있습니다.
  3. HS256 같은 비밀키 방식이면 비밀키를 넣고 ‘서명 확인’을 눌러 위조 여부를 확인할 수 있습니다. 비밀키도 브라우저 밖으로 나가지 않습니다.

계산 기준과 공식

JWT는 헤더.페이로드.서명 세 부분을 점으로 이은 문자열입니다. 헤더와 페이로드는 JSON을 Base64URL로 인코딩한 것일 뿐 암호화가 아니므로, 토큰을 가진 사람은 누구나 내용을 읽을 수 있습니다.

  • 헤더: 서명 알고리즘(alg)과 형식(typ)
  • 페이로드: 사용자 ID(sub), 발급 시각(iat), 만료 시각(exp) 같은 클레임. 시각은 Unix 초 단위입니다.
  • 서명: 헤더와 페이로드를 비밀키(HS256)나 개인키(RS256, ES256)로 서명한 값. 내용이 한 글자라도 바뀌면 서명이 맞지 않습니다.

이 도구의 ‘유효/만료’ 표시는 시각만 비교한 것입니다. 서버는 서명, 발급자(iss), 대상(aud)까지 확인해야 합니다.

예시

  1. 예시 토큰 읽기

    처음 들어 있는 토큰은 HS256으로 서명됐고, 페이로드에 sub: user_1024, role: admin, 1년 뒤 만료 시각이 들어 있습니다. 비밀키 칸에 123tool-demo-secret을 넣고 서명 확인을 누르면 ‘서명 일치’가 나옵니다.

  2. 페이로드를 고쳐 권한을 바꾸면

    가운데 부분을 디코딩해 role을 바꾸고 다시 인코딩해도, 서명은 원래 내용으로 계산된 값이라 서버 검증에서 실패합니다. 같은 비밀키로 서명 확인을 해 보면 ‘서명 불일치’가 나옵니다. 이것이 JWT가 위조를 막는 방식입니다.

결과를 읽는 법

만료됨이면 서버는 이 토큰을 거부합니다. 리프레시 토큰으로 새 토큰을 받아야 합니다. 서버와 클라이언트의 시계가 몇 분 어긋나 있으면 만료 직전 토큰이 거부될 수 있습니다.

세 부분이 아니라 다섯 부분이면 암호화된 JWE 토큰이라 비밀키 없이는 내용을 볼 수 없습니다.

자주 묻는 질문

JWT 내용을 볼 수 있다면 안전하지 않은 것 아닌가요?

JWT는 내용을 숨기는 게 아니라 위조를 막는 방식입니다. 그래서 페이로드에 비밀번호, 주민번호 같은 민감한 정보를 넣으면 안 됩니다. 숨겨야 하면 JWE(암호화된 JWT)를 써야 합니다.

여기에 운영 토큰을 넣어도 되나요?

토큰은 서버로 전송되지 않고 브라우저 안에서만 해석됩니다. 그래도 운영 환경의 유효한 토큰은 탈취되면 그대로 쓸 수 있으므로, 가능하면 만료된 토큰이나 테스트 토큰을 넣으세요.

RS256 토큰은 왜 서명 확인이 안 되나요?

RS256, ES256은 개인키로 서명하고 공개키(JWKS)로 검증합니다. 공개키를 가져와 맞춰야 해서 이 도구에서는 비밀키 방식(HS256/384/512)만 확인합니다.

exp 숫자는 어떻게 읽나요?

1970년 1월 1일(UTC)부터 흐른 초입니다. 이 도구는 자동으로 한국 시간으로 바꿔 보여주며, 직접 바꾸려면 타임스탬프 변환기를 쓰면 됩니다.

결과가 이상하거나 있었으면 하는 기능이 있나요? 오류 제보 · 의견 보내기