UtilityToolsLab

© 2026 UtilityToolsLab. Built and maintained by the UtilityToolsLab Team.

Free eBooks·About·Changelog·Privacy Policy·Terms of Service·Report a bug
HomeCode & DevJWT Decoder

Related Tools

JSON FormatterBase64UUID GeneratorTimestampRegex TesterRandom JSON GeneratorAPI Load TesterJSON Diff CheckerJSON Path FinderSchema ValidatorXML FormatterHTML FormatterCSS FormatterCSS MinifierJS MinifierHTTP Status CodesASCII Table

JWT Decoder

Decode and inspect JSON Web Tokens. View header, payload, and signature. Detects expiry and maps all registered JWT claims.

You Might Also Like

All Code & Dev

JSON Formatter

Paste raw JSON to instantly format, beautify, validate and minify it. Syntax errors are pinpointed by line and column. Free and fully private.

Base64

Encode text or data to Base64 and decode Base64 strings back to readable text. A fast developer utility for API payloads, tokens and data URIs.

UUID Generator

Generate RFC 4122 compliant UUID v4 strings with one click, or batch-generate up to 100 unique IDs at once. Cryptographically random and free.

Timestamp

Convert Unix timestamps to human-readable dates and convert dates back to Unix time. Live clock with ISO 8601, UTC, and local formats.

A JWT is not encrypted. It is 3 base64url segments joined by dots, and anyone holding one can read every claim inside it without a key or a password. The JWT Decoder makes that concrete: paste a token and the header and payload appear as formatted JSON, alongside the signature and an expiry verdict.

Decoding re-interprets the raw bytes as UTF-8 before parsing, which sounds pedantic until a claim holds a name like José. The naive approach reads each byte as a Latin-1 character and hands José to the parser, and because that is still valid JSON nothing errors and the corruption goes unnoticed.

Under the two JSON blocks sits a Registered Claim Summary that names the 7 standard claims present in your token, translating iss, sub, aud, exp, nbf, iat and jtiinto English and rendering the three timestamp claims as real dates. The token stays in the page throughout.

A Real Example: The Bundled Sample Token

Press Load sample. The Header block returns {"alg": "HS256", "typ": "JWT"} and the payload carries a subject of 1234567890, a name, an iat of 1516239022 and an exp of 9999999999. The claim summary renders those two epochs as January 2018 and November 2286, which is why the badge above reads Token is NOT expired. That sample is the canonical one from the JWT specification, so its signature is genuinely valid for the secret the spec publishes.

Not a Substitute for Verifying the Signature

  • The signature is displayed and never checked. Verifying it needs the secret or the public key, and doing that in a browser would mean handing your signing key to a web page. The tool says so under the signature block.
  • A decoded payload therefore proves nothing about authenticity. Anyone can craft a token whose claims say admin, and it will decode here exactly as cleanly as a real one.
  • The expiry badge is an arithmetic comparison against your device clock, not an authorisation decision. A token can be within its exp and still be revoked, replayed or issued by the wrong party.
  • A token missing exp gets no badge at all, because absence of an expiry is not the same as being valid, and it is worth noticing on its own.
  • Anything that is not exactly 3 dot-separated parts returns A JWT must have exactly 3 parts separated by dots. Truncated copy and paste is the usual culprit; encrypted JWE tokens have 5 parts and will not decode here either.
  • Treat a production token as a live credential while you have it on screen. It stays in the page, but the person behind you does not need a network request to read it.
Paste a JWT above to inspect it