JWT Decoder

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.

Instant
Processing
Private
Browser First
Free
No Signup

JWT Decoder

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.


    

Go to error

Header

        
Payload

        
Signature (raw, base64url)
—
Claims
ClaimMeaningValue
Security warnings
    More options: verify the signature
    or Ctrl+Enter

    Advertisement

    728 x 90 In-Content Ad

    About This Tool

    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.

    Decodes the header and payload instantly as you type, with no button to click
    Explains common claims like iss, sub, aud, exp, nbf, and iat in plain language, not just raw JSON
    Flags expired and not-yet-valid tokens automatically, including the exp-in-milliseconds mistake
    Verifies signatures for HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512, and EdDSA using the Web Crypto API
    Warns about alg: none, jku/x5u key-injection risks, and refuses algorithm-confusion attacks automatically
    Checks a token's issuer and audience against the values your API expects, independent of signature verification

    How to Use JWT Decoder

    1

    Paste or load your token

    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.

    2

    Read the decoded result

    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.

    3

    Check claims against your API

    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.

    4

    Verify the signature

    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.

    5

    Copy or clear

    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.

    Frequently Asked Questions

    Is this tool completely free?

    Yes! All our tools are 100% free to use with no hidden costs, no registration required, and no credit card needed.

    Is my data safe and private?

    Absolutely. All tools run entirely in your browser (client-side). Your data never leaves your device and is not sent to our servers.

    Can I use this for commercial projects?

    Yes! All our tools are free for both personal and commercial use.

    Can I use this tool offline?

    Yes, once the page is loaded, the tool will continue to work even if you lose internet connection since it runs in your browser.

    Is there a character limit?

    There is no strict character limit, but very large amounts of text (100,000+ characters) may slow down your browser.

    Does decoding a JWT prove it is valid?

    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.

    Does any part of my token ever get sent to a server?

    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.

    Can I check whether a token matches the issuer and audience my API expects?

    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.

    Can I share a decoded token with a link, like some other JWT tools?

    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.

    What do the security warnings under a decoded token mean?

    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.

    What does alg: none mean, and why is it flagged?

    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.

    Which signature algorithms can this tool verify?

    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.

    Why did the tool refuse to verify my token with the key I pasted?

    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.

    Why can't I see the payload of my token?

    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.

    Is my HMAC secret or public key ever saved anywhere?

    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.