← 모든 도구
JWT 디코더
JWT의 헤더와 페이로드를 디코드하고 만료 시각을 확인합니다.
JWT 디코더란?
JWT(JSON Web Token)는 점(.)으로 구분된 세 부분(header.payload.signature)으로 이루어진 토큰입니다. 이 디코더는 앞의 두 부분인 헤더와 페이로드를 Base64URL 방식으로 풀어 사람이 읽을 수 있는 JSON으로 예쁘게 보여 줍니다. 로그인 토큰에 어떤 클레임이 담겼는지, 만료 시각(exp)이 언제인지 빠르게 확인할 때 유용합니다.
중요한 점은 이 도구가 토큰을 '디코딩'만 하고 '서명 검증'은 하지 않는다는 것입니다. Base64URL은 암호화가 아니라 단순 인코딩이므로 누구나 페이로드 내용을 읽을 수 있습니다. 이 도구는 그 내용을 보여 줄 뿐, 서명이 유효한지(즉 토큰이 위변조되지 않았는지)는 확인하지 않습니다. 서명 검증은 비밀 키나 공개 키가 필요하며 반드시 서버에서 수행해야 합니다.
붙여넣은 토큰은 전적으로 여러분의 브라우저 안에서만 파싱되며 서버로 전송되지 않습니다. JWT에는 사용자 ID, 권한, 이메일 같은 민감 정보가 담기는 경우가 많은데, 이 도구는 그 어떤 값도 외부로 보내지 않으므로 실제 운영 토큰을 붙여넣어도 안전합니다.
사용 방법
- eyJhbGciOi... 로 시작하는 JWT 문자열 전체를 입력창에 붙여넣습니다.
- 헤더(Header)와 페이로드(Payload)가 각각 정렬된 JSON으로 표시됩니다. 각 영역의 복사 버튼으로 내용을 클립보드에 담을 수 있습니다.
- 페이로드에 exp 클레임이 있으면 만료 시각과 현재 유효 여부(만료됨 / 유효)가 함께 표시됩니다. 형식이 잘못되면 오류 메시지가 나타납니다.
자주 묻는 질문
- 이 도구가 서명(signature)을 검증하나요?
- 아니요. 디코딩만 하며 서명은 검증하지 않습니다. 서명 검증에는 발급 시 사용한 비밀 키(HMAC) 또는 공개 키(RSA/ECDSA)가 필요하고, 위변조를 판별하는 보안 작업이므로 클라이언트가 아닌 서버에서 수행해야 합니다.
- 페이로드를 아무나 읽을 수 있다면 위험하지 않나요?
- JWT의 페이로드는 암호화가 아니라 Base64URL 인코딩일 뿐이라 누구나 디코딩해 읽을 수 있습니다. 따라서 비밀번호나 신용카드 번호 같은 기밀 정보를 페이로드에 담아서는 안 됩니다. 토큰의 무결성은 서명으로 보장할 뿐 내용의 비밀성을 보장하지는 않습니다.
- 만료(exp) 표시는 어떻게 계산되나요?
- 페이로드의 exp 값은 Unix 초 단위 타임스탬프입니다. 이 값에 1000을 곱해 현재 시각(Date.now())과 비교하여 이미 지났으면 '만료됨', 아직이면 '유효'로 표시합니다. 표시되는 만료 시각은 여러분 브라우저의 로컬 타임존 기준입니다.
- 'JWT 형식이 아닙니다' 오류가 나는 이유는?
- JWT는 점으로 구분된 최소 두 부분(header.payload)이 있어야 합니다. 점이 없거나 부분이 하나뿐이면 형식 오류가 납니다. 또 Base64URL 해석이나 JSON 파싱에 실패하면 '디코딩 실패' 메시지가 표시되니 토큰이 중간에 잘리지 않았는지 확인하세요.