JWT decoder
Paste a JSON Web Token to read its header and claims, see when it expires and check its signature. The token never leaves your browser.
- Runs in your browser
- Nothing is uploaded
- Free, no sign-up
Paste a token, with or without “Bearer”. It is decoded on this device and never sent anywhere.
How it works
A JSON Web Token is three pieces of text joined by dots: a header, a payload and a signature. The header and payload are JSON written in base64url, a text-safe encoding that anyone can reverse. This page reverses it and shows the JSON, with the usual claims explained: who issued the token (iss), who it is about (sub), who it is for (aud), and the times in exp, nbf and iat as dates.
The signature covers the first two parts exactly. With HS256, HS384 or HS512 it is a keyed hash made with a secret both sides share; with RS, PS, ES and EdDSA algorithms it is made with the issuer's private key and checked with its public key. The page checks it with your browser's built-in Web Crypto, so changing a single character of the token makes the check fail.
Whatever you paste stays in this tab. It isn't saved, it isn't added to the page address, and spell checking is turned off on every field so the browser doesn't send it off for checking. Closing or reloading the page clears it.
Questions
Is it safe to paste a JWT into a website?
Only into one that doesn't send it anywhere. This page decodes the token in your browser: the token and any key you enter are never uploaded, saved or put in the page address. A live token works like a password until it expires, so use an expired or test token when you can.
How do I check whether a JWT has expired?
Paste it here. The exp claim is the expiry time in seconds since 1 January 1970 UTC. The page shows it as a date in your time zone and says whether the token has expired by your device's clock, along with nbf (when it becomes valid) and iat (when it was issued).
Does decoding a JWT verify it?
No. The header and payload are only base64url-encoded, not encrypted, so anyone can read them and anyone can make a token that says anything. Only the signature shows who made it: enter the shared secret for HS256, or the issuer's public key for RS256, ES256 and the others, to check it.
Where do I find the public key to verify a JWT?
Sign-in providers publish their public keys as a JWK set, usually at an address ending in /.well-known/jwks.json. Open that address yourself and paste the whole set: this page picks the key whose ID matches the token's kid header, and never fetches anything itself.
Limits
Signatures can be checked for HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 and EdDSA (Ed25519, in current browsers). ES256K can't be checked, because browsers' built-in cryptography doesn't support its curve. Encrypted tokens (JWE, five parts) can't be read without their private key, so only their header is shown.
The check uses the algorithm named in the token's own header. A server should instead decide which algorithm it accepts, and also check the issuer and audience; this page shows those claims but doesn't judge them. Expiry is compared with this device's clock, with no allowance for clocks that differ.
Keys are never downloaded: if a token points to a key address (jku or x5u), open it yourself and paste the key. The page reads and checks tokens; it doesn't make or sign them.
Privacy
This tool runs entirely in your browser. The files you open and what you type are never sent to a server, and nothing is stored after you close the page. See the privacy page.
Related tools
QR code generator
Make a static QR code for a link or text. It never expires, has no tracking redirect, and downloads as PNG or SVG.
Remove EXIF data and location from photos
See and remove the hidden GPS location, camera details and dates in photos, iPhone HEIC too. Nothing is uploaded, and JPEG, PNG and WebP aren't re-compressed.
Compress an image to a target size
Make a photo fit a size limit, like 50 KB, 100 KB or 1 MB, at the best quality that fits. Works on several images at once, and nothing is uploaded.