Silixen Logo
Silixen
HomeAll ToolsCategoriesAboutAI Studio
Get Started
Silixen Logo
Silixen

Free online tools for everyone. Simple, fast, and always accessible directly from your browser.

Categories

  • Image Tools
  • PDF Tools
  • Calculators
  • SEO & Marketing
  • Developer Tools
  • Text & AI Writing
  • Design Tools
  • Social Media Tools

Useful Links

  • Home
  • All Tools
  • About
  • AI Studio
  • Contact
  • Privacy Policy
  • Terms of Service

Stay Updated

Get notified about new tools and updates. Zero spam, ever.

© 2026 Silixen. All rights reserved.

Built withfor a better web.

Silixen Logo
Silixen
HomeAll ToolsCategoriesAboutAI Studio
Get Started
  1. Home
  2. Developer Tools
  3. JWT Decoder & Verifier

JWT Decoder — Read Any Token, Verify Its Signature

Paste a JSON Web Token and see everything inside it: header, claims with their dates converted to plain language, a live countdown to expiry, and a security review that flags alg "none", signature-length mismatches and tokens that never expire. Then do the step most decoders skip — actually verify the signature, with an HMAC secret or the issuer's public key (PEM, JWK or JWKS), entirely in your browser via Web Crypto. Decoded is not the same as trusted, and this tool never pretends otherwise: the verification state is always on screen.

100% Client-Side PrivacyZero Installation

Decoded ≠ trusted. Decoding only *reads* a token — anyone can read any JWT. A token earns trust only when its signature verifies, below, against the issuer's key.

Nothing leaves this tab. Decoding and verification run in your browser via Web Crypto. No token, secret or key is transmitted or stored — open DevTools → Network and check while you work.

0 chars
Try a sample:

How to Use

  1. 1Paste the token (a leading "Bearer " and stray line breaks are handled). Decoding is instant and entirely local.
  2. 2Read the header and payload, then the claims table: registered claims explained, dates shown in your time and UTC, with status chips and a countdown to exp.
  3. 3Check the security review — algorithm risks, signature byte-length, missing or distant expiry, and clock-skew warnings.
  4. 4Verify the signature: enter the shared secret for HS tokens (mind the plain/Base64/Base64URL format), or paste the issuer's public key as PEM, JWK or JWKS for RS/PS/ES tokens.
  5. 5Keep debugging: edit the claims and re-encode to watch the signature break, diff this token against a second one, or download the audit report as JSON.

Key Features

  • ✓

    Real signature verification — HS, RS, PS and ES, in your browser

    Most decoders stop at reading the token. This one verifies it: HS256/384/512 against a shared secret (entered as plain text, Base64 or Base64URL — the format mix-up is the #1 cause of false failures), and RS256/384/512, PS256/384/512 and ES256/384/512 against the issuer's public key, pasted as a PEM, a single JWK or a whole JWKS set, with the right key picked by the token's kid header. All of it runs through the Web Crypto API in this tab; no key you paste is transmitted anywhere. And the state is never fudged: unverified says unverified, failed says failed, and a verified-but-expired token is called out as both.

  • ✓

    Error messages that point at the exact character

    When a token will not decode, "invalid token" is not a diagnosis. This decoder validates every segment against the Base64URL rules and reports the first broken one with the segment name, the character position and the rule: the stray "!" at character 13 of the payload, the '=' padding stranded in the middle, the segment whose length is 1 mod 4 and therefore mathematically impossible — the signature symptom of a truncated copy-paste. A caret diagram shows you the spot. This is the feature you will use most, because malformed pastes are what debugging actually consists of.

  • ✓

    Claims translated into dates, deadlines and plain language

    exp, iat and nbf are shown as real dates in your local time and in UTC, with a live relative phrase and a ticking countdown to expiry. Every registered claim — iss, sub, aud, exp, nbf, iat, jti, auth_time — carries a plain-language explanation of what it means and what your server should check it against. The timing panel also shows your own device's clock next to the token's, because a surprising share of "this token is broken" reports are really "this laptop's clock is wrong", and the page says so when the token's iat sits in your future.

  • ✓

    A security review that reads the token like an attacker

    Beyond decoding, the tool audits what it found: alg "none" flagged as critical; an empty signature wearing a signed header; a signature whose byte length does not match its algorithm (truncated, or the header lies about how it was signed); the HS↔RS confusion risk explained when a token from a public provider turns out to be HMAC; tokens with no expiry, and tokens whose lifetime runs to months. These are the checks a senior engineer runs by eye — automated, and written in language a junior can act on.

  • ✓

    Edit, re-encode, compare — the full debugging loop

    Load the token into the editor, change a claim, and re-encode it to watch the signature break — the most convincing demonstration there is of what signing does. HS tokens can be re-signed with a secret; asymmetric tokens re-encode unsigned, with the reason stated (private keys never belong in a web page). The compare view diffs two tokens claim by claim — added, removed, changed — which turns "what did the refresh actually change?" from a squinting exercise into a table. A JSON audit report of the whole inspection downloads in one click.

  • ✓

    Samples that teach, including a broken one on purpose

    Five one-click samples cover the situations that matter: a valid HS256 token you can genuinely verify with the demo secret printed beside it (then deliberately fail with a wrong one); a valid RS256 token whose public key is supplied, like a real JWKS; an expired token whose signature still verifies, proving the two checks are independent; a token with alg "none"; and a deliberately malformed token whose error message demonstrates the positioned diagnostics. Nothing here is a screenshot of a feature — every sample exercises the real code path.

Got Questions?

Frequently Asked Questions

Is it safe to paste a JWT into an online decoder?
On this page, the token never leaves your browser: decoding and verification run locally through the Web Crypto API, with no network request carrying your token, secret or key — open the DevTools Network tab and confirm it while you work. As general practice, still treat JWTs as credentials: a token is readable by anyone who holds it, so prefer test tokens over live production ones where you can, and never paste a private key anywhere (this tool refuses one if you try).
Can this tool verify a JWT signature?
Yes — genuinely, in your browser. For HS256/HS384/HS512, enter the shared secret and its format (plain text, Base64 or Base64URL). For RS256/384/512, PS256/384/512 and ES256/384/512, paste the issuer's public key as a PEM (SPKI or PKCS#1), a single JWK, or a full JWKS set — the key matching the token's kid header is selected automatically. The verdict is explicit: verified, failed, or not attempted. Only a verified signature means the claims are exactly what the key holder signed.
What is the difference between decoding and verifying?
Decoding is reading: Base64URL-decoding the header and payload, which anyone can do with any token, no key required. Verifying is proving: checking the signature cryptographically against the issuer's key, which shows the token was not altered after signing. A token that decodes beautifully can still be a forgery — that is why this page keeps the two states visibly separate and labels unverified tokens as unverified.
Why does verification fail when I am sure the secret is right?
The most common cause is secret format: issuers often store the HMAC secret Base64-encoded, and pasting it as plain text (or a plain-text secret decoded as Base64) produces a different key and a false failure. Use the format selector to match how your secret is stored. After that, check for a truncated token, an alg that does not match the key type (an RSA public key cannot verify an HS token), and — for JWKS — key rotation: the kid in the header must exist in the key set.
Why is my token malformed? The error names a character — what does that mean?
Tokens are usually damaged while copying: wrapped in a log, truncated by a chat window, or carrying a stray character. This decoder validates the Base64URL encoding strictly and reports the first broken rule with the segment and the exact character position — an illegal character, '=' padding stranded mid-segment, or a segment length of 1 mod 4, which is mathematically impossible and means the segment is cut short or has an extra character. Fix that spot (or re-copy the token whole) and decode again.
Does the tool show whether a token has expired?
Yes. The exp claim becomes a real date in your local time and UTC, a live countdown ticks toward it, and the status chip flips to Expired when it passes. Signature verification and expiry are independent checks: the built-in expired sample has a genuine signature and an elapsed exp — a real server must reject it anyway, and the page shows both facts side by side. Remember the comparison uses your device's clock; if your clock is wrong, the verdict is too.
What is alg "none" and the HS/RS confusion attack?
alg "none" means an unsigned token — anyone can fabricate one, and servers must never accept it from clients. The confusion attack is subtler: an RS256 token (verified with a public key) is re-signed as HS256 using that same public key as the HMAC secret; a server that takes the algorithm from the token instead of pinning it will verify the forgery with information the whole world has. The security review flags both patterns when it sees them.
Can I edit a token's claims and use the result?
You can edit and re-encode here to watch what happens — the signature will no longer match, which is precisely what signatures are for. HS tokens can be re-signed with a secret you control, producing a working token for your own testing. Asymmetric tokens re-encode unsigned, because re-signing needs the issuer's private key, which must never be pasted into a web page. No edit here can make a server accept claims its issuer did not sign.

What a JWT is — and the one misunderstanding that causes most JWT bugs

A JSON Web Token (RFC 7519) is three Base64URL-encoded chunks joined by dots: a header naming the signing algorithm, a payload of claims — statements like "this is user 123, the token expires at 14:00" — and a signature computed over the first two chunks. The misunderstanding is baked into the format's friendly appearance: Base64URL is an encoding, not encryption. Anyone holding a token can read every claim in it, exactly as this page does, without any key. The signature provides integrity — proof the claims were not altered after the issuer signed them — and nothing else. Two rules follow, and most JWT incidents trace back to breaking one of them: never put a secret in a payload, because the world can read it; and never act on a claim from a token whose signature you have not verified, because the world can write it. A decoder, this one included, performs reading only. Reading is always allowed. Trusting is the step that requires cryptography.

Decoding versus verifying: the difference this page refuses to blur

Plenty of tools print a green tick for a token they merely managed to parse. Here, verification is a separate, explicit act with three honest outcomes: not attempted (the default — an amber "unverified" state), verified, and failed, plus a fourth, error, when the check itself could not run (an unimportable key, a private key pasted by mistake — which the tool refuses, loudly). Verification means recomputing or checking the signature over the exact bytes of header.payload with the issuer's key, using the Web Crypto API. Symmetric HS algorithms need the shared secret; the asymmetric families — RSASSA (RS), RSA-PSS (PS) and ECDSA (ES) — need only the public key, which is why they dominate public identity providers: the key that verifies can be published for the world, in a JWKS document, while the signing key never leaves the issuer. This tool accepts that public key as an SPKI PEM, as a PKCS#1 PEM (wrapped into SPKI form in your browser, because Web Crypto will not import PKCS#1 directly), as a single JWK, or as a full JWKS set with the key selected by the header's kid. If your flow needs the raw encoded form instead, the companion Base64 encoder & decoder goes the other direction.

Reading the claims like a reviewer, not a tourist

The seven registered claims are the token's contract, and each one corresponds to a check your server owes. iss must match a trusted issuer exactly — accepting tokens from any issuer that shares a signing key is a classic federation bug. aud must contain your service's identifier, or a token minted for a different API (with the same keys) becomes a skeleton key. exp and nbf bound the validity window; iat tells you when it was minted and, compared against exp, how long it lives — minutes is healthy for an access token, months is a finding. sub is only meaningful together with iss; neither alone identifies a user. And jti exists so a specific token can be recognised and refused on replay. When a login fails in production, the cause is almost always visible in this table: the token is expired (or your server clock is), the audience names a different environment, the roles claim your code expects was renamed by the issuer. Debugging auth without looking inside the token is guessing; the claims are the ground truth of what the issuer actually sent, which is frequently not what anyone remembers configuring.

The failure modes worth knowing by name

Four JWT attacks recur often enough to have earned names, and this page's security review is built around them. alg confusion: a token signed RS256 is re-presented as HS256, and a naive server verifies it with the RSA public key as the HMAC secret — the public key is public, so anyone can forge; the defence is pinning the expected algorithm server-side, never taking it from the token. alg none: the signature is stripped and the algorithm set to "none"; old libraries accepted, modern ones refuse, and the review flags any such token as critical. kid injection: the key-ID header is used to build a file path or SQL query on the server, smuggling traversal or injection through a field developers treat as a label; the review surfaces the kid so you can see exactly what your server would be trusting. And the unglamorous one, the immortal token: no exp, or a lifetime of months, so a single leak is a permanent credential. None of these are visible in the claims table alone — they live in the relationship between header, signature and time, which is why the review panel exists alongside the decoder rather than instead of it. Teams issuing their own tokens can pair this inspection with the password generator for the shared secrets HS signing depends on, and the 2FA authenticator for the second factor that limits what a stolen token can do.

Why "it fails to decode" is usually a copying accident

Production tokens rarely arrive broken; they arrive damaged — wrapped across lines in a log viewer, truncated by a terminal, trailing a "Bearer " prefix, missing their final characters to a chat window's width. The symptoms mislead: a JSON parse error in the payload usually means the bytes shifted long before JSON was involved. That is why this decoder validates the encoding layer first and reports it precisely — which segment, which character, which rule — before JSON is even attempted. A Base64URL segment whose length is 1 mod 4 cannot exist; a "+" or "/" in a segment means standard Base64 was used where Base64URL was required; an "=" in the middle means two fragments were spliced. Each has a different fix, and the fix is obvious the moment the error stops being generic. The decoder also tolerates the benign damage (whitespace, the Bearer prefix, trailing padding) and tells you when it has — silent repairs and silent failures are both enemies of debugging. For the JSON itself once it decodes, the JSON formatter is the right next step.

What this tool deliberately does not do

Three refusals are part of the security model. It never accepts a private key: asymmetric verification needs only the public half, and a page that invited private keys would be training exactly the habit attackers pray for — paste attempts are refused with an explanation, not processed. It does not fetch anything: not the JWKS from the issuer (your token's issuer is your business; the page shows you the well-known URL and lets you fetch it yourself), not analytics with token content, nothing. The whole inspection happens in this tab's memory, which you can confirm in your browser's Network panel — a claim about privacy you are invited to test rather than believe. And it does not pronounce tokens "valid": a token whose signature verifies, that is unexpired and well-formed, may still be revoked, issued for another audience, or presented by the wrong party. Validity is a server's decision, made with live context. What a decoder owes you is the complete, accurate contents of the token and the true state of every check that can be run locally — no more, and no less.

Related Tools You Might Like

Handy utilities in Developer Tools

View all Developer Tools

Base64 Encoder & Decoder

Encode text or files to Base64 and decode it back to text, images, or files — free, instant, and 100% private in your browser. URL-safe + JWT inspector.

JSON Formatter & Validator

Format, validate & beautify JSON free online. Tree view, exact error locations, JSONPath, sort keys & minify — 100% private, in your browser.

Password Generator

Free password generator with exact entropy maths: strong random passwords, EFF passphrases and pronounceable mode. 100% client-side — nothing leaves your browser.

Silixen Logo
Silixen

Free online tools for everyone. Simple, fast, and always accessible directly from your browser.

Categories

  • Image Tools
  • PDF Tools
  • Calculators
  • SEO & Marketing
  • Developer Tools
  • Text & AI Writing
  • Design Tools
  • Social Media Tools

Useful Links

  • Home
  • All Tools
  • About
  • AI Studio
  • Contact
  • Privacy Policy
  • Terms of Service

Stay Updated

Get notified about new tools and updates. Zero spam, ever.

© 2026 Silixen. All rights reserved.

Built withfor a better web.