Base64 Decode
Decode Base64 encoded strings back to plain text.
Decode any JSON Web Token to read its header and payload instantly. See expiry and issued-at as human dates, all in your browser with no data sent to a server.
A JWT is a compact, self-contained credential defined by RFC 7519. It is three Base64URL encoded segments joined by dots, and the format is designed so that a receiver can validate and read it without a database lookup. Nothing in it is encrypted: the first two segments are plain JSON wearing a very thin disguise.
Take the token above and decode each segment independently. Note that the signature is raw bytes, not text, so decoding it produces unreadable output. That is expected.
The segments use Base64URL, so dash stands in for plus, underscore for slash, and the trailing equals padding is stripped. That is why pasting a segment into a strict standard Base64 decoder sometimes fails on length.
Seven claim names are registered by the specification. Everything else is either a public claim from the IANA registry or a private claim agreed between the issuer and consumer, such as email, scope, roles, or tenant_id.
| Claim | Name | Meaning |
|---|---|---|
| iss | Issuer | Identifies the party that created and signed the token. |
| sub | Subject | The principal the token is about, usually a user id. |
| aud | Audience | The recipients the token is intended for. Reject if you are not listed. |
| exp | Expiration time | Unix timestamp after which the token must be rejected. |
| nbf | Not before | Unix timestamp before which the token must be rejected. |
| iat | Issued at | Unix timestamp recording when the token was created. |
| jti | JWT ID | Unique identifier, useful for replay detection and revocation lists. |
All three time claims are seconds since the Unix epoch, not milliseconds. Converting them in JavaScript requires multiplying by 1000 before constructing a Date, and forgetting that produces expiry dates in 1970.
The alg header names the algorithm used to produce the signature. Two dominate real deployments, and the difference is about who needs to hold which key.
A verifier must decide which algorithm it accepts before it looks at the token, never after. Trusting the alg field in the header is the root of a well known class of attacks.
Working on something related? Browse every free developer tool on the site, including a Base64 decoder, Base64 to JSON converter, JSON formatter, and hash generators. Everything runs entirely in your browser, so nothing you paste is ever uploaded.
JSON Web Tokens power authentication and authorization across modern APIs, single sign-on flows, and microservices. When you are debugging a login problem or an expired session, the first thing you need is to see what a token actually contains. This JWT decoder splits the token into its header, payload, and signature, then Base64URL-decodes the header and payload into readable JSON. It surfaces the standard claims, converts exp and iat timestamps into human dates, and does all of it locally in your browser. Because it decodes rather than verifies, it is a safe, fast way to inspect claims without ever sending a token to a server.