JWT Decoder — Inspect Token Claims & Expiry Free Online

Free JWT Decoder — decode and verify JSON Web Tokens online without login

Decode, validate, and inspect JSON Web Tokens (JWT) instantly. View the header, payload, andsignature status. All processing runs locally in your browser with 100% privacy — no signup or upload required.

Quick Answer

How do I check if a JWT is expired or see its claims?

Paste your JWT into the decoder above. It instantly shows the header (algorithm), payload (claims including exp, iat, sub, aud), and whether the token is currently expired based on the exp timestamp. No private key is needed to decode — JWT payloads are Base64URL-encoded JSON, not encrypted.

Standard JWT claim reference

issIssuer

Identifies the principal that issued the JWT.

subSubject

Identifies the principal that is the subject of the JWT (usually a user ID).

audAudience

Identifies the recipients that the JWT is intended for.

expExpiration Time

Unix timestamp after which the JWT must not be accepted.

nbfNot Before

Unix timestamp before which the JWT must not be accepted.

iatIssued At

Unix timestamp at which the JWT was issued.

jtiJWT ID

Unique identifier for this token to prevent replay attacks.

nameFull Name

User's full name (OpenID Connect standard claim).

emailEmail

User's email address (OpenID Connect standard claim).

picturePicture URL

URL of the user's profile picture (OpenID Connect standard claim).

roleRole

User role or permission level (application-specific claim).

rolesRoles

Array of user roles (application-specific claim).

scopeScope

OAuth 2.0 scope — the permissions granted by this token.

azpAuthorized Party

Client ID of the application the token was issued to.

sidSession ID

Session identifier; can be used to bind token to a session.

JWT algorithm comparison

AlgorithmTypeUse caseSafe?
HS256HMACHMAC with SHA-256. Symmetric: same secret signs and verifies. Simple but secret must be shared. Yes
HS384HMACHMAC with SHA-384. Same as HS256 but larger hash. Rarely needed. Yes
HS512HMACHMAC with SHA-512. Same as HS256 but largest hash. Yes
RS256RSARSA with SHA-256. Asymmetric: private key signs, public key verifies. Preferred for public APIs. Yes
RS384RSARSA with SHA-384. Yes
RS512RSARSA with SHA-512. Yes
ES256ECDSAECDSA with P-256 and SHA-256. Smaller keys than RSA, same security. Preferred for mobile. Yes
ES384ECDSAECDSA with P-384 and SHA-384. Yes
ES512ECDSAECDSA with P-521 and SHA-512. Yes
noneNoneNo signature. The token is completely unsigned and unverifiable. Dangerous
PS256RSA-PSSRSASSA-PSS with SHA-256. More secure than RS256, recommended for new systems. Yes

What the token actually contains

A JWT is three Base64url-encoded chunks separated by dots: a header, a payload, and a signature. The header and payload are readable by anyone — they're not encrypted, just encoded. The signature is what proves authenticity, and it requires the server's secret key to verify.

When an auth bug goes dark — a 401 that shouldn't be happening, a user who can't access a resource they should have permission for — the first step is reading what's actually in the token. I wrote about this in Reading JWT Tokens Without a Library — you can decode any token in 10 seconds with just a browser.

Fields to check when debugging auth

FieldWhat it meansWhat to check
expExpiry time (Unix timestamp)Is it in the past? Compare to Date.now() / 1000
iatIssued at timeIs it suspiciously old or in the future?
issIssuerDoes it match the expected auth server?
audAudienceDoes it include your API/service?
subSubject (user ID)Is it the correct user?
scope / rolesPermissions grantedDoes it include the required scope for this endpoint?
alg (header)Signing algorithmIs it RS256 or HS256? Never "none"

What this tool does NOT do

  • Signature verificationThis tool decodes the header and payload — it does not verify the signature. You need the server's public key (for RS256) or shared secret (for HS256) to verify authenticity. Never trust a JWT's claims without verifying the signature on the server.
  • JWE (encrypted tokens)JWE tokens are encrypted, not just signed. They look like 5-part strings (4 dots). This tool decodes JWS (signed) tokens only — JWE will not decode meaningfully.

The decoder runs entirely in your browser. Your tokens — which may contain user IDs, scopes, and session data — never leave your device.

JWT standard claims — what each field means

The JWT spec (RFC 7519) defines a set of registered claim names. You'll see these in the decoded payload — here's what each one means:

ClaimFull nameMeaningType
issIssuerWho issued the token (e.g., "https://auth.example.com")String
subSubjectThe user or entity the token is about (e.g., user ID)String
audAudienceWho the token is intended for — your API should verify this matchesString or array
expExpiration timeUnix timestamp (seconds) after which the token is invalidNumber
iatIssued atUnix timestamp when the token was createdNumber
nbfNot beforeUnix timestamp before which the token must not be acceptedNumber
jtiJWT IDUnique identifier for this specific token — used to prevent replay attacksString
scope / scpScope (OAuth 2.0)Space-separated list of permissions granted to the tokenString
roles / groupsCustom (not in RFC)User roles or group memberships — added by auth providers like Auth0, OktaArray

Timestamps (exp, iat, nbf) are Unix epoch seconds — divide by 1000 to convert to JavaScript Date milliseconds, or paste into a Unix timestamp converter.

TheFreeAITools — JWT Decoder is a fully private, browser-based tool that decodes and inspects JSON Web Tokens (JWT) instantly. Supports signature validation for HS256, RS256, and other common algorithms. All processing runs locally on your device — your JWT never leaves your computer. The fastest free way to decode JWTs in 2026, with no installs, no accounts, and no hidden limits.

Video demo

☕ Support Us