JWT Decoder
Decode and inspect JSON Web Token headers and payloads.
JWT Decoder — Paste a JWT to instantly see its decoded header and payload, with the iat, nbf and exp time claims rendered as readable dates and a live expired/valid badge. Decoding happens entirely in your browser, so tokens are never sent anywhere — but remember the signature is not verified here, so never trust a payload until it is validated server-side.
What is JWT Decoder?
JWT Decoder is a free online tool that decodes and inspects JSON Web Tokens (JWT) so developers can read the contents of an access token, ID token, or bearer token without guessing. Paste a token in the standard header.payload.signature format and it base64url-decodes the header and payload, pretty-prints both as formatted JSON, and renders the iat, nbf, and exp time claims as human-readable dates with a live expired/valid badge. It is built for backend and frontend engineers, QA testers, and API integrators debugging authentication flows, OAuth/OIDC sessions, or token expiry issues. Note that this is a decoder, not a verifier — it does not check the signature, so it is for inspection only.
How to use JWT Decoder
- Copy your JWT (header.payload.signature) from your app, browser dev tools, or an Authorization: Bearer header.
- Paste it into the 'JWT token' text area.
- Read the decoded, pretty-printed JSON in the Header and Payload sections below the input.
- If the payload includes iat, nbf, or exp, check the Issued (iat), Not before (nbf), and Expires (exp) stat cards and the expired/valid badge to see the token's lifetime.
- Use the Copy button on the Header or Payload to copy the formatted JSON, or click Clear to reset the input.
Examples
Decode a JWT header
Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0In0.sig
Output
{
"alg": "HS256",
"typ": "JWT"
}The Header section shows the decoded, pretty-printed JSON for the first segment.
Read expiry claims
Paste a token whose payload contains exp/iat/nbf. The tool converts each epoch-second claim to a readable local date and shows a green 'valid' or red 'expired' badge next to the Expires (exp) value, refreshed every second.
Malformed token
Input
not-a-jwt
Output
Malformed token — expected header.payload.signature
A string without at least a header and payload segment (no dot separators) triggers this error instead of decoding.
Frequently asked questions
- Does this tool verify the JWT signature?
- No. It only decodes and displays the header and payload — it does not verify the signature. Never trust a decoded payload until the signature is validated server-side; treat the output as inspection only.
- What token format does it expect?
- A standard JWT with at least a header.payload section (header.payload.signature). It splits on the dots and base64url-decodes the first two segments, so the signature part is ignored during decoding.
- Which time claims does it show?
- It surfaces the standard numeric epoch-second claims iat (issued at), nbf (not before), and exp (expires), formatting each as a readable local date. It flags expired tokens and warns when a token is not valid yet because nbf is in the future. Stat cards only appear when at least one of these claims is present.
- Is my token uploaded or sent anywhere?
- No. Everything runs entirely client-side in your browser using built-in base64 and JSON decoding — your token is never uploaded to any server, which makes it safe to inspect sensitive access tokens.
- Why do I get an error on a valid-looking token?
- If the input has fewer than two segments or the header/payload is empty you'll see a 'Malformed token' message, and if a segment is not valid base64url-encoded JSON you'll see an 'invalid' error. Make sure you pasted the full token without extra whitespace or surrounding quotes.
Related tools
Base32 / Base58 Encode / Decode
Encode text to Base32 (RFC 4648) or Base58 (the Bitcoin alphabet) and decode either one back to text, fully UTF-8 safe and entirely in your browser.
Base64 Encode / Decode
Encode text to Base64 or decode Base64 back to text (UTF-8 safe).
Case Converter & Counter
Change text case and count characters, words and lines.
Code Formatter & Minifier
Beautify or minify HTML, CSS and JavaScript instantly in your browser, with 2-space, 4-space or tab indentation and Terser-powered JavaScript compression.