본문으로 바로가기

JWT 디코더베타

JWT(JSON Web Token)의 header와 payload를 붙여넣기만 하면 읽어드립니다. 서명은 검증하지 않으며, 모든 처리는 브라우저 안에서만 이뤄집니다.

서명 검증 안 됨

이 도구는 내용을 읽기만 할 뿐 서명을 검증하지 않습니다. 실제 서비스에서 쓰는 토큰이나 비밀키는 여기에 붙여넣지 마세요.

JWT를 붙여넣으면 header와 payload가 해석됩니다.

사용 방법

JWT 문자열을 입력창에 붙여넣으면 header와 payload가 각각 보기 좋게 정리된 JSON으로 표시됩니다. 서명 알고리즘, 등록된 클레임(exp·iat·nbf)의 실제 날짜와 시각, 그리고 만료·유효 여부까지 함께 표시됩니다. header나 payload 결과는 복사 버튼으로 가져갈 수 있습니다. 입력한 내용은 어디로도 전송되지 않고 이 브라우저 안에서만 처리됩니다.

JWT의 세 부분

JWT는 점(.)으로 구분된 세 부분(header.payload.signature)으로 이뤄집니다. header에는 서명 알고리즘(alg)과 토큰 종류(typ) 같은 메타데이터가, payload에는 실제 클레임(사용자 ID, 권한, 만료 시각 등)이 들어 있습니다. 두 부분 모두 Base64URL로 인코딩된 JSON일 뿐이라서 암호화되어 있지 않으며, 누구나 디코딩해서 내용을 읽을 수 있습니다. 마지막 signature 부분만 비밀키(또는 개인키)로 서명되어 있어 header와 payload가 발급 이후 바뀌지 않았는지 확인하는 데 쓰입니다.

디코딩과 검증은 다릅니다

이 도구는 header와 payload를 읽어서 보여줄 뿐, signature 부분을 검증하지 않습니다. 서명을 검증하려면 그 토큰을 발급한 서버가 가진 비밀키(HMAC 계열) 또는 공개키(RSA·ECDSA 계열)가 있어야 하는데, 이 도구는 그런 키를 받지 않고 브라우저를 벗어나는 통신도 하지 않습니다. 그래서 화면에 내용이 정상적으로 나온다고 해서 그 토큰이 진짜이거나 아직 유효하다는 뜻은 아닙니다. 실제 서비스에서 쓰는 토큰이나 신뢰할 수 없는 비밀키는 이 도구를 포함해 어떤 온라인 도구에도 붙여넣지 않는 것이 안전합니다.

등록된 클레임(exp, iat, nbf)

JWT 표준(RFC 7519)은 exp(만료 시각), iat(발급 시각), nbf(유효 시작 시각) 같은 몇 가지 클레임 이름을 정해두고 있습니다. 이 값들은 모두 1970년 1월 1일부터 지난 초를 나타내는 숫자(NumericDate)입니다. 이 도구는 이 값을 사용자의 로캘에 맞는 날짜·시각으로 바꿔 보여주고, 현재 시각과 비교해 exp가 지났으면 “만료됨”, nbf가 아직 안 지났으면 “아직 유효하지 않음”으로 표시합니다. 다만 이 판정은 화면에 보여주기 위한 참고용이며, 실제 접근 제어는 반드시 서버 쪽 검증을 거쳐야 합니다.

개인정보

붙여넣은 토큰과 디코딩 결과는 이 브라우저 안에서만 계산되며 서버로 전송되지 않습니다. 다만 JWT의 payload는 애초에 암호화되어 있지 않으므로, 이 도구를 쓰지 않아도 이메일·역할·내부 ID 같은 정보를 누구나 읽을 수 있다는 점을 기억하세요.

참고 자료

자주 묻는 질문

JWT를 디코딩하면 서명도 확인되는 건가요?

아닙니다. 디코딩은 Base64URL로 인코딩된 header와 payload를 읽을 수 있는 형태로 바꾸는 것뿐이고, 서명이 진짜인지 확인하려면 발급자의 비밀키(또는 공개키)로 직접 검증해야 합니다. 이 도구는 검증 기능이 없고, 비밀키도 받지 않습니다.

header의 alg 값이 "none"인 토큰을 봤는데 위험한가요?

네, 매우 위험합니다. alg가 none이면 서명 없이도 누구나 원하는 내용으로 토큰을 만들 수 있어서, 서버가 이런 토큰을 그대로 신뢰하면 인증을 우회당할 수 있습니다. 서버 쪽에서 alg none을 명시적으로 거부하고 있는지 확인하세요.

exp(만료 시각)가 지난 토큰을 넣으면 이 도구가 막아주나요?

아니요. 이 도구는 만료 여부를 화면에 표시만 할 뿐, 실제로 그 토큰을 막거나 무효화하지 않습니다. 만료된 토큰의 거부는 그 토큰을 사용하는 서버가 검증 과정에서 처리해야 할 일입니다.

디코딩한 토큰을 다른 사람과 공유해도 괜찮나요?

권장하지 않습니다. JWT의 payload는 암호화된 것이 아니라 Base64URL로 인코딩만 되어 있어서, 이 도구가 없어도 누구나 그대로 읽을 수 있습니다. 이메일·사용자 ID 같은 개인정보나 내부 권한 정보가 들어 있다면 그 내용까지 함께 공유하는 셈입니다.