JWT 디코더
브라우저 안에서만 처리됩니다. 입력한 내용과 선택한 파일은 서버로 전송되지 않습니다.
디코딩은 복호화가 아닙니다. JWT 의 내용은 암호화된 것이 아니라 base64url 로 인코딩된 것뿐이라 토큰을 가진 누구나 읽을 수 있습니다 — 토큰에 비밀을 담으면 안 됩니다. 이 도구는 서명을 검증하지 않습니다(비밀 키가 필요하고, 그 키를 웹페이지에 붙여넣게 만드는 것 자체가 위험합니다). 아래 판정은 시각만 보고 한 것입니다.
결과
토큰을 붙여넣으면 내용을 보여줍니다.
사용법
- JWT 를 붙여넣습니다. Authorization 헤더에서 복사한 "Bearer …" 형태도 그대로 됩니다.
- 만료 여부를 먼저 보여줍니다. 시각 클레임(iat · nbf · exp)은 사람이 읽는 날짜와 "몇 분 전/뒤"로 함께 표시합니다.
- 나머지 클레임을 표로 확인하고, 헤더·페이로드 JSON 을 복사합니다.
자주 묻는 질문
서명도 검증해 주나요?
하지 않습니다. 검증하려면 비밀 키(HS256) 나 공개 키(RS256) 가 필요하고, 비밀 키를 웹페이지에 붙여넣게 만드는 것 자체가 위험합니다. 그래서 이 도구는 "안에 무엇이 들었는지"만 보여줍니다. 만료·발급자·권한은 서명과 무관하게 읽을 수 있고, 실무에서 확인하고 싶은 것은 대개 그쪽입니다.
토큰 내용이 암호화되어 있는 건가요?
아닙니다. JWT 의 헤더와 페이로드는 base64url 로 인코딩된 것뿐이라 토큰을 가진 누구나 읽을 수 있습니다. 디코딩은 복호화가 아닙니다. 그래서 토큰에 비밀번호나 개인정보를 담으면 안 됩니다 — 서명은 "내용이 바뀌지 않았음"만 보장하고 "내용을 숨김"은 보장하지 않습니다.
만료 시각이 1970년이나 먼 미래로 나옵니다.
exp 는 초 단위 유닉스 시각입니다. 밀리초를 넣는 구현이 있는데 그러면 5만 년 뒤가 되고, 반대로 초를 밀리초로 해석하면 1970년이 됩니다. 이 도구는 규격대로 초로 읽으므로, 이상하게 나온다면 토큰을 만든 쪽이 규격을 어긴 것입니다.
"만료 정보 없음" 은 무슨 뜻인가요?
exp 클레임이 아예 없다는 뜻입니다. "만료되지 않는다"는 뜻이 아닙니다 — 서버가 별도 규칙(발급 후 N분, 세션 저장소 조회)으로 유효 기간을 관리할 수 있습니다. 시각만 보고는 알 수 없어서 단정하지 않습니다.
nbf 는 무엇인가요?
not before — 이 시각 전에는 쓸 수 없다는 뜻입니다. 미리 발급해 두고 나중에 유효해지게 할 때 씁니다. 아직 안 됐으면 "아직 유효 시작 전"으로 표시합니다.
점으로 나뉜 조각이 2개라고 나옵니다.
JWT 는 header.payload.signature 세 조각입니다. 서명이 없는 토큰(alg=none)은 세 번째 조각이 비어 있고, 그래도 점은 두 개여야 합니다 — 끝에 점을 하나 더 붙여 보세요.
토큰이 서버로 전송되나요?
전송되지 않습니다. 붙여넣은 토큰은 브라우저 안에서만 디코딩되고 새로고침하면 사라집니다. 액세스 토큰은 그 자체가 인증 수단이라 외부로 보내면 안 되는 값이고, 그래서 이 도구는 클라이언트에서만 동작합니다. 네트워크를 끊고도 됩니다.