iLoveDocsTools
All ToolsVerify & Decode JWT

Verify & Decode JWT

Decode JWT tokens to inspect header and payload. Optionally verify HS256 signatures with a secret key.

?

FREE

Loading…

Go Pro ↑
Your files never leave your device. All processing happens locally in your browser — nothing is uploaded to our servers.Files are never stored on our servers · No tracking of your file contentsPrivacy Policy

What is Verify & Decode JWT?

Verify & Decode JWT is a free online tool that decodes a JSON Web Token into its three constituent parts — header, payload, and signature — and displays each in a clearly separated, color-coded, pretty-printed view. It also checks the exp (expiration) claim against the current time and, when you supply the signing secret, cryptographically verifies an HS256 signature using the browser's native SubtleCrypto API.

A JWT is three Base64URL-encoded segments joined by dots: a header describing the signing algorithm and token type, a payload holding the actual claims (who the token represents, what it grants, when it expires), and a signature that binds the first two segments together so any tampering can be detected. The critical thing to understand about the first two segments is that Base64URL encoding is not encryption — it is a reversible text encoding, the same category of transformation as Base64 or URL-encoding, with no secret key involved in reading it. Anyone holding a JWT, including a browser extension, a network proxy, or a curious user opening devtools, can decode the header and payload and read every claim inside without knowing anything about how the token was signed. This is precisely why JWTs should never carry passwords, raw credit card numbers, or other genuinely secret data in their payload — only the signature is protected, never the content.

The signature is what actually matters for trust. It proves the token was issued by whoever holds the corresponding signing key and that the header and payload have not been altered since — decoding alone tells you nothing about whether a token is genuine, only what it claims to say. This distinction trips up a surprising number of implementations: code that decodes a JWT to read a user ID but never calls the actual verify function is trusting user-controlled input as if it were authenticated, because a payload can be freely edited and re-encoded by anyone, and only signature verification catches that the resulting token no longer matches what was originally signed.

JWTs use two broad signing approaches. HS256 (HMAC-SHA256) is symmetric — the exact same secret string is used both to sign the token and to verify it, so anyone who can verify a token could also forge one, which makes it appropriate mainly for single-service, first-party use where the signer and verifier are the same system. RS256 and ES256 are asymmetric — the token is signed with a private key that never leaves the issuing server, and verified anywhere using only the corresponding public key, which is why they are preferred whenever multiple independent services need to verify tokens issued by one central authority without being able to forge new ones themselves. This tool implements the interactive verify path for HS256 specifically, since that is the common case for testing tokens issued by your own backend where you already hold the shared secret.

Beyond the signature itself, several standard claims are worth checking manually every time: exp (expiration, a Unix timestamp after which the token must be rejected), iat (issued-at time), nbf (not-before, a time before which the token is not yet valid), iss (issuer), aud (intended audience), and sub (subject, typically the user ID). This tool automatically checks exp against your current system time and reports the token as valid or expired, but every other claim should be reviewed manually against what your application expects, since a syntactically valid, correctly signed token can still carry claims that do not authorize the specific action being attempted.

How It Works

The token is split on its two dot separators into header, payload, and signature segments. The header and payload segments are Base64URL-decoded (converting the URL-safe alphabet back to standard Base64, restoring padding, and running the result through atob) and then parsed as JSON for display. If a payload contains an exp claim, that Unix timestamp is compared against Date.now() to report the token as currently valid or expired. When a secret is supplied for verification, the tool uses the browser's native SubtleCrypto API to import the secret as a raw HMAC key configured for SHA-256, computes an HMAC signature over the exact original header.payload string (not the decoded JSON, since re-encoding could produce different bytes), Base64URL-encodes that computed signature, and compares it directly against the signature segment from the token — a match confirms the token was signed with that exact secret and has not been altered since.

How to Use

  1. 1

    Paste your JWT

    Paste the complete token — all three dot-separated segments: header.payload.signature — into the token field.

  2. 2

    Decode

    Click "Decode JWT" to instantly see the parsed header, payload, and raw signature, plus an automatic valid/expired status if the payload includes an exp claim.

  3. 3

    Review the claims

    Check the decoded payload for the specific claims your application cares about — sub, iss, aud, iat, and any custom claims — not just the automatic expiry check.

  4. 4

    Enter the signing secret

    If you need to confirm the token is genuine and not just well-formed, enter the HS256 secret used by the issuing server into the secret field.

  5. 5

    Verify the signature

    Click "Verify Signature" to have the tool recompute the expected HMAC-SHA256 signature and compare it against the token's actual signature.

  6. 6

    Act on the result

    Treat a VALID signature with an unexpired exp as trustworthy for your testing purposes; treat any INVALID result, or a missing check entirely, as proof the token cannot be trusted as-is.

Who Uses This Tool

🔍

Debugging Auth Issues

Paste a JWT from a failing request to instantly see its claims and verify whether the token has expired.

🧪

Testing Token Contents

Inspect the payload of tokens generated by your auth server to confirm custom claims are included correctly.

🔐

Signature Verification

Confirm that a token was signed with the correct secret key before trusting its claims in a staging environment.

📚

Security Education

Demonstrate to developers that JWT payloads are readable without a secret to teach safe token handling practices.

Expiry Inspection

Check the exp claim and see a human-readable expiry time and validity status to diagnose session timeout bugs.

🛠️

Third-Party Token Audit

Decode tokens received from external OAuth providers to verify the structure matches your expected schema.

Why Choose This Tool

No Secret Required to Decode

Header and payload are decoded instantly from any JWT without needing the signing secret, for quick inspection.

Expiry Status Indicator

Displays a clear valid or expired badge based on the exp claim so you can diagnose session issues at a glance.

Optional Signature Verification

Provide the HMAC secret to verify the signature cryptographically and confirm the token was not tampered with.

Color-Coded Sections

Header, payload, and signature are each rendered in a distinct color for easy visual separation.

Formatted JSON Output

Decoded header and payload are pretty-printed as JSON so nested claims are easy to read and copy.

Completely Private

All decoding and verification runs in your browser — your token and secret never leave your device.

Key Benefits

  • Decodes header and payload instantly with no secret required
  • Automatic expiry check against your current system time (valid or expired)
  • Optional cryptographic HS256 signature verification using SubtleCrypto
  • Color-coded header, payload, and signature sections for fast visual scanning
  • Pretty-printed JSON output with individual copy buttons per section
  • Uses the exact original encoded segments for verification, avoiding re-encoding mismatches
  • No token, secret, or claim data is ever sent to a server
  • Works on tokens from any HS256-signing backend — Node, Python, Java, PHP, and more

Frequently Asked Questions

Also Known As

jwt decoder online freedecode jwt token onlineverify jwt signature onlinejwt inspector browser baseddecode json web token payloadonline jwt viewer toolcheck jwt expiry onlinejwt verifier no login required

Trusted Worldwide

Free Online Document Tools for Everyone

iLoveDocsTools is used by students, professionals, and businesses across the United States, Canada, United Kingdom, Australia, India, and more than 100 other countries. All tools are browser-based and process files privately — your files never leave your device. Free to use, with Pro plans for unlimited access.

No Upload Required

All processing happens directly in your browser. Your documents are never sent to any server — complete privacy guaranteed for users in the USA, Canada, UK, and worldwide.

Free to Use — Pro Plans Available

Every tool on iLoveDocsTools is free to use. Need more? Upgrade to Pro for unlimited usage, priority access, and no daily limits. Trusted by students, freelancers, and teams across North America and Europe.

Works on Any Device

Whether you are on a Mac, Windows PC, iPhone, or Android in New York, Toronto, London, or Sydney — our tools work instantly in any modern browser.

Looking for free PDF tools in the USA? Free document converters in Canada? Online PDF editors in the UK or Australia? iLoveDocsTools offers 70+ free tools — merge PDF, split PDF, compress PDF, convert Word to PDF, Excel to PDF, JPG to PDF, and many more — all free, all instant, all private. No watermarks. No file size limits. Just free tools that work.