See inside any JWT — header, payload and expiry
Debugging auth means squinting at opaque tokens. Paste a JWT to see its decoded header, payload and expiry instantly — then copy locally. Free to use, with no account needed.
Decode and verify entirely in your browser — nothing is uploaded.
What you can do with JWT Decoder
Everything this tool helps you accomplish — no learning curve, no setup.
- Decode JWT header and payload instantly
- Inspect token claims in readable JSON
- Check whether a token has expired
- Verify the signature with your secret or key
- Debug auth issues during development
- Try a sample token to see the format
Settings information
3 settings
Every control in JWT Decoder, explained — what it does and when to use it.
Settings
- Try sample JWTOne-click
- Loads a demo token with standard claims like sub, iat and exp so you can see decoding and the expiry check in action before pasting your own JWT.
Verify signature
- Verify signatureText input
- Paste the HMAC shared secret (HS256) or the issuer's RSA/EC public key in PEM or JWK format that the token's signature should be checked against.
- VerifyOne-click
- Runs the signature check using the secret or public key you entered and shows a badge reporting whether the signature is valid, invalid or uses an unsupported algorithm.
Done with JWT Decoder? Try these next
Hand-picked tools that pair well with JWT Decoder. Keep going without losing your file.
Base64 Encoder / Decoder
Cryptic Base64 in logs and payloads slows you down. Decode to readable text or encode any text or file — URL-safe, UTF-8 safe, and instant in your browser.
Try it nowHash Generator
Verifying downloads shouldn't need a command line. Drop a file or paste text for instant SHA-1, SHA-256, SHA-384 and SHA-512 digests. Use and copy results free — no account needed.
Try it nowJSON Prettify
One-line API responses are impossible to scan. Paste or drop JSON to validate it, pretty-print at 2, 4, or 8 spaces, or minify it for production — instantly in your browser.
Try it nowURL Encoder / Decoder
Percent-encoded URLs are unreadable, and hand-editing breaks them. Paste any string or full URL to encode or decode it correctly in component or full-URL mode, right in your browser.
Try it nowPassword Generator
Weak, reused passwords get accounts hijacked. Create cryptographically random passwords up to 128 characters with live strength feedback, then copy securely. Free to use, with no account needed.
Try it nowDiff Checker
Eyeballing two versions misses changes. Paste both texts and see every addition and deletion highlighted in split or unified view — then copy the result. Free to use, with no account needed.
Try it nowFrequently Asked Questions
Paste the encoded JWT (the long eyJ… string) into the input box. The tool splits it on the two dots, Base64URL-decodes the header and payload, and shows the JSON for each plus the raw signature segment — all without making any network request.
usageNo. The decoder only parses the token — it does not check the signature against a secret or public key, because verification requires the issuer's key material. Use a server-side JWT library for production verification; this tool is for inspection and debugging.
technicalYou get the header (algorithm and key id), the payload claims (sub, iss, aud, iat, exp and any custom claims) and the raw signature. Standard timestamp claims are formatted as human-readable dates so you can spot stale tokens at a glance.
featuresIf the payload contains the standard "exp" claim, the tool compares it to the current time and shows either "Valid until" or "Token expired at" with the exact timestamp. Tokens without an exp claim are reported as having no expiry.
featuresAnyone who reads the payload of a JWT can use it until it expires, so production tokens belong in private tools. This decoder runs entirely in your browser and never transmits the token, but the safer rule is to decode short-lived development tokens whenever possible.
privacyA JWT has three Base64URL-encoded segments separated by dots: header (signing algorithm), payload (the claims the issuer wants the verifier to trust) and signature (a MAC or digital signature over header.payload). Decoding never needs a key — only verification does.
technicalA compact, URL-safe token made of three Base64URL segments — header, payload and signature — that carries signed claims such as a user ID and an expiry time. It is widely used for stateless login sessions and securing API requests. Paste one above to inspect its header and payload.
technicalBelow the decoded header and payload, paste the signing secret (for HS256) or the issuer's public key in PEM or JWK format (for RS256, ES256 and similar) into the Verify signature box, then click Verify. The badge that appears reports whether the signature is valid, invalid, or uses an algorithm the browser-side verifier doesn't support — all computed locally, without sending the token or key anywhere.
featuresFor HMAC algorithms like HS256 you paste the raw shared secret string. For asymmetric algorithms like RS256, RS384 or ES256 you need the issuer's public key — never the private key — supplied as a PEM block or a JWK; pasting the wrong half of an asymmetric key pair will make verification fail even though the token is valid.
technicalThe Verify signature panel supports every mainstream JOSE algorithm: HS256/384/512 (HMAC with a shared secret), RS256/384/512 (RSASSA-PKCS1-v1_5 with an RSA public key), PS256/384/512 (RSA-PSS with an RSA public key) and ES256/384/512 (ECDSA over the matching P-256/P-384/P-521 curve). Tokens signed with "none" or any algorithm outside this list are always reported as unsupported rather than marked valid, which also protects you from the classic alg=none forgery trick.
technicalThe most common cause is pasting extra whitespace or a trailing newline into the secret box — the verifier hashes the exact bytes you enter, so a copy-paste artifact breaks the match. Also double-check you're verifying the current token: if the JWT was re-issued after you copied it, or the provider's secret is base64-encoded rather than a raw string, decode it first before pasting it in.
tipsClick Try sample JWT to load a demo HS256 token with sub, name, iat and exp claims so you can see decoding and expiry checking work before pasting your own token. Once a token is in the box, a Clear button appears next to it that wipes the input back to empty in one click.
usageEach of the Header, Payload and Signature panels has its own Copy button in its top-right corner that copies only that section's JSON (or the raw signature string) to your clipboard. There's also a primary Copy Payload button below the panels for the most common case of grabbing just the claims to paste into a debugger or bug report.
featuresCopy the value after 'Bearer ' in the Authorization header — the eyJ… part is the JWT itself — and paste it into the decoder to see the header, payload claims and expiry status instantly. If you grab the whole 'Bearer eyJ…' string, remove the 'Bearer ' prefix first so the token has exactly three dot-separated parts.
usageNo — this is a decoder and viewer, not a JWT editor. Changing the payload would invalidate the signature, so any server verifying the token would reject the tampered version. To change claims you must issue a new token signed with the correct secret or private key. Use the decoder to read and debug tokens, not to modify them.
featuresHow JWT Decoder helps you get it done
Real problems it solves every day — for businesses, creators, and everyday tasks. Find the use case that fits you and start in seconds.
Debug OAuth & OpenID Connect Flows
Decode access tokens and ID tokens returned by Auth0, Okta, Cognito and Azure AD to verify scopes, audiences and issuers during local OAuth integration work
Inspect Authorization Headers in API Calls
Paste the bearer token from a failing API request to confirm whether the wrong tenant, role or expiry is to blame before opening a ticket with the backend team
Check Token Expiry During Development
Spot expired tokens that are silently breaking your staging environment by reading the exp claim — no need to copy the token into a terminal or write a quick script
Audit Permissions Encoded in Token Claims
Verify custom claims such as roles, tenants and feature flags so admins can confirm a customer's token grants exactly the access intended by the licence team
Validate Single Sign-On Integrations
Inspect SAML and OIDC tokens produced by enterprise SSO integrations to confirm group memberships and attribute mappings before rolling out to all employees
Teach Token-Based Authentication
Use the decoded header, payload and signature panes to explain how JWTs are structured to bootcamp students, junior engineers and security workshop attendees
Confirm a Partner's Webhook Signing Setup
Paste a partner's RS256 or ES256 public key into Verify signature to confirm their webhook payloads are actually signed correctly before you flip an integration into production.
Investigate a Leaked or Suspicious Token
Decode a token found in logs or a bug report to check its audience, scopes and expiry without needing the signing key, so you can assess exposure fast during an incident.
Debug Mobile App Sign-In Failures
Paste the access token your mobile app receives after login to confirm the expiry, issuer and custom claims match what the backend expects when sign-in works on web but fails on iOS or Android.
Validate Tokens from Firebase, Supabase & Clerk
Decode and inspect tokens issued by modern auth providers like Firebase, Supabase and Clerk to confirm the claims your app reads (uid, role, tenant) are actually present before wiring up authorization logic.
