Signature is shown for reference but not verified. Verifying a JWT requires the issuer’s public or symmetric key — that step happens on your backend, not in a browser tool.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Paste a JWT — see header, payload, algorithm, and expiry in one view.
A JSON Web Token (JWT) carries claims about an authenticated user in three dot-separated parts: a base64url-encoded header, a base64url-encoded payload, and a signature (typically SHA-256-based). The decoder below splits the token, parses each segment as JSON, surfaces the algorithm and time-to-expiry, and shows the signature for reference. It does not verify the signature— that requires the issuer’s key and should happen on your backend, not in a browser tool.
All decoding happens locally. Convertitive never logs, stores, or transmits the token you paste.
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}Signature is shown for reference but not verified. Verifying a JWT requires the issuer’s public or symmetric key — that step happens on your backend, not in a browser tool.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Three base64url segments joined by dots. The encoded token is usually one long line — line breaks are tolerated.
Each segment is shown as pretty-printed JSON. The algorithm card pulls 'alg' from the header for quick reference.
If the payload contains 'exp' (Unix timestamp in seconds), the tool computes how far away it is from your machine's current time.
| Claim | Meaning |
|---|---|
| iss | Issuer — who created the token. |
| sub | Subject — the user or entity the token is about. |
| aud | Audience — for whom the token is intended. |
| exp | Expiry time (Unix seconds). After this, the token must be rejected. |
| iat | Issued-at time (Unix seconds). |
| nbf | Not-before — the token is invalid before this time. |
| jti | JWT ID — unique token identifier, useful for revocation lists. |
This decoder deliberately stops at parsing. It does notverify the signature, and it never will. Verification requires the issuer’s signing key — a symmetric secret for HS-family algorithms (HS256, HS384, HS512) or the matching public key for asymmetric ones (RS256, ES256, PS256). Symmetric secrets must never leave the server they were minted on, and even public-key verification belongs next to the code that actually consumes the token, where you can also enforce iss, aud, exp, and nbf checks against your own configuration.
Why we don’t verify in-browser: pasting your signing key into a web tool exposes it to every script and extension running in that tab, and any verification that happens client-side is trivially bypassed by an attacker who controls the page anyway. A signature is only as trustworthy as the environment that checked it.
See RFC 7519 §10 (Security Considerations) for the normative guidance: implementers must validate the signature before trusting any claim, and the validation must occur in a context that controls the keys.
A JWT looks like header.payload.signature. Each part is base64url-encoded (no padding). The header is a small JSON object with at least an 'alg' field. The payload is a JSON object of claims — standard ones like 'iss', 'sub', 'exp' and any custom fields the issuer chose. The signature is computed over the dot-joined header and payload using the algorithm declared in the header.
Three things bite JWT users repeatedly: (1) accepting alg='none', which means 'unsigned' — always reject this server-side. (2) Trusting the 'iss' field without also checking the signature, which is trivially forgeable. (3) Putting reversible secrets in the payload because it 'looks encoded' — base64url is not encryption.
Authoritative references behind the math, constants, and tables on this page. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.
Related guide
Want the full story on what each JWT segment means, which claims to validate, and how the signature actually defends the token? The decoding guide walks through it with worked examples.
Read: JWT token decoding guide →