Skip to main content
Best Answer Hub logo Best Answer Hub.
Back to Playbooks
Best Answer Hub Playbooks · Developer Tools
Anyone can read it, so should you

A JWT Is Encoded, Not Encrypted

A practical guide to JSON Web Tokens: the three parts, the claims inside, why the payload is readable by anyone who holds the token, why decoding is not the same as verifying, and the alg none trick that has bypassed real logins. The Best Answer Hub JWT Decoder splits and reads a token in your browser and sends nothing to a server.

Header, payload, signaturedecoded live
Privatenothing uploaded
Freeno signup, no ads
3
parts in every JWT: header, payload, and signature
RFC 7519, 2015
0%
of a signed JWT is encrypted; the payload is only encoded
RFC 7515
80,000+
dev-tool pastes exposed in 2025, including admin JWTs
watchTowr, 2025
0
network requests when you decode a token here
runs in your browser

The Best Answer Hub JWT Decoder is a free, browser-based tool that splits a JSON Web Token into its three parts and decodes the header and payload into readable JSON, showing the algorithm, the claims, and the expiry, with nothing uploaded to a server. This guide explains what a JWT contains, why the payload is readable by anyone who holds the token rather than encrypted, why decoding is not verifying, and the two algorithm tricks that have bypassed real signature checks.

Start here

What is the Best Answer Hub JWT Decoder?

The Best Answer Hub JWT Decoder is a single-page tool that takes a JSON Web Token and shows what is inside it. It splits the token on its two dots, base64url-decodes the header and the payload into formatted JSON, previews the signature, reads the algorithm from the header, and works out from the expiry claim whether the token is still valid or has lapsed. It decodes but does not verify, because verification needs a secret or key you should never paste into a web tool. Every step runs as JavaScript on your own device using native methods, so the token is never uploaded and no account is needed. The tool sits in the Best Answer Hub Developer Toolbox next to a JSON Formatter and a Regex Tester, is built and maintained by Shahbaz Ali Malik, and stays free because Best Answer Hub is funded by optional paid assessments rather than advertising.

Three parts, two dots

What are the three parts of a JWT?

A JWT is three base64url-encoded parts joined by dots: a header, a payload, and a signature, in the form header.payload.signature. The header, defined by the JSON Web Signature standard, names the signing algorithm and the token type. The payload carries the claims, the statements about the user and the token, such as who issued it and when it expires. The signature is computed over the first two parts with a key, and it lets a server confirm the token has not been tampered with. The Best Answer Hub JWT Decoder shows the first two parts as readable JSON and previews the third. The point to hold on to is that only the signature needs a key: the header and payload are simply encoded, so the decoder can read them, and so can anyone else.

The three parts of a JWT, and which one needs a key
A JWT: header . payload . signature Header algorithm, type . Payload the claims . Signature needs the key Base64url encoded, readable by anyone the decoder shows these as JSON Verify with the key not readable, not decoded Integrity comes from the signature. Confidentiality does not: the payload is plain text once decoded.

Structure per RFC 7515 (JSON Web Signature) and RFC 7519 (JSON Web Token), 2015. A signed JWT protects against tampering, not against reading.

The load-bearing fact

Why can anyone read your JWT?

Because a signed JWT is encoded, not encrypted, so its contents are readable by anyone who has the token. The JSON Web Signature standard gives a token integrity protection, a guarantee it has not been altered, but it does not give confidentiality. The header and payload are just base64url text, which any decoder, including this one, turns straight back into JSON. The maintainers of jwt.io put it plainly: the information in a signed token, though protected against tampering, is readable by anyone, so you should not put secret information in the payload unless it is encrypted. Encryption of a token is a separate standard, JSON Web Encryption, and most JWTs in the wild are signed, not encrypted. The practical rule follows directly: never place a password, a card number, or anything else sensitive in a JWT payload, because putting it there is the same as publishing it to everyone who receives the token.

Signing a JWT proves it was not changed. It does nothing to hide what is inside, so treat the payload as public.
Reading the claims

What do the claims in a JWT mean?

Claims are the statements a token makes, and the standard defines a set of registered claims the Best Answer Hub JWT Decoder labels for you. The time claims are the ones to watch: expiry, not before, and issued at are all NumericDate values, plain counts of seconds since the start of 1970, which the decoder turns into readable dates. The table lists the registered claims from RFC 7519.

ClaimNameWhat it means
issIssuerWho created and signed the token
subSubjectWho the token is about, usually a user ID
audAudienceWho the token is intended for, such as an API
expExpirationSeconds since 1970 after which the token must be rejected
nbfNot beforeTime before which the token must not be accepted
iatIssued atWhen the token was created
jtiJWT IDA unique identifier, which helps block replay

Beyond these, a token can carry any custom claims an application needs, such as a role or a plan. The decoder shows all of them, registered and custom alike, so you can see exactly what a service is asserting about a user, and check whether the expiry has already passed.

A crucial distinction

Why is decoding a JWT not the same as verifying it?

Because decoding only reads the token, while verifying proves it is genuine, and the two are easy to confuse. Decoding base64url-decodes the header and payload so you can see the claims, which is what the Best Answer Hub JWT Decoder does. Verifying recomputes the signature with the signing key and checks it matches, which proves the token was issued by who it claims and has not been changed. The best current practices for JWT are strict about this: every cryptographic operation must be validated and the whole token must be rejected if any of them fail. That is why a decoder showing a token content proves nothing about its validity, and why verification belongs on the server with a trusted library. It is also why you should never paste your signing secret or private key into any web tool: the key is what protects every token you issue, so it must stay on the server, never in a browser.

Two real attacks

What are the alg none and algorithm confusion attacks?

Both attacks abuse the fact that a JWT names its own algorithm in the header, and both are documented in the JWT best current practices. In the alg none attack, an attacker changes the algorithm field to none and drops the signature, and a library that trusts that value will treat the unsigned token as valid, bypassing the signature check entirely. In algorithm confusion, an attacker switches a token from RS256 to HS256, and a server set up for RSA can be tricked into verifying with its own public key used as an HMAC secret, letting the attacker forge tokens with information that is already public. The defense for both is on the server: pin the expected algorithm in every verify call rather than trusting the header, and reject anything else. The Best Answer Hub JWT Decoder shows the algorithm from the header prominently, so an unexpected value like none jumps out the moment you decode the token.

Where the danger lives

These are verification bugs, not decoding bugs, so they bite on the server that trusts a token, not in a viewer. Reading a token to spot a suspicious algorithm is safe and useful. Accepting one without pinning the algorithm is where logins get bypassed. Decode to inspect, then verify server-side with the algorithm locked down.

The honest part

Why should you decode a JWT in your browser?

Because a real JWT is often a live credential, and the safest place to open one is your own device, which is where the Best Answer Hub JWT Decoder keeps it. An access token is a bearer token, which means, in the words of the standard, any party in possession of it can use it to reach the protected resource, without any further proof. Pasting a production token into a website therefore hands over a working key for as long as the token is valid. The risk is not theoretical: in November 2025, researchers at watchTowr found more than 80,000 saved pastes, over five gigabytes, exposed from two popular online developer tools, and the haul specifically included administrative JWT tokens alongside credentials and private keys, with planted secrets accessed within 48 hours. A client-side decoder never transmits the token, so there is nothing to store or leak. The principle is the one the Federal Trade Commission gives to business: do not collect data you do not need, and where you can, keep it on the user device.

The honest comparison

How is it different from jwt.io or other decoders?

The difference is posture: the Best Answer Hub JWT Decoder shows no ads, asks for no account, pushes no product, and states plainly that the token stays in your browser. To be fair, most reputable decoders also run client-side, so decoding locally is not unique. The honest gaps are elsewhere. The best-known decoder, jwt.io, is a marketing asset for a paid identity product, carries a create-an-account call to action, and shows neither a reassurance that the token stays local nor a warning against pasting a production token. Some free decoders run ads. Others, like Microsoft's jwt.ms, do state that the token never leaves your browser, which is the right thing to do. The table sets the usual experience next to this one.

What you getBest Answer HubTypical online decoder
Token uploaded to a serverNever, decoded locallyUsually client-side, but some send it and you cannot tell
Ads or trackersNoneCommon on free decoders
Account or signupNeverjwt.io pushes an account
Vendor upsellNonejwt.io promotes a paid identity product
Says the token stays localYesjwt.io does not; jwt.ms does
Flags the algorithmShownVaries

None of this makes the decoding special, because base64url is the same everywhere. What differs is what a tool does around it: whether it shows ads, whether it upsells, and whether it is honest that a token is a credential to be careful with. The Best Answer Hub JWT Decoder keeps the token local and says so.

Pair it with the rest of the toolbox

A token rarely travels alone. The Best Answer Hub Developer Toolbox has the neighbors you reach for next: a JSON Formatter to expand a nested claim, a Base64 Encoder, and a Regex Tester, each running in the browser and sending nothing.

Decode it now

Open the JWT Decoder

Free, no signup, and processed entirely in your browser. Paste a token to read its header and payload, see every claim, and check the expiry, with nothing uploaded.

Decode your token
Good questions

Common questions about JSON Web Tokens

What is the Best Answer Hub JWT Decoder?
The Best Answer Hub JWT Decoder is a free, browser-based tool that splits a JSON Web Token into its three parts and decodes the header and payload into readable JSON. It shows the algorithm, the claims, and the expiry, and it decodes without verifying. It needs no account and sends nothing to a server.
What are the three parts of a JWT?
A JWT has a header, a payload, and a signature, joined by dots as header.payload.signature. The header names the algorithm and type, the payload carries the claims, and the signature protects the first two from tampering. The Best Answer Hub JWT Decoder shows the header and payload as JSON and previews the signature.
Is a JWT encrypted?
Usually not. A signed JWT is encoded, not encrypted, so its header and payload are readable by anyone who holds the token. Encryption is a separate standard, JSON Web Encryption, and most tokens are only signed. The Best Answer Hub JWT Decoder reads a signed token instantly, which is exactly why you should keep secrets out of the payload.
Can anyone read the contents of my JWT?
Yes, if they have the token. A signed JWT protects against tampering but not against reading, so the payload is visible to anyone who receives it. The maintainers of jwt.io warn against putting secret information in the payload for this reason. Treat a JWT payload as public, which the Best Answer Hub JWT Decoder makes obvious.
What do the claims iss, sub, aud, exp, nbf, and iat mean?
Issuer is who signed the token, subject is who it is about, and audience is who it is for. Expiration, not before, and issued at are times in seconds since 1970. The Best Answer Hub JWT Decoder labels each registered claim and turns the time claims into readable dates so you can see when a token is valid.
What is the difference between decoding and verifying a JWT?
Decoding reads the header and payload so you can see the claims. Verifying recomputes the signature with the signing key to prove the token is genuine and unchanged. The Best Answer Hub JWT Decoder decodes for inspection; verification belongs on the server with a trusted library, because it needs a key that must never enter a browser.
Can this tool verify a JWT signature?
No, by design. Verifying a signature needs the signing secret or public key, which is unsafe to paste into any web tool. The Best Answer Hub JWT Decoder only decodes the header and payload for readability, and shows the signature as a preview. For verification, use a server-side library and keep the key on the server.
Should I paste my signing secret or key into an online decoder?
Never. The signing key protects every token you issue, so it must stay on the server and never touch a browser tool. A decoder does not need it, because reading a token requires no key. The Best Answer Hub JWT Decoder asks only for the token and shows its contents without any secret, so nothing sensitive is entered.
What is the alg none vulnerability?
It is an attack where the algorithm field is set to none and the signature dropped, and a server that trusts the header accepts the unsigned token as valid, bypassing the signature check. The JWT best current practices warn against it. The Best Answer Hub JWT Decoder shows the algorithm clearly, so a value of none stands out at once.
What is JWT algorithm confusion?
It is an attack that switches a token from RS256 to HS256 so a server set up for RSA verifies it with its public key used as an HMAC secret, letting an attacker forge tokens from public data. The fix is to pin the expected algorithm when verifying. The Best Answer Hub JWT Decoder surfaces the algorithm so a change is easy to spot.
Is it safe to paste a production JWT into an online decoder?
Only into one that works on your device, and even then with care. A production token is a live credential, so pasting it into a server-side tool hands it over. The Best Answer Hub JWT Decoder runs client-side and sends nothing, and for the most sensitive tokens you can load the page then disconnect from the internet and it still works.
Are my tokens uploaded when I use this decoder?
No. With the Best Answer Hub JWT Decoder your token never leaves your browser. The tool uses only client-side JavaScript to decode the header and payload, so there are no network requests carrying the token. You can confirm this by opening the Network tab in your developer tools and seeing zero outgoing requests as you paste and decode.
How do I tell if a JWT has expired?
Read the expiration claim, which is a count of seconds since 1970, and compare it to now. The Best Answer Hub JWT Decoder does this automatically, showing how long a token has left or how long ago it expired. An expired token must be rejected, so this is a quick way to see why a request is being refused.
Why does a JWT use base64url instead of base64?
Because a JWT often travels in URLs and HTTP headers, where standard base64 characters like plus and slash would be misread or need escaping. Base64url swaps those characters for URL-safe ones and drops the padding. The Best Answer Hub JWT Decoder handles base64url automatically, so tokens copied from headers or links decode without fiddling.
How is this different from jwt.io?
Both decode in your browser, but jwt.io is a marketing asset for a paid identity product, with a create-an-account prompt and no on-page notice that the token stays local. The Best Answer Hub JWT Decoder shows no ads, pushes no product, asks for no account, and states plainly that nothing is uploaded. It is built for a quick, private inspection.
People also read

Keep going

Sources

Jump into the tools: JWT Decoder, Developer Toolbox, JSON Formatter, and all Tools.

Built & maintained by Shahbaz Ali Malik Last updated: