Decode and inspect any JWT token. View header, payload claims, and expiry status. No secret required. Runs 100% in your browser.
JWT Token - paste your token below
Paste a JWT token above to decode it
Ctrl+KClear
Share this tool
Found it useful? Help a fellow developer discover it.
https://developertoolkit.dev/tools/jwt-decoder
What is a JWT?
A JSON Web Token (JWT) is a compact, URL-safe token format defined in RFC 7519. A JWT consists of three Base64url-encoded segments separated by dots: header.payload.signature. The header declares the token type and signing algorithm. The payload carries claims, which are statements about the subject (user ID, roles, expiry time, issuer, etc.). The signature proves the token was issued by a trusted party and has not been tampered with. JWTs are used pervasively in OAuth 2.0, OpenID Connect, and API authentication flows. Decoding a JWT to inspect its claims requires only Base64url decoding. No secret key is needed. Verifying the signature, however, requires the original secret or public key.
How to decode a JWT
Copy a JWT from your application (e.g. from localStorage, a network request header, or your auth library) and paste it into the input field.
The token is decoded instantly. The Header section shows the algorithm and token type.
The Payload section shows all claims with human-readable labels for standard ones (exp, iat, sub, etc.).
The expiry badge at the top shows whether the token is currently valid and how much time remains (or how long ago it expired).
Use Copy Header or Copy Payload to copy the decoded JSON for use in other tools.
Standard JWT claims reference
Claim
Full name
Description
iss
Issuer
The principal that issued the token, e.g. https://accounts.google.com
sub
Subject
The entity the token represents, typically a user ID
aud
Audience
The intended recipients of the token, e.g. your API domain
exp
Expiration Time
Unix timestamp after which the token must not be accepted
nbf
Not Before
Unix timestamp before which the token must not be accepted
iat
Issued At
Unix timestamp when the token was issued
jti
JWT ID
Unique identifier for the token, used to prevent replay attacks
Frequently Asked Questions
How do I decode a JWT token online?
Paste the JWT into the input field and the tool decodes it instantly. A JWT is three Base64url-encoded segments separated by dots. This tool splits them, decodes each segment, and displays the header and payload as formatted JSON. No secret key is required for decoding. You only need a secret to verify the signature.
What is the difference between a JWT and a session cookie?
A session cookie stores a session ID on the client and the actual session data lives on the server. On every request, the server looks up the session ID in a database or cache. A JWT stores all the claims directly in the token itself. The server can verify the token and read the claims without a database round-trip, making JWTs well-suited for distributed and stateless architectures.
Is it safe to paste my JWT here?
Yes. This tool runs entirely in your browser. Your JWT is never sent to any server. All Base64url decoding and JSON parsing happens locally in JavaScript. As a general habit, avoid pasting live production tokens into any online tool. Use them only in trusted, browser-local environments like this one.
Can this tool verify the JWT signature?
No. Decoding a JWT only requires Base64url decoding and needs no secret. Verifying the signature requires the original HMAC secret (for HS256/HS512) or the public key (for RS256/ES256). This tool shows the signature bytes but cannot verify authenticity. Use the JWT Generator tool for signing and verification.
What are the standard JWT claims?
RFC 7519 defines several registered claim names: iss (Issuer), sub (Subject), aud (Audience), exp (Expiration Time), nbf (Not Before), iat (Issued At), and jti (JWT ID). All other claims in the payload are private or public claims defined by the application.
Why does "exp" show a timestamp in the past?
The exp claim is a Unix timestamp (seconds since January 1, 1970 UTC). If the current time is past that value, the token is expired. Many JWTs have short lifetimes (15 minutes for access tokens). If you are debugging a production issue with an expired token, the timestamp shown will help you understand when the token was valid.
What algorithms can appear in the header?
Common values for the alg header claim: HS256, HS384, HS512 (HMAC with SHA-2, symmetric), RS256, RS384, RS512 (RSA with SHA-2, asymmetric), ES256, ES384, ES512 (ECDSA, asymmetric), and none (no signature). The alg none variant is a known security risk and should be rejected by properly configured libraries.
Can I decode a JWT from Auth0, Firebase, or Clerk?
Yes. All standards-compliant JWTs from any provider follow the same header.payload.signature format. Paste the token and this tool will decode the header and payload regardless of the issuer or platform.