Unformat.online
More tools
Clean Text
Strip smart quotes, zero-width characters, non-breaking spaces, and invisible Unicode from any pasted text.
Markdown Viewer
Live split-view editor and renderer — edit on the left, preview on the right.
Text Diff Checker
Compare two texts, JSON payloads, or config files and see exactly what changed, line by line.
Log File Viewer
Open multi-gigabyte log files instantly — chunked indexing and virtual scrolling handle 10GB+ files without freezing your tab.
FileSQL
Drop a CSV or JSON file and query it with SQL instantly — no upload, no server.
Format SQL
Format SQL for MySQL, PostgreSQL, BigQuery, T-SQL, and more — uppercase keywords, proper indentation.
Schema Visualizer
Paste CREATE TABLE statements and get an ER diagram instantly — tables, columns, keys, and foreign-key relationships.
Format JSON
Prettify or minify JSON. Auto-fixes single quotes, trailing commas, and unquoted keys.
Format YAML
Format and validate YAML. Catches indentation errors in Kubernetes, Docker Compose, and GitHub Actions files.
Format XML
Indent and pretty-print XML. Works with SOAP, RSS, Maven POM, Android manifests, and SVG.
JWT Debugger
Decode JWTs instantly — view all claims, check expiry, and see the algorithm. Token never leaves your browser.
Shredder
Remove EXIF, GPS, and author metadata from images and PDFs. Redact secrets from text and log files.
SSL Certificate Checker
Check any domain's SSL/TLS certificate — expiry, issuer, and Subject Alternative Names.
PDF Tools
Merge, split, rotate, or sign PDFs, fill in forms, and add text — entirely in your browser, nothing uploaded.
CronScope
Paste a cron schedule and see every run on a 12-month calendar. Never misread a cron expression again.
Regex Tester
Test regex patterns against sample text with live-highlighted matches, or pick from a library of ready-made patterns — no regex knowledge required.
Base64
Encode text or files to Base64, or decode Base64 strings and preview images inline.
URL Encode / Decode
Encode URLs or decode percent-encoded strings like %20, %3D, %26 — instantly.
UUID Generator
Bulk-generate cryptographically random v4 UUIDs using crypto.randomUUID(). Copy one or all at once.

JWT Debugger

Decode and inspect JSON Web Tokens — view claims, check expiry, and identify the algorithm. 100% client-side. Your token never leaves your browser.

Your token is decoded entirely in your browser. The signature is not verified and your token is never sent to any server.

What you can inspect

Decoded Sections
  • Header: algorithm (alg) and token type (typ)
  • Payload: all claims as formatted JSON
  • Expiry: "Expired 3d ago" or "Expires in 2h" from the exp claim
  • Signature: raw Base64Url string (not verified without the key)
Common Token Types
  • OAuth 2.0 access tokens (Google, GitHub, Auth0)
  • NextAuth.js and next-auth session tokens
  • Keycloak, Okta, and Azure AD tokens
  • API gateway authorization headers
  • Microservice-to-microservice auth tokens

100% Private

Decoding happens entirely in your browser using JavaScript. Your token is never sent to any server — not even ours. Open DevTools Network tab to verify zero requests.

Expiry Check

Automatically parses the exp claim and shows whether the token is expired or still valid, with a human-readable time difference (e.g. "Expired 3d ago" or "Expires in 2h").

All Algorithms

Works with any signed JWT: HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, and PS256. The algorithm is shown as a badge on the header panel.

How to Decode a JWT Token

  1. Copy your JWT token — from a browser cookie, an Authorization header, an API response, or a log file.
  2. Paste it into the input box above. The tool decodes the header and payload instantly as you type — no submit button needed.
  3. Inspect the claims. The payload panel shows all claims as formatted JSON. The expiry badge tells you whether the token is still valid.

What is a JSON Web Token?

A JSON Web Token (JWT) is a compact, URL-safe way to represent claims between two parties. It is defined in RFC 7519 and is widely used in authentication and authorization flows — for example, as the access token returned by an OAuth 2.0 server or as a session token in a single-page application.

A signed JWT (technically a JWS — JSON Web Signature) consists of three Base64Url-encoded sections joined by dots:

eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJ1MTIzIn0.SflKxwRJSMeKK...

The first part is the header, the second is the payload (claims), and the third is the signature. Only the first two parts contain readable data — the signature is a cryptographic hash and requires the server's secret to verify.

Standard JWT Claims

The JWT specification defines a set of registered claim names that have specific meanings. Custom claims can be added alongside these.

ClaimNameDescription
subSubjectWho the token is about (user ID, email, etc.)
issIssuerThe server or service that created the token
audAudienceThe intended recipient(s) of the token
expExpirationUnix timestamp after which the token is invalid
iatIssued AtUnix timestamp when the token was created
nbfNot BeforeUnix timestamp before which the token is not yet valid
jtiJWT IDA unique identifier for this specific token

Why Not Verify the Signature Here?

Verifying a JWT signature requires the secret key (for HMAC algorithms like HS256) or the public certificate (for RSA/EC algorithms like RS256 or ES256). This key is confidential — it lives on your server and must never be exposed in a browser tool.

Signature verification belongs in your backend code (using a library like jsonwebtoken in Node.js, python-jose in Python, or java-jwt in Java). This tool is for inspecting claims — checking what's inside a token during development and debugging.

Frequently Asked Questions

Does this tool verify the JWT signature?

No. Verifying a signature requires the secret key or public certificate from your server — information that should never be pasted into a browser tool. This debugger only decodes the Base64Url-encoded parts so you can read the claims.

Is my JWT token sent to a server?

No. Decoding happens entirely in your browser. You can confirm this by opening DevTools → Network tab while pasting a token — you will see zero network requests. Your token never reaches any server.

What is the difference between the header, payload, and signature?

The header contains token metadata — the type (JWT) and the algorithm used to sign it (e.g. RS256). The payload contains the claims — the actual data like user ID, roles, and expiry time. The signature is a cryptographic hash of the header and payload; it proves the token hasn't been tampered with and can only be verified with the private key or secret.

What are the most important claims to check?

Start with exp (is the token expired?), sub (which user does it belong to?), iss (was it issued by the expected authority?), and aud (is it intended for your service?). For OAuth tokens, also look for scope or roles to see what the token is authorized to do.