What this tool does
Paste a token, decode the header and payload, inspect claims, and keep the signature notice clear: this tool does not verify signatures.
Privacy behavior
Selected file contents are processed locally in your browser for supported workflows. This privacy build does not intentionally load ads, analytics, remote fonts, or third-party runtime scripts.
Supported workflow
Use the controls on this page, review the output in your browser, then copy or download the result.
What can a JWT Decoder show?
A JWT decoder helps inspect the token header, payload, and common claims such as exp, iat, and nbf while debugging API and authentication flows.
Decoding a JWT is not the same as verifying it. A decoded token can still be forged or expired unless the signature and claims are validated by the system that trusts it.
JWT structure and registered claims
A JSON Web Token is three base64url-encoded segments joined by dots: header.payload.signature. The header is a small JSON object, usually just alg, the signing algorithm the issuer claims to have used, and typ, normally the literal string JWT. The payload is a JSON object holding whatever claims the issuer chose to include. Base64url is base64 with two substitutions, plus becomes hyphen and slash becomes underscore, and its padding equals characters removed, which is why a token can sit directly in a URL or an HTTP header without further escaping. This decoder reverses that encoding with atob() after restoring the standard base64 alphabet and padding, then parses the result with JSON.parse(). The third segment, the signature, is shown exactly as received and is never decoded, because it is a raw cryptographic value, not JSON.
The payload can hold any JSON, but RFC 7519 registers seven standard claim names that most systems reuse:
| Claim | Name | Meaning |
| iss | Issuer | Identifies who issued the token |
| sub | Subject | Identifies the token principal, typically a user ID |
| aud | Audience | Identifies the intended recipient of the token |
| exp | Expiration time | Unix timestamp in seconds after which the token must be rejected |
| nbf | Not before | Unix timestamp in seconds before which the token must be rejected |
| iat | Issued at | Unix timestamp in seconds when the token was created |
| jti | JWT ID | Unique identifier for the token, useful for replay detection |
This tool converts exp, iat, and nbf to ISO 8601 next to the raw Unix timestamp, and states whether exp has passed compared to the current time on your device. It does not treat iss, sub, aud, or jti specially; those still appear in the decoded payload JSON, just without a dedicated row.
The caveat that matters most: decoding is not verifying. Verifying a JWT means checking the signature in the third segment against a secret or public key, confirming iss and aud match what the relying system expects, and confirming exp and nbf against the current time before trusting any claim. This tool performs none of that. Anyone can write a header and payload with any claim values, base64url-encode them, and the result decodes here exactly like a token issued by a real authorization server. A decoded payload is only as trustworthy as the verification step a receiving system is supposed to perform afterward.
Worked example
The sample button on this page loads a token built from this header and payload:
| Part | Decoded JSON | Base64url segment |
| Header | {"alg":"HS256","typ":"JWT"} | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 |
| Payload | {"sub":"user-123","name":"ConvertUnlimited","locale":"th-TH","iat":1778529600,"nbf":1778529600,"exp":1810065600} | eyJzdWIiOiJ1c2VyLTEyMyIsIm5hbWUiOiJDb252ZXJ0VW5saW1pdGVkIPCfkYsiLCJsb2NhbGUiOiJ0aC1USCIsImlhdCI6MTc3ODUyOTYwMCwibmJmIjoxNzc4NTI5NjAwLCJleHAiOjE4MTAwNjU2MDB9 |
Joined with the signature part, the full token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTEyMyIsIm5hbWUiOiJDb252ZXJ0VW5saW1pdGVkIPCfkYsiLCJsb2NhbGUiOiJ0aC1USCIsImlhdCI6MTc3ODUyOTYwMCwibmJmIjoxNzc4NTI5NjAwLCJleHAiOjE4MTAwNjU2MDB9.sample-signature-not-verified. The signature part is deliberately a plain label here, not an HMAC, so nobody mistakes the sample for a token that would pass real verification. Decoding the payload gives iat and nbf of 1778529600, which is 2026-05-11T20:00:00.000Z, and exp of 1810065600, which is 2027-05-11T20:00:00.000Z; the claims panel reports whether that exp is already in the past compared to the current time on your device.
Frequently Asked Questions
Does this verify JWT signatures?
No. It decodes the header and payload only.
Is my JWT sent to ConvertUnlimited servers?
No server-side upload endpoint is used for decoding; token contents are decoded locally in your browser.
Can I inspect exp and iat claims?
Yes. Unix timestamp claims are shown as ISO dates when present.
Should I paste production tokens?
Avoid pasting sensitive production tokens unless you understand the risk.
Does it support Unicode claims?
Yes. UTF-8 payload content is decoded safely.
What are the standard JWT claims?
RFC 7519 registers iss, sub, aud, exp, nbf, iat, and jti. This tool highlights exp, iat, and nbf with converted dates; the rest still appear in the decoded payload JSON.
Why did decoding fail with a malformed token message?
The tool expects exactly three dot-separated segments using the base64url alphabet. A token that was line-wrapped, truncated, or copied using standard base64 instead of base64url fails this check.
What does alg in the header mean?
It names the signing algorithm the issuer claims to have used, such as HS256 or RS256. This tool displays it but never checks whether the signature actually matches that algorithm.
Privacy
Privacy build: This build removes ads, analytics, remote fonts, runtime CDN scripts, and file-operation telemetry. Selected files are processed in the browser using local JavaScript and browser APIs.
ConvertUnlimited does not provide a server-side upload endpoint for this JWT decoding flow. Token contents are decoded locally in your browser.
Terms of Use
ConvertUnlimited is provided as is. Do not rely on decoded JWT output as proof of token validity.
Trust and privacy
Files are processed locally where supported. Review the Trust Center for the processing model and the Privacy Policy for public-site privacy boundaries.