JoyToolsJoyTools

JWT Decoder

100% Client-Side Private — Zero Server Uploads

Decode and inspect JSON Web Tokens. View header, payload, signature, and expiration status.

🔒 100% Client-Side: All data is processed locally in your browser and never leaves your device (Zero Server Uploads).
E-E-A-T Security Proof →
JWT Decoder
100% Client-Side Private — Zero Server Uploads

Decode and inspect JSON Web Tokens. View header, payload, and expiration status.

Token is VALID (not expired)
HEADER
{
  "alg": "HS256",
  "typ": "JWT"
}
PAYLOAD
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
SIGNATURE

SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Share & Developer Embed

How do I use JWT Decoder?

1

Paste your `eyJ...` JSON Web Token into the input box or click 'Sample JWT' to load a realistic token.

2

Inspect the decoded JOSE Header (`alg`, `typ`, `kid`) and Payload claims (`sub`, `iat`, `exp`, `roles`) side by side.

3

Check the live Expiration Status badge to verify whether the `exp` timestamp is currently valid or expired.

What features does JWT Decoder offer?

Decode JWT header, payload, and signature

Token expiration status badge & human-readable timestamps

Formatted JSON payload tree viewer

100% private in-browser decoding — zero token transmission

RFC 7519 JSON Web Token Structure & Registered Claims

A compact JWT consists of three Base64URL-encoded segments separated by dots (`Header.Payload.Signature`). The header and payload are plaintext JSON—only the signature requires a cryptographic key.

RFC 7519 JWT Segments & Standard Registered Claims
JWT Segment / ClaimJSON KeyData TypeRFC 7519 Specification Purpose
JOSE Headeralg, typ, kidObjectDeclares signing algorithm (HS256, RS256, ES256) & key ID
Subject & Issuersub, iss, audString / ArrayIdentifies principal user ID, issuing auth server, and audience
Expiration TimeexpNumericDate (Unix sec)Unix epoch second after which the token MUST be rejected
Issued At / Not Beforeiat, nbfNumericDate (Unix sec)Token issue timestamp and earliest valid activation time

Frequently Asked Questions about JWT Decoder

Why can this tool decode my JWT payload without knowing my secret key?

A standard JWS token (`eyJ...`) is signed, not encrypted. The Header and Payload segments are simply Base64URL-encoded JSON strings (RFC 7519) so any client can read them. The secret or private key is only used to compute and verify the third segment (the Signature).

What is the difference between decoding a JWT and verifying a JWT signature?

Decoding Base64URL-parses the payload so you can inspect claims during debugging, but it does not prove the token wasn't tampered with. Backend servers must always verify the cryptographic signature (`HS256`, `RS256`, `ES256`) before trusting any claim.

What is the JWT `alg: none` vulnerability?

Early JWT libraries allowed attackers to change the header to `{"alg":"none"}` and strip the signature to bypass verification. Modern production verifiers explicitly whitelist expected algorithms (such as `RS256`) and reject `none`.

Is my production Bearer JWT transmitted over the network when I paste it here?

Never. Base64URL decoding and `exp` timestamp comparison execute 100% locally in your browser's JavaScript runtime—your session tokens never leave your tab.