JWT Decoder

Paste a JSON Web Token to see its header, payload and claims instantly. Expiry dates are shown in readable time, and HS256 signatures can be verified with your secret.

  • Readable exp & iat dates
  • HS256/384/512 verification
  • Token never leaves your browser

How to use the JWT Decoder tool

  1. Paste your tokenPaste a JWT into the box. A “Bearer ” prefix and line breaks are removed automatically.
  2. Read the contentsThe header and payload are decoded and color-coded, with each claim explained in plain English.
  3. Check the datesExpiry (exp), issued at (iat) and not before (nbf) are converted to dates, with a clear Expired / Not expired badge.
  4. Verify the signatureFor HS256, HS384 or HS512 tokens, enter the shared secret to confirm the token is genuine.

Features

  • Instant decodingResults update as you paste. No buttons, no waiting.
  • Human-readable claimsStandard claims such as iss, sub, aud and exp are labelled and explained.
  • Expiry statusSee at a glance whether the token has expired or isn’t valid yet.
  • Signature checkVerify HMAC-signed tokens using WebCrypto, right in your browser.
  • Safe for real tokensTokens are decoded locally and never sent anywhere, so session tokens stay private.

What is a JWT?

A JSON Web Token (JWT, pronounced “jot”) is a compact, URL-safe way to pass claims between two parties. It is widely used for login sessions, API authentication and single sign-on (OAuth 2.0 and OpenID Connect). A JWT has three parts separated by dots:

  1. Header: the token type and the signing algorithm, such as HS256 or RS256.
  2. Payload: the claims, for example who the user is and when the token expires.
  3. Signature: proves the token was created by someone holding the key and hasn’t been changed.

The header and payload are only Base64URL-encoded, not encrypted. Anyone holding the token can read them, which is exactly what this tool does. Never put passwords or other secrets in a JWT payload.

Standard claims

ClaimMeaning
issIssuer: who created the token
subSubject: usually the user ID
audAudience: which app or API the token is for
expExpiration time, as a Unix timestamp in seconds
nbfNot before: the token isn’t valid before this time
iatIssued at: when the token was created
jtiJWT ID: a unique identifier, used to prevent replay

The dates are Unix timestamps. Convert any other timestamp with our Timestamp Converter.

Decoding is not verifying

Decoding only shows what a token claims. A server must also verify the signature, check exp and nbf, and confirm the issuer and audience before trusting it. Tokens with "alg": "none" have no signature at all and must always be rejected.

  • HS256, HS384, HS512 use one shared secret for signing and checking. Enter it above to verify.
  • RS256, ES256, PS256 and similar use a private key to sign and a public key to verify, usually published by the issuer in a JWKS endpoint. Verify these in your backend with a trusted library.

Security tips

  • Keep access tokens short-lived (minutes, not days) and use refresh tokens for longer sessions.
  • Use a long, random secret for HMAC algorithms; a short, guessable secret can be cracked offline. Our Password Generator can create one.
  • Only paste production tokens into tools that run locally, like this one.

Frequently asked questions

Is it safe to paste my JWT here?
Yes. The token is decoded in your browser with JavaScript and is never sent to any server or stored.
Can this tool decrypt a JWT?
Signed JWTs (3 parts) aren’t encrypted, so they can always be decoded. Encrypted tokens (JWE, 5 parts) can only be read with the decryption key.
How do I know if my token has expired?
The exp claim is shown as a date with an Expired or Not expired badge, based on your device’s current time.
Can I verify RS256 tokens?
Not yet. RS256 and other public-key algorithms need the issuer’s public key. This tool verifies HS256, HS384 and HS512 with a shared secret.
Why is my signature invalid?
Usually the secret is wrong, has extra spaces, or is Base64-encoded (tick “Secret is Base64”). It can also mean the token was modified.