Decode a JWT's header and payload, check its expiry and issuer/audience claims, and verify its signature (HS/RS/PS/ES256-512 or EdDSA) -- entirely in your browser, nothing sent to a server. Fast, free, and built for simple browser-based workflows.
Your token is decoded and verified in this browser tab. Nothing you paste here is ever sent anywhere — check your browser's Network tab if you want to confirm.
Paste a JWT above, drop a .txt file, or try the example.
| Claim | Meaning | Value |
|---|
728 x 90 In-Content Ad
JWT Decoder is a free online tool that decodes a JSON Web Token's header and payload, explains what each claim means, and checks the signature when you provide a secret or public key. Paste a token to see it broken down instantly — no account, no upload, and no limit on how many tokens you check.
It earns its keep when a request fails and you need to know why: checking whether an access token already expired, confirming an API gateway rejected the right audience, or reading what claims your authentication provider actually put in a token before you wire up backend code around it. The optional issuer and audience fields let you paste the values your API expects and see an instant pass or fail against the decoded claims, without writing a test script just to check one token.
Everything happens inside this browser tab using the Web Crypto API; the token, the secret, and any public key you paste are never sent to a server, logged, or stored anywhere. That matters for a JWT specifically, since a real one often carries a user's identity and permissions — pasting it into a tool that uploads it is a bigger risk than pasting ordinary text.
Paste a JWT into the JWT to decode box, drop a .txt file onto it, click Open file, or click Try an example to load a sample token.
The header, payload, a claims table, and a status badge (Expired, Not yet valid, Time-valid, or Unsigned) appear immediately below, with any security warnings listed underneath.
Optional: open "More options: verify the signature" and fill in Expected issuer (iss) and Expected audience (aud) to see an instant pass or fail note, independent of signature verification.
Optional: paste the HMAC secret or a public key (SPKI PEM or JWK) and click Verify Signature, or press Ctrl+Enter, to confirm the token is authentic.
Use the Copy button next to Header or Payload to copy just that part, or click Clear to wipe the token, secret, and key together.
Yes! All our tools are 100% free to use with no hidden costs, no registration required, and no credit card needed.
Absolutely. All tools run entirely in your browser (client-side). Your data never leaves your device and is not sent to our servers.
Yes! All our tools are free for both personal and commercial use.
Yes, once the page is loaded, the tool will continue to work even if you lose internet connection since it runs in your browser.
There is no strict character limit, but very large amounts of text (100,000+ characters) may slow down your browser.
No. Decoding only shows you what is inside the token — anyone can read or even forge a payload without a key. This tool shows a permanent reminder next to the result: only a verified signature proves who actually issued the token, so always use the Verify Signature section before trusting a token's contents.
No. Decoding and verifying both run in this browser tab using the Web Crypto API, and nothing you paste — the token, a secret, or a public key — is uploaded, logged, or stored. You can confirm this yourself by opening your browser's Network tab while you use the tool.
Yes. The optional Expected issuer (iss) and Expected audience (aud) fields in the verify section compare your values against the token's decoded claims and show an instant pass or fail note for each, including when aud is an array. This check runs independently of signature verification.
No, and that is intentional. Some competing tools let you generate a shareable link containing your token, which defeats the point of a tool that promises nothing leaves your browser. This tool only ever lets you copy the header or payload text — never a link carrying the token itself.
They flag real attack patterns, not generic advice: an unsigned alg: none token, a jku or x5u header that could point verification at an attacker-controlled key, an embedded jwk header, duplicate claim names that parsers may read inconsistently, and an iat timestamp set in the future. Each warning explains the specific risk.
alg: none marks a token as deliberately unsigned — anyone can edit its payload and it will still "decode" without error. This tool shows an Unsigned badge and a warning telling you never to accept it as proof of anything, since there is no signature for anyone to check.
HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, and EdDSA when your browser's Web Crypto implementation supports it — wider coverage than the competing JWT tools we compared, most of which stop at HS256 or skip ES* and EdDSA entirely.
Most likely an algorithm mismatch: pasting an RSA or EC public key for an HS256 token (or the reverse) is the "algorithm confusion" attack, so this tool refuses instead of silently failing. It also rejects certificates and PKCS#1 keys directly, asking for an SPKI PEM or JWK instead, since Web Crypto cannot import those formats.
If your token has five parts instead of three, it is a JWE (an encrypted token), not a signed JWT — this tool decodes its header, but the payload is encrypted and cannot be read without the decryption key, which the tool does not ask for or handle.
No. The secret and key fields are never written to localStorage or any other storage this tool uses, and Clear wipes the token, secret, and key together. The only setting this tool remembers between visits is whether long lines are wrapped on screen.