🔑 JWT 디코더

JSON 웹 토큰 디코딩 - 헤더, 페이로드, 만료 확인

✓ 영구 무료 · ✓ 가입 불필요 · ✓ 업로드 없음 · ✓ 오프라인 작동

🔒 데이터가 기기 밖으로 나가지 않아요. 모든 처리는 JavaScript Base64 디코딩를 사용하여 브라우저에서 로컬로 이루어져요. 업로드, 서버, 추적이 없어요.

기능

  • 토큰 전체 확인 — 어떤 JWT 토큰이든 헤더, 페이로드, 서명을 디코딩해서 보여줘요.
  • 만료 확인 — 발급 시각, 유효 시작, 만료 시각을 내 시간대의 날짜로 보여 주고 유효/만료/아직 유효하지 않음을 실시간으로 카운트다운합니다.
  • 클레임 표시 — 모든 클레임을 토큰에 쓰인 그대로 표시합니다. 긴 숫자 ID도 자릿수가 그대로이고, 중복된 키는 알려 줍니다.
  • 완전 오프라인 — 디코딩은 브라우저에서 이루어져요. 토큰은 어떤 서버로도 전송되지 않아요.

작동 방식

  1. JWT 붙여 넣기 — 입력란에 JSON Web Token을 붙여 넣으세요.
  2. 디코딩된 내용 확인 — 헤더(알고리즘, 타입), 페이로드(클레임, 타임스탬프), 서명을 확인하세요.
  3. 만료 확인 — 토큰이 아직 유효한지, 만료됐는지 확인하세요.

활용 사례

  • JWT 클레임을 확인해 인증 문제 디버깅하기
  • 토큰이 언제 만료되거나 유효해지는지, 누가 발급했는지 확인
  • API 개발·테스트 중에 토큰 살펴보기
  • 실제 토큰을 뜯어보며 JWT 구조 익히기

자주 묻는 질문

JWT 서명을 검증하나요?

아니요. 토큰을 디코딩해 무엇을 주장하는지 보여 줄 뿐 서명은 확인하지 않으며, 모든 토큰 아래에 그렇게 표시됩니다. 검증에는 발급자의 비밀 키나 공개 키가 필요하고 서버에서 해야 합니다. 깔끔하게 디코딩됐다고 토큰 내용을 믿지 마세요.

여기에 JWT를 붙여 넣어도 안전한가요?

토큰은 이 탭의 JavaScript로 디코딩되며 어디로도 전송되거나 저장되지 않습니다. Network 탭을 열고 붙여 넣어도 요청이 없다는 걸 확인할 수 있습니다. 그래도 유효한 토큰은 비밀번호와 같으니, 가능하면 테스트용이나 만료된 토큰을 쓰세요.

어떤 JWT 형식을 지원하나요?

일반적인 세 부분 header.payload.signature 형태의 서명된 JWT(JWS)이며, 서명이 없는 alg "none" 토큰도 포함합니다. "Authorization: Bearer …" 줄 전체, 따옴표로 감싼 문자열, 여러 줄로 나뉜 토큰도 붙여 넣을 수 있습니다. 불필요한 부분은 제거하고 무엇을 제거했는지 알려 줍니다. 암호화된 토큰(JWE, 다섯 부분)은 수신자의 키 없이는 읽을 수 없으며, 붙여 넣으면 그렇게 알려 줍니다.

다른 디코더는 12345678901234567000인데 여기서는 왜 12345678901234567890인가요?

토큰에 그렇게 쓰여 있기 때문입니다. JavaScript 숫자는 약 16자리까지만 정확하므로, JSON을 파싱했다가 다시 출력하는 디코더는 긴 ID를 바꾸고 1.10을 1.1로 만들며 중복된 키를 버립니다. 여기서는 토큰 자체의 텍스트를 들여쓰기만 다시 할 뿐 아무것도 바꾸지 않습니다.

iat, nbf, exp는 무슨 뜻인가요?

각각 발급 시각, 유효 시작, 만료 시각이며 1970년 1월 1일(UTC)부터의 초입니다. 내 시간대의 날짜로 보여 주고 실시간으로 카운트다운합니다. 밀리초 값은 라이브러리가 수천 년 뒤의 날짜로 읽기 때문에 따로 표시합니다.

블로그 가이드

관련 도구

💬 버그, 아이디어, 아니면 그냥 인사? Milo 🐨 에게 알리기 · [email protected]