Parse and decode your JSON Web Token
All computation runs locally in your browser

| Header | |
|---|---|
| alg(Algorithm) | HS256(HMAC using SHA-256) |
| typ(Type) | JWT |
| Payload | |
| sub(Subject) | 1234567890 |
| name(Full name) | John Doe |
| iat(Issued At) | 1516239022(1/18/2018 1:30:22 AM) |
A JSON Web Token (JWT) is a compact string that carries claims (pieces of information) between systems. It’s usually used as a bearer token: if a client presents it, the server decides what the client is allowed to do.
What does this JWT Parser help you do?
Who typically uses it?
This parser decodes JWTs for inspection. It does not validate the signature. For signing/verification experiments, you might also use our HMAC Generator.
Example 1: Is the token expired right now?
Suppose the token has and “now” is . The rule of thumb is:
So the token is still valid by time, but you should also check audience, issuer, and signature on the server.
Example 2: How long until it expires?
With the same values, the remaining time is:
is exactly . If your system caches tokens, this kind of quick check helps you pick a sensible refresh window.
API returns 401 unexpectedly
Background: A client sends a bearer token, but the API rejects it.
Input: paste the token and inspect , , and .
Result: if is in the past or targets a different service, you’ve found your culprit.
Missing roles / permissions
Background: The UI shows “Forbidden” even after login.
Input: look for claims like , , or .
Result: if the claim set is empty, the identity provider may not be configured to include them.
Debugging tokens from logs
Background: Support gives you a token string from a server log.
Input: paste it to quickly read the user subject and the issued time .
Result: you can confirm whether the token matches the reported user and timeframe.
Quick privacy sanity check
Background: A team wonders whether a token contains sensitive data.
Input: inspect payload claims and look for emails, phone numbers, or internal IDs.
Result: remember a JWT is usually only encoded, not encrypted—anything in the payload can often be read.
Need to check whether a string is Base64 (or decode an intermediate value)? Try our Base64 String Encoder/Decoder.
You need a fast answer: is the token malformed, expired, or missing a key claim?
Users are getting logged out. Check exp/iat and reason about token lifetimes.
Confirm you are not leaking personal data or internal secrets in plain payload claims.
Inspect alg/typ/aud/iss when a reverse proxy or middleware rejects tokens.
Confirm the subject and other identifiers match the reported account.
If you see kid in the header, you can validate whether rotation metadata is present.
When it may not be enough
This tool is best for decoding and quick inspection. If you need cryptographic verification (signature validation), you must verify the JWT against the correct secret/public key in your backend.
Treat payload as readable: A JWT is often only encoded. Assume anyone who gets the token can read the payload claims.
Always check time claims together: Look at exp, iat, and nbf as a set. A token can be unexpired but not yet valid if nbf is in the future.
Validate audience and issuer: Even a correctly signed token should be rejected if aud/iss do not match your service.
Prefer short lifetimes: Short expiration windows reduce damage if a token leaks. Use refresh tokens for long sessions.
If you’re debugging authorization headers end-to-end, you may also like our Basic Auth Generator.
A classic JWT has three dot-separated parts:
Base64Url decoding (high level)
Where is the first segment (header), and is the second segment (payload). The signature segment is not JSON.
Important: decoding is not verification
This parser can read the payload, but it cannot prove authenticity. Signature verification depends on the algorithm: for example, uses a shared secret, while uses a public/private key pair.
JOSE header
The first segment. It often includes typ, alg, and sometimes kid (key id).
Registered claims
Standardized keys like iss, sub, aud, exp, nbf, and iat.
JWS vs JWE
Most JWTs you see are JWS (signed). JWE is encrypted and behaves very differently.
Bearer token model
If you have the token, you can act as the subject. Protect it like a password.
The parser runs locally in your browser. Still, JWTs can contain personal data. Avoid using real production tokens on shared machines.
A JWT must have at least two dot-separated segments. If the header or payload is not valid Base64Url or not valid JSON, parsing fails.
The signature is a cryptographic output, not a JSON object. It’s meant for verification, not display.
No. Authenticity requires signature verification using the correct key material.
Start with , , and , then confirm and match your service.
Some claims are arrays or nested objects (for example, a list of roles). The tool formats them to make them easier to read.
Use a simple chronometer (stopwatch) to track elapsed time down to milliseconds. Runs locally in your browser.
Normalize email addresses to a standard format for easier comparison. Useful for deduplication and data cleaning. Runs locally in your browser.
Estimate the time needed to consume a total amount at a constant rate, and get an expected end time. Runs locally in your browser.
Know which file extensions are associated to a MIME type, and which MIME type is associated to a file extension. Includes a full MIME types table.
Generate random Lorem Ipsum placeholder text with customizable paragraphs, sentences, and word counts. Runs locally in your browser.
Browse and search HTTP status codes (1xx–5xx). Includes WebDAV codes. Runs locally in your browser.