Paste Token
Enter a JWT (three Base64URL segments separated by dots) into the input area.
Decode JWT header and payload. View standard claims (iss, sub, aud, iat, exp, nbf) and expiration status. Works entirely in your browser — no signature verification, no secrets required.
Paste a JWT (three Base64URL segments separated by dots).
Enter a JWT (three Base64URL segments separated by dots) into the input area.
View the decoded header (algorithm, type) and payload (standard & custom claims) instantly.
Check the exp claim timestamp and see if the token is expired or still valid.
Determines the signing algorithm (e.g., HS256, RS256, ES256) and token type (JWT).
{
"alg": "HS256",
"typ": "JWT"
}
Contains the assertions (claims) about the entity. Standard claims include iss, sub, aud, iat, exp, nbf.
{
"iss": "https://api.example.com",
"sub": "user_12345",
"aud": "client_app",
"iat": 1700000000,
"exp": 1700086400,
"nbf": 1700000000,
"role": "admin"
}
The cryptographic hash used to verify integrity. This tool is client-side and does not verify the signature.
// HMAC SHA256 example
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
| Claim | Name | Description | Type |
|---|---|---|---|
exp |
Expiration Time | Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. | NumericDate (Unix timestamp) |
iat |
Issued At | Identifies the time at which the JWT was issued. | NumericDate (Unix timestamp) |
nbf |
Not Before | Identifies the time before which the JWT MUST NOT be accepted for processing. | NumericDate (Unix timestamp) |
iss |
Issuer | Identifies the principal that issued the JWT. | String or URI |
sub |
Subject | Identifies the principal that is the subject of the JWT (typically a user ID). | String or URI |
aud |
Audience | Identifies the recipients that the JWT is intended for. | String, URI, or array |
exp claim is in the past. The tool will decode the token and indicate that it is expired, but the claims remain accessible.iss (issuer), sub (subject), aud (audience), iat (issued at), exp (expiration), and nbf (not before). Custom claims are also displayed in the payload output.A JSON Web Token (JWT) Decoder lets developers inspect the header and payload of any JWT without needing a secret key. Because JWTs are base64url-encoded rather than encrypted, anyone holding the token string can read its claims. This makes a decoder an essential debugging tool for API authentication, single sign-on flows, stateless session management, and troubleshooting failed authorization in modern web applications. It works entirely client-side, so token data never leaves your browser during inspection.
Debug failed authentication by comparing the token payload against what your backend expects. Verify that role and permission claims are present before granting access to protected routes. Inspect token expiry (exp) and issuance (iat) timestamps to troubleshoot sessions that end too early or last too long. Audit third-party identity providers to confirm the claims they embed match your application contract. Examine the header algorithm (alg) and type (typ) to ensure tokens are signed with the expected method and not handed over unsigned.
Paste a complete JWT into the decoder input field. The tool splits the token at its two dots and base64url-decodes the header and payload segments separately, rendering each as readable JSON. No secret key is required because decoding reveals encoded claims rather than cryptographic proof.
Use the decoded output to correlate token claims with your server-side authorization logic. If a claim is missing or malformed, update your identity provider or token issuance code. Remember that decoding is read-only inspection: never paste production secrets or tokens you do not own into a public decoder, and always verify signatures server-side before trusting any JWT. Treat decoded claims as untrusted input until your authorization layer has validated them.