Free JWT Decoder Online
Decode JSON Web Tokens (JWT) to view header and payload. Free, fast, and works entirely in your browser with no sign-up required.
Updated
JWT Decoder & Builder
Decode, inspect, validate, and build JSON Web Tokens with full claim explanations, expiry tracking, and multi-language code snippets.
Paste JWT Token
Paste a JWT above to decode and inspect it
What is a JWT? A JSON Web Token (RFC 7519) is a compact, URL-safe token with three parts: a header (algorithm + type), a payload (claims), and a signature. The header and payload are base64url-encoded JSON — not encrypted.
Client-side decoding only. This tool decodes tokens entirely in your browser. Signature verification requires your secret key and should only happen server-side. Treat any JWT containing real credentials with care.
Related Tools
Frequently Asked Questions
What is the JWT Decoder?
The JWT Decoder is a free online tool that decodes JSON Web Tokens to display the header, payload, and signature information in a readable format.
Is the JWT Decoder free and secure?
Yes, it is completely free with no registration required. All decoding happens client-side in your browser, so your tokens are never sent to any server.
What information does it show?
The JWT Decoder displays the algorithm, token type, expiration time, issuer, subject, and all custom claims stored in the JWT payload.
Is my data safe with this tool?
Absolutely. The JWT Decoder processes everything client-side in your browser. No data is uploaded to or stored on any server. Your content remains private on your device at all times.
Does the JWT Decoder work on mobile devices?
Yes, the JWT Decoder is fully responsive and works on smartphones and tablets. You can use it on any device with a modern web browser -- no app download required.
Do I need to create an account to use this tool?
No account or registration is needed. Simply open the JWT Decoder in your browser and start using it immediately. There are no sign-up walls or usage restrictions.
How do I use the JWT Decoder?
Simply enter your input in the provided field, adjust any settings to your preference, and the tool will process it instantly. You can then copy the result to your clipboard or download it.
Which browsers are supported?
The JWT Decoder works in all modern browsers including Chrome, Firefox, Safari, Edge, and Opera. For the best experience, use the latest version of your preferred browser.
Is it safe to paste a JWT into an online decoder?
Reading a JWT is safe because the header and payload are only Base64URL-encoded, not encrypted — anyone holding the token can decode them, so inspecting the claims reveals nothing that was meant to stay secret. The real risk is where the token travels: a live access token is an active credential, so pasting one into a service that transmits it to a server could expose your session. This tool avoids that entirely by decoding everything locally in your browser; the token is never uploaded, logged, or stored remotely. As a precaution, only decode tokens you are authorized to inspect, treat any active token as a password you would not paste publicly, and avoid sharing the URL or a screenshot of the decoded payload. Paste your token above to see its claims decoded instantly, entirely client-side with nothing leaving your device.
Why does decoding a JWT not verify whether it is valid?
Decoding and verifying are two separate operations. Decoding simply Base64URL-decodes the header and payload so you can read the claims — it requires no key and proves nothing about authenticity. Verifying means recomputing the signature with the issuer's secret or public key and confirming it matches, which is the only way to know the token was not tampered with or forged. This decoder reads the token and displays the raw signature segment for reference, but it does not cryptographically check it, so treat a decoded payload as informational rather than proof. To actually verify, you need the signing key, which should stay on your backend. The Snippets tab provides ready-made verify-and-sign code for Node.js, Python, Go, Java, PHP, and Ruby so you can validate the token correctly in your own service.
How do I tell when a JWT expires from its claims?
Expiry lives in the exp claim, a Unix timestamp (seconds since 1970) marking the moment the token stops being valid. Two related claims set the window: iat is when the token was issued and nbf is the earliest time it may be used. Raw numbers are hard to read, so this decoder converts exp, iat, and nbf into human-readable dates and shows a live status indicating whether the token is currently valid, expired, or not yet active. That makes "why am I getting a 401?" bugs obvious in seconds — an expired exp is one of the most common causes. Keep in mind these timestamps are world-readable and unverified until you check the signature, and that they are recorded in UTC, so factor in your own time zone when reading them. Paste your token to see its issued-at, not-before, and expiry times decoded into clear dates at a glance.
What is the difference between the header and payload in a JWT?
A JWT has three dot-separated parts: header.payload.signature. The header describes how the token is signed — mainly the alg (signing algorithm, such as HS256 or RS256) and typ (token type). The payload carries the claims: statements about the user or session like iss (issuer), sub (subject), aud (audience), exp (expiry), and any custom or OIDC fields your system adds. The signature, computed from the header and payload using a key, is what lets a server verify the other two parts were not altered. This decoder splits the token automatically, labels the algorithm as symmetric or asymmetric, and explains each registered claim in plain English. Because both header and payload are merely encoded, never store passwords or secrets in them. Paste a token above to see its header and claims separated and described.
Can I create a test JWT with this tool?
Yes — the Builder tab lets you compose a JWT structure for testing. Pick a signing algorithm, set an expiry in minutes, and add your own claims, and it assembles the matching header and payload for you. Crucially, the output is intentionally unsigned: it includes a placeholder where the real signature belongs, which you generate on your backend. This is deliberate, because signing in the browser would expose your secret — a symmetric HS256 key, for example, must stay server-side, or anyone viewing the page source could forge valid tokens. So the Builder is ideal for mocking up token shapes, prototyping claim sets, or producing sample payloads for documentation, not for issuing production credentials. Switch to the Builder tab to draft a token structure, then sign it securely in your own service.
Embed This Tool
Add a free, live version of this widget to your own website or blog post — it runs entirely in your visitors' browsers, with a credit link back to The Toolbox.
<iframe src="https://getthetoolbox.com/embed/jwt-decoder" title="Free JWT Decoder Online — The Toolbox" width="100%" height="350" style="max-width:480px;border:1px solid #e2e8f0;border-radius:12px" loading="lazy"></iframe>
<p style="font-size:12px;margin:4px 0 0"><a href="https://getthetoolbox.com/utility-tools/jwt-decoder?utm_source=embed&utm_medium=widget" target="_blank" rel="noopener">Free JWT Decoder Online</a> by The Toolbox</p>Related Tools
Free Secure Password Generator
Generate secure, random passwords with customizable options. Free, fast, and works entirely in your browser with no sign-up required.
Free UUID/GUID Generator
Generate universally unique identifiers (UUIDs/GUIDs). Free, fast, and works entirely in your browser with no sign-up required.
Free QR Code Generator Online
Create QR codes for URLs, text, WiFi, and contacts. Customize colors, size, and error correction. Free, private — runs in your browser, no sign-up.
Free JSON Formatter & Validator
Format, validate, and beautify JSON data with syntax highlighting and error detection. Free, fast, and works entirely in your browser with no sign-up required.
About the JWT Decoder
The JWT Decoder is a free online tool for reading the contents of a JSON Web Token. Paste a token and it splits it into its three parts, decodes the header and payload from Base64URL, and lays out every claim in a readable, syntax-highlighted view. It is built for the developers, QA engineers, and support staff who run into a JWT while debugging a login flow, an API call, or a single sign-on integration and need to know exactly what is inside it.
A JWT is made of three Base64URL-encoded segments separated by dots: a header, a payload, and a signature (header.payload.signature). The encoding is not encryption — anyone holding the token can read the header and payload — so decoding one to inspect its claims is completely safe and tells you nothing secret. This tool does that decoding for you, then explains what each field means.
Everything runs locally in your browser. Your token is never uploaded, logged, or stored on a server, which matters because a real access token is a live credential — pasting one into a service that transmits it could expose an active session. There is no sign-up and nothing to install.
What the decoder shows you
- Header — the signing algorithm (
alg) and token type (typ), with a plain-English note on the algorithm. It recognises the HMAC family (HS256/384/512), RSA (RS256/384/512), ECDSA (ES256/384/512), and RSA-PSS (PS256/384/512), and labels each as symmetric or asymmetric. - Payload claims — every claim, with descriptions for the registered ones:
iss(issuer),sub(subject),aud(audience),exp(expiry),iat(issued-at),nbf(not-before), andjti(the unique token ID used to block replay attacks). OIDC and custom claims are shown too. - Timestamps — the numeric
exp,iat, andnbfvalues are converted to human-readable dates so you can see at a glance when a token was issued and when it lapses, plus a live status showing whether it is currently valid, expired, or not yet active. - Signature — the raw signature segment, displayed for reference. The decoder reads tokens; it does not cryptographically verify the signature, so treat a decoded payload as informational, not as proof the token is authentic.
Build a test token
A second tab lets you compose a JWT structure for testing. Pick an algorithm, set an expiry in minutes, and add your own claims, and it assembles the matching header and payload. The output is intentionally unsigned — you replace the placeholder with a real signature generated on your backend. Never sign a token in the browser with a production secret; a symmetric secret like an HS256 key must stay server-side, or anyone viewing the page source could forge valid tokens.
Copy-ready code snippets
The Snippets tab provides ready-made verify-and-sign examples in several languages and libraries — Node.js, Python, Go, Java, PHP, and Ruby — so you can move from inspecting a token to handling it correctly in your own service. A History tab keeps your recent decodes within the session for quick comparison.
Why inspecting tokens matters
Most "why am I getting a 401?" bugs come down to something visible in the payload. An expired exp, an aud that does not match the API you are calling, a wrong iss, or a missing scope are all readable in seconds once the token is decoded. Spelling out claims this way also helps when you are learning how authentication works or reviewing what personal data a token carries — a useful habit, since claims are world-readable and should never hold passwords or secrets.
Paste a token above to see its header, claims, and expiry decoded instantly, or switch to the Builder to mock up a token structure for your tests.