JWT Decoder Online

Local processing

Decode JWT headers and payloads locally and inspect exp, nbf, and iat time status.

96 chars · 1 line

122 chars · 10 lines

Algorithm: HS256Signature not verifiedTime status: Not evaluated (no numeric exp/nbf)

JSON Web Token guide

How to decode a JWT

Paste a three-part JSON Web Token to inspect its Base64URL-encoded header and payload. VetaTool formats the JSON, shows the algorithm, converts iat, nbf, and exp claims to ISO dates, and reports whether the numeric time window is active, expired, or not active yet without sending the token over the network. This tool is free to use. No account or payment is required.

Last updated

What you can do here

  • JWT header and payload decoding
  • Base64URL validation
  • Issued-at, not-before, and expiry timestamp display
  • Active, expired, and not-active-yet time status
  • Browser-local token processing

How to use

  1. Paste the complete header.payload.signature token.
  2. Review the formatted header and payload JSON.
  3. Check the algorithm, time status, and any issued-at, not-before, or expiry timestamps.
  4. Verify the token separately with the correct key before trusting it.

What a JWT contains

A compact JWT normally has three dot-separated segments: a header, a payload, and a signature. The first two segments contain Base64URL-encoded JSON objects.

Common registered claims include sub for the subject, iat for the issued-at time, nbf for the not-before time, and exp for the expiration time.

Decoding is not verification

This tool decodes readable token data, but the signature is not verified. A decoded payload can be modified by anyone unless a trusted service validates the signature, algorithm, issuer, audience, and other required claims.

  • Do not treat decoded claims as authenticated data.
  • Do not paste production tokens into tools you do not trust.
  • Use your application or identity provider to perform signature verification.

Strict JWT and NumericDate checks

The decoder requires exactly three non-empty segments, canonical Base64URL data, and JSON objects for both the header and payload. NumericDate claims such as iat, nbf, and exp are displayed as ISO timestamps when they are valid finite numbers. The time status uses only numeric exp and nbf claims: it can report active, expired, not active yet, or not evaluated when the time gates are missing or malformed.

Decoded JWT example

The token header identifies the algorithm and the payload exposes claims such as subject and expiry time.

JWT input

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwiaWF0IjoxNzAwMDAwMDAwfQ.c2lnbmF0dXJl

Decoded output

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234",
    "iat": 1700000000
  }
}
Signature not verified

Common questions

Frequently asked questions

Does this tool verify the JWT signature?

No. It only decodes the header and payload. Signature verification requires the correct secret or public key and trusted validation rules.

Can decoding a JWT expose sensitive data?

Yes. JWT payloads are encoded, not encrypted, so anyone holding the token can usually read the claims.

How are iat, nbf, and exp claims displayed?

Valid numeric values are treated as Unix seconds and shown as ISO dates. Numeric exp and nbf claims are also compared with the current time to report active, expired, or not active yet; this is a time-window check, not signature verification.

Is the token uploaded for decoding?

No. Header and payload decoding run locally in your browser.

Looking for broader references? Browse all developer guides.

Debugging a specific JWT issue? Browse JWT troubleshooting.