1
OneClickUse
Converters Tool

Decode JWT Token Online Safely

Decode JWT headers and payloads locally in your browser, inspect claims, and verify HMAC signatures when you have the secret.

Runs locally in your browser
Privacy-first workflows
Fast and simple
100% Free, no signup
Registered claims
Algorithm: HS256
Issued at: 1/18/2018, 1:30:22 AM (2018-01-18T01:30:22.000Z)
Not before: —
Expires: 1/1/2031, 2:13:19 AM (2031-01-01T02:13:19.000Z)

Written by Anil Gautam · Updated

How do you read a JWT's claims and dates?

A signed JWT is three base64url strings joined by dots: header, payload and signature. The debugger splits the token at the dots and decodes the first two parts as UTF-8 JSON. Base64url is an encoding, so anyone holding a token can read its claims this way; only the signature depends on a key. A token with five parts is an encrypted JWE and stops with "JWT must have 3 parts: header.payload.signature". If you copied the value from an Authorization header, delete the "Bearer " prefix first, or the header part will not decode.

The Registered claims card turns iat (issued at), nbf (not before) and exp (expires) from Unix seconds into your local time, followed by the UTC time in ISO format. A payload with "iat": 1790000000 and "exp": 1790003600 shows an issue time of 2026-09-21T14:13:20.000Z and an expiry 3,600 seconds later, at 15:13:20 UTC. The tool does not compare these times with the current clock, so judge expiry yourself. If Expires shows a year such as 58692, the server wrote milliseconds where the standard expects seconds. Claims such as iss, sub and aud appear only in the Decoded Payload box, and the Unix Timestamp Converter turns any other timestamp claim into a date.

Why does a JWT signature fail to verify?

Verify signature uses the browser's Web Crypto API, so the token and the secret stay on your device. It signs the first two parts, exactly as they appear in the token, with HMAC using SHA-256, SHA-384 or SHA-512 according to the alg field (HS256, HS384 or HS512), encodes the result as base64url and compares it with the third part.

The secret is used exactly as typed, as UTF-8 text. A trailing space picked up while copying gives "Signature does not match" even when the key is right. Some systems store the key base64-encoded and decode it before signing, and in that case the encoded text you paste is a different key. Tokens signed with RS256, ES256 or another public-key algorithm, and unsigned tokens with alg none, get "Only HMAC JWTs can be verified in this tool right now". Editing the token clears the last result, so press Verify signature again after any change. The secret box shows the key in plain text, so avoid typing a production secret on a shared screen.

How it works

How to debug a JWT

STEP 01
Paste the encoded JWT token.
STEP 02
Inspect the decoded header, payload, and registered claims.
STEP 03
Enter the HMAC secret if you need to verify HS signatures.
Learn more

Related guides

You might also need

Related tools

Converters
Base64 Encode/Decode
Encode text to Base64 or decode Base64 back to readable text.
Use now
Converters
URL Encode/Decode
Encode URLs for query strings or decode percent-encoded URL text.
Use now
Converters
JSON Formatter & Viewer Online
Format and validate JSON, explore a collapsible tree, search keys and values, compare structures, and export conversions. Your JSON stays in your browser.
Use now
Converters
CSV to JSON
Convert simple CSV rows into JSON objects using the first row as headers.
Use now
Converters
JSON to CSV
Convert an array of JSON objects into CSV rows with headers.
Use now
Converters
RGB to HEX Converter
Convert HEX colors to RGB or RGB colors back to HEX.
Use now
FAQ

Common questions