JWT 인코더 / 디코더

토큰을 붙여 넣어 헤더와 페이로드를 읽거나 직접 만든 클레임으로 서명하세요. 버튼도, 업로드도 필요 없습니다.

디코딩할 때는 선택 사항이며(입력하면 검증), 서명할 때는 필수입니다.

사용 방법

  1. 토큰을 붙여 넣으면 헤더와 페이로드가 곧바로 나타납니다. 누를 버튼은 없습니다. 토큰에서 온 내용은 서명된 그대로 유지되며 입력이 다시 쓰이지 않습니다.
  2. 입력란 아래에 시크릿을 넣으면 서명을 확인합니다. 비워 두면 “검증되지 않음”일 뿐이며 클레임은 그대로 읽을 수 있습니다.
  3. 인코딩으로 전환해 클레임을 JSON으로 작성하고 HS256/384/512와 시크릿을 고른 뒤 나온 토큰을 복사하세요. 모드를 바꿔도 입력한 내용은 지워지지 않습니다.
  4. 표준 exp / iat / nbf 클레임은 사용자의 언어와 시간대로 풀어서 표시하며, 만료됨과 아직 유효하지 않음 표시도 함께 나옵니다.

예시

토큰

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiSmFuZSBDb29wZXIiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jCqliF6m-TAglXcHrjuXj7kYIjjsRO7kv6_8O1yb_7Q

헤더와 페이로드

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

페이로드
{
  "sub": "u-1024",
  "name": "Jane Cooper",
  "role": "editor",
  "iss": "https://api.example.com",
  "iat": 1767225600,
  "exp": 1798761600
}

시크릿 “dev-secret-change-me”로 서명되었습니다. 시크릿에 입력하면 상태 줄이 “서명이 검증되었습니다”로 바뀝니다. 인코딩으로 전환해 예시를 누르면 같은 페이로드가 나오고, 같은 시크릿으로 이 토큰을 글자 하나까지 똑같이 다시 만듭니다.

규칙, 제한 및 알려진 문제

  • 서명과 검증에는 HS256, HS384, HS512만 지원합니다. RS*, ES*, PS* 토큰은 디코딩해 그대로 보여 주지만 서명은 확인하지 않습니다. 공개 키가 필요하므로 추측하지 않고 상태 줄에 그 사실을 표시합니다.
  • 서명 없는 토큰(alg: none)은 디코딩하고 분명히 표시하지만 생성하지는 않습니다. 시크릿 없이 서명을 요청하면 서명 없는 토큰 대신 오류가 납니다.
  • 인코딩은 헤더를 직접 만듭니다(`{"alg": … ,"typ": "JWT"}`). kid, jku, x5c, cty 같은 헤더 필드는 옮기지 않습니다. 이 도구는 인증서 체인이 아니라 클레임에 서명합니다.
  • 클레임 JSON은 서명 전에 압축 형태로 다시 직렬화하므로 들여쓰기와 주석은 토큰에 들어가지 않습니다. 키 순서는 JavaScript 객체를 따르며 중복 키는 마지막 값으로 합쳐지고 숫자처럼 보이는 키는 앞으로 이동합니다.
  • 아주 큰 정수는 정밀도를 잃습니다. `12345678901234567890`은 JavaScript 숫자의 한계로 반올림됩니다. 조용히 보정하지 않으므로 정확한 자릿수가 중요하면 문자열을 사용하세요.
  • 클레임은 읽기 쉽게 들여쓰기해 보여 주지만 서명은 토큰에 있는 원본 세그먼트를 그대로 대상으로 합니다. 몰래 다시 인코딩하지 않으므로 여기서 검증되는 토큰은 직접 작성한 코드에서도 검증됩니다.
  • Base64url은 엄격하게 처리합니다. `+`, `/`, `=`는 조용히 받아들이지 않고 오류로 알리며, UTF-8이 아닌 바이트는 대체 문자로 바꾸지 않고 알립니다. 붙여 넣은 토큰 안의 공백은 토큰에 원래 없으므로 무시합니다.
  • 암호화된 JWE(5개 부분)는 복호화하지 않으며, 붙여 넣은 것이 JWE라고 알려 드립니다.
  • 크기 제한은 1만 자입니다. 아무것도 업로드, 저장, URL 기록, 공유되지 않습니다. 공유 버튼은 이 페이지 주소만 공유하며 토큰이나 시크릿은 절대 공유하지 않습니다.

클레임을 확인한 뒤 보통 이어지는 작업입니다.