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. 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. |
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.