JWT Decoder
Paste any JSON Web Token to instantly decode the header and payload, inspect claims, check expiry, and verify HMAC signatures.
Paste a JWT above to watch it split into its 3 parts.
Need JWT encoding too? Open the full JWT Suite →
Want to see what's different between two tokens? Compare two JWTs →
What is a JWT? click to collapse
A JSON Web Token (JWT) is a compact, signed piece of text that proves who you are or what you're allowed to do — a server hands one out after login, and every part of the app can trust it without a database lookup. It's really just 3 pieces, base64url-encoded and joined with dots:
Anyone can decode a JWT and read it — it isn't encrypted. The signature only proves the header and payload weren't altered after the token was issued, and only if you check it against the correct secret or key.
Common questions
What is a JWT, really?
A compact, signed token — 3 base64url parts joined by dots: a header (algorithm/type), a payload (your claims/data), and a signature (a tamper check). Servers issue them after login so every request can prove identity without a database round-trip.
Is it safe to paste my token here?
Yes — everything happens locally in your browser. Nothing you paste is ever uploaded or sent to a server.
What does "exp" mean and how do I read it?
exp is the expiration time, written as a Unix timestamp — the number of seconds since 1 Jan 1970 UTC. The decoder converts it to a readable date and shows a live "expires in…" or "expired…ago" countdown next to it.
Why does it say "Invalid signature"?
It means the secret or key you entered doesn't produce the same signature as the one in the token — either you have the wrong secret, or the header/payload was altered after the token was signed. A valid decode of the header/payload does not mean the token is trustworthy; only a verified signature does.
Frequently Asked Questions
What is a JWT?
A JSON Web Token (JWT) is a compact, URL-safe token format used to securely transmit information between parties as a JSON object. It consists of three base64url-encoded parts: header, payload, and signature, separated by dots.
Is this JWT decoder free?
Yes, completely free. No signup or account required.
Is my JWT token safe?
All decoding happens entirely in your browser. Your token is never sent to a server.
Can this tool verify JWT signatures?
Yes. Paste your HMAC secret into the Verify field and the tool checks whether the signature is valid for the given header and payload.
What are the three parts of a JWT?
A JWT has three dot-separated parts: the header (algorithm and token type), the payload (claims/data), and the signature (verification hash). Each part is base64url encoded.
What is the JWT payload?
The payload is the middle section of a JWT. It contains claims — statements about the user or token such as sub (subject), iat (issued at), exp (expiration), and any custom fields.
What is the exp claim?
exp is the expiration time claim. It holds a Unix timestamp (seconds since 1970-01-01). A token whose exp is in the past is considered expired and should be rejected by the server.
How do I check if a JWT is expired?
Decode the token and look at the exp claim. If the value is less than the current Unix timestamp, the token is expired. This tool shows a live expiry countdown automatically.
Can I decode a JWT without the secret?
Yes. The header and payload are only base64url encoded, not encrypted — anyone can read them. The signature requires the secret to verify authenticity, but decoding the contents does not.
What is the difference between JWT and an API key?
An API key is an opaque string that the server looks up in a database. A JWT is self-contained — the server can verify it using a secret or public key without a database lookup.
What does 'invalid signature' mean?
It means the token's signature does not match the expected value for the given header, payload, and secret. The token may have been tampered with or signed with a different key.
What is the difference between HS256 and RS256?
HS256 uses a shared HMAC secret — both sides must know the key. RS256 uses an RSA key pair — the server signs with a private key and anyone can verify with the public key.