Encoding 100% in your browser

JWT Decoder

Decode JSON Web Tokens instantly. Reveals the header, payload, and signature. Works offline — your token never leaves the browser.

⚠️ This tool does not verify the signature. Only use it to inspect token contents — never to validate authentication.

JWT Decoder

Paste any JSON Web Token to instantly decode its three parts: the header, the payload, and the signature. Expiry (exp) and issued-at (iat) timestamps are formatted as human-readable dates.

The 3 parts of a JWTA JWT is header.payload.signature.The 3 parts of a JWTeyJhbGciOi…HeaderAlgorithm and token type{"alg": "HS256","typ": "JWT"}.eyJzdWIiOi…PayloadClaims: user, roles, expiry{"sub": "1234567890","name": "John Doe","iat": 1516239022}.SflKxwRJSM…SignatureProves the token was not alteredHMACSHA256(base64(header) + "." +base64(payload), secret)Three Base64URL parts separated by dots.Decoding is not verifying: only the secret key cancheck the signature.
A JWT is header.payload.signature.

JWT structure

A JWT consists of three Base64URL-encoded parts separated by dots: header.payload.signature

  • Header: specifies the token type (typ) and signing algorithm (alg) — e.g. HS256, RS256.
  • Payload: contains the claims — user identity, roles, expiry, and any custom data.
  • Signature: a cryptographic hash that verifies the token was not tampered with. This tool does not verify signatures.

Diagram of a JSON Web Token split into header, payload and signature, with the content of each part

The payload is only Base64URL-encoded, so anyone can read it: never store secrets in it.

Common JWT claims

  • sub — subject (user ID)
  • iss — issuer
  • aud — audience (intended recipient)
  • exp — expiration timestamp (Unix time)
  • iat — issued-at timestamp
  • nbf — not-before timestamp
  • jti — JWT ID (unique identifier)

Security note

JWT payloads are only Base64-encoded — not encrypted. Never put sensitive information in a JWT unless you use JSON Web Encryption (JWE). Always verify signatures server-side.