JWT 인코더 / 디코더
토큰을 붙여 넣어 헤더와 페이로드를 읽거나 직접 만든 클레임으로 서명하세요. 버튼도, 업로드도 필요 없습니다.
디코딩할 때는 선택 사항이며(입력하면 검증), 서명할 때는 필수입니다.
서명:
토큰
헤더
페이로드
사용 방법
- 토큰을 붙여 넣으면 헤더와 페이로드가 곧바로 나타납니다. 누를 버튼은 없습니다. 토큰에서 온 내용은 서명된 그대로 유지되며 입력이 다시 쓰이지 않습니다.
- 입력란 아래에 시크릿을 넣으면 서명을 확인합니다. 비워 두면 “검증되지 않음”일 뿐이며 클레임은 그대로 읽을 수 있습니다.
- 인코딩으로 전환해 클레임을 JSON으로 작성하고 HS256/384/512와 시크릿을 고른 뒤 나온 토큰을 복사하세요. 모드를 바꿔도 입력한 내용은 지워지지 않습니다.
- 표준 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 기록, 공유되지 않습니다. 공유 버튼은 이 페이지 주소만 공유하며 토큰이나 시크릿은 절대 공유하지 않습니다.
관련 도구
클레임을 확인한 뒤 보통 이어지는 작업입니다.