FormatFlow

No tool matches “”

Try a format (“webp”, “mp3”) or a verb (“merge”, “compress”).

Loading index

↵to open

Developer Tools · Updated October 20, 2026

Decode a JWT

You can paste a JWT and decode its header and payload in your browser, read the exp, iat and nbf claims as local dates, and see whether the token has expired, without the signature being verified.

Runs in your browserFree · No sign-up · No watermark
JWT → JSONRuns in your browser
Loading the tool…

Everything runs locally in this tab. No file is uploaded while the tool loads.

This tool runs in your tab. Nothing is uploaded and no copy is stored.

How files are handled

At a glance

Works with
JWT → JSON
Processing
In your browser
Price
Free, no account
Updated
October 20, 2026
All Developer Tools

About JWT Decoder

A JSON Web Token is three base64url segments joined by dots: a header naming the algorithm, a payload of claims and a signature. The header and payload are only encoded, not encrypted, so anyone holding the token can read them. The signature is what proves the token came from someone with the signing key, and only a real verification step can show that.

This decoder splits the token, converts both JSON segments with correct UTF-8 handling and pretty-prints them. It also turns exp, iat and nbf into local dates and compares them with your clock, so an expired or not-yet-valid token is obvious at a glance. It never asks for a secret and never claims the signature is valid.

What this tool does

The details that matter when you use JWT Decoder for real work.
  • Header and payload as JSON

    Both base64url segments are decoded with UTF-8 handling and printed with two-space indentation, and each panel has its own copy button.

  • Expiry at a glance

    The exp, nbf and iat claims are shown as readable local dates plus UTC ISO strings, with expired, valid and not-yet-valid state labels.

  • Signature shown, not checked

    The raw signature segment and its byte length are displayed for inspection, next to a clear notice that no verification happened and no key was used.

  • Bearer prefix and wrapping tolerated

    Tokens copied from an Authorization header or wrapped across lines by a terminal are cleaned up before decoding, along with missing base64url padding.

  • Malformed tokens explained inline

    Wrong segment counts, unusable base64url, invalid UTF-8 and non-JSON segments each get a specific sentence instead of a generic failure.

  • Nothing leaves the tab

    Decoding is plain JavaScript with no network request, no storage and no third-party library, so the token stays in page memory.

How to use JWT Decoder

No account, no installation — the whole job happens in this browser tab.
  1. 01

    Paste the token

    Copy the JWT with all three segments and paste it into the field; a Bearer prefix and line breaks are fine.

  2. 02

    Check the header

    The header JSON shows the algorithm and token type; confirm alg matches the algorithm your server expects before trusting anything else.

  3. 03

    Read the claims

    The payload JSON lists every claim, and the time section turns exp, iat and nbf into local dates with a state label.

  4. 04

    Copy what you need

    Use the copy button on the header, payload or signature panel to move that JSON or segment into a ticket or an editor.

  5. 05

    Verify it properly

    Take the token to your server-side code or a JWT library and verify the signature with the signing key before trusting any claim.

How this tool works

Works with
JWT → JSON
Processing
Client-side, in your browser. Nothing is uploaded.
Requirements
Chrome, Edge, Firefox or Safari · JavaScript enabled

Limitations worth knowing

  • Decoding only: signatures, issuer, audience and the algorithm allow-list are not verified.
  • Encrypted JWE tokens are not supported; they need the decryption key and five-segment handling.
  • Expiry states use your device clock and ignore server leeway, so a token near its exp boundary can disagree with the API.
  • A JWT payload is readable by design, so this tool cannot protect a token that you should not have.

Privacy and file handling

The token is decoded with JavaScript inside this browser tab. It is not uploaded, stored or logged, and decoding makes no network request. Treat any JWT as a secret anyway, because a valid token can act as a login credential until it expires.

Read the full privacy policy

JWT Decoder FAQ

Short, direct answers to the questions people ask before using this tool.
Does this tool verify the JWT signature?
No. It decodes the header and payload and prints the signature bytes as text, but it runs no signature check. Verification needs the signing key or public key and a library on your server, and that is the only place it should happen.
Can I trust the claims shown in the payload?
No. Anyone can craft a token with any payload and an invalid signature, and this decoder cannot tell the difference. Treat the decoded content as untrusted input until your server has verified the signature, issuer, audience and expiry.
What do exp, iat and nbf mean in a JWT?
They are NumericDate claims measured in seconds since the Unix epoch. exp is the expiry time, nbf is the earliest time the token may be used, and iat records when the token was issued. Only exp and nbf affect whether a token is currently valid.
Why does my token show as expired when the API still accepts it?
The decoder compares exp with your device clock, while servers often allow a small leeway for clock skew and may validate a refresh token on a different path. A service can also still accept a token because its code never checks exp, which would be a bug in that service.
What is base64url and why does my token contain dashes and underscores?
Base64url is the URL-safe variant of Base64: it replaces plus and slash with dash and underscore and drops the padding equals signs. JWT segments use it so a token can travel through URLs and HTTP headers without extra escaping.
Does this decoder work with encrypted JWTs (JWE)?
No. A JWE has five segments and its payload is encrypted, so it cannot be read without the decryption key. This tool handles signed three-segment tokens (JWS) and reports the five-segment case with an explanation.
Is it safe to paste a JWT into this page?
Decoding happens locally with no network request, so the token is not transmitted or stored. Even so, a valid JWT acts like a temporary password: prefer short-lived tokens and avoid pasting production credentials anywhere you do not control.
Why should I check the alg header before trusting a token?
The alg value tells the verifier which algorithm to use, and historic attacks relied on servers accepting alg: none or a different algorithm than expected. The decoder shows the value, but your server must allow only the algorithms it actually expects.

Background reading

Format guides that explain the trade-offs behind JWT Decoder.