Tech
JWT decode for debugging (not for secrets or signature checks)

A JSON Web Token is three Base64url segments separated by dots: header, payload, signature. When login fails or an API returns 401, you often need to read claims like exp, iss, aud, and roles. A JWT decoder Base64-decodes the header and payload so you can read that JSON. It does not verify the signature. Decoded claims are untrusted until a server with the right keys validates them. Never paste production secrets or live access tokens into a web page when a local tool will do. This guide covers safe debugging habits, what the Toolsy decoder shows, and how it differs from raw Base64 decode.
Why developers decode JWTs during auth debugging
Tokens hide structure behind opaque strings in logs and browser storage. Without decoding, you guess whether expiry passed, whether the audience matches the API, or whether a role claim is missing. Support tickets stall on “it says unauthorized” with no claim-level detail.
Decode answers “what does this token claim?” Validation answers “should I trust it?” Those are different jobs. Mixing them up creates false confidence: an attacker can craft a token with any payload if you never check the signature.
Local reproduction steps usually need a non-production token from a staging issuer, or a synthetic token from your test suite. Prefer that over copying a prod admin session out of DevTools.
What decode shows (and what it never proves)
The header typically names the algorithm and token type. The payload holds claims: subject, expiry, issuer, custom app fields. The signature is cryptographic material binding header and payload to a key. A decoder that only formats header and payload leaves the signature unread as proof.
Toolsy’s product FAQ is explicit: the decoder does not prove the token is valid; always verify JWTs on a trusted server; treat decoded claims as untrusted data. Read exp to see whether you are debugging an expired token versus a wrong audience. Then fix verification in code, not by “trusting” the pretty JSON.
Decode ≠ verify signature
If your library skips verification in a “debug” branch and that branch ships, you have an auth hole. Keep decode-only tools out of the trust path. Use official JWT libraries on the server with explicit algorithms (avoid none), key rotation, and clock skew settings you understand.
Never paste production secrets
Production access tokens, refresh tokens, and signing keys do not belong in screenshots, chat, or casual web pastes. Even when a page claims client-side-only processing, prefer a local CLI or offline debugger for live secrets. The Toolsy FAQ says prefer local tools for live secrets and avoid pasting prod tokens when you can. Staging tokens with fake users are enough for claim-shape debugging.
How to prepare a token for inspection
Copy the full three-part string, including dots. Truncation mid-segment produces garbage JSON. Strip Bearer prefixes from Authorization headers before paste.
Redact or replace sensitive custom claims in notes you file publicly. You can still learn from exp and iss shapes without publishing a real sub email.
If you only have the payload segment, a generic Base64 decode may reveal JSON, but you lose the structured three-part split and header context. Prefer the JWT decoder for full tokens.
Walkthrough in the JWT decoder
- Open JWT decoder.
- Paste the full header.payload.signature token from staging or a test harness.
- Read the formatted header and payload JSON.
- Check
exp(andnbfif present) against the current time. - Check
issandaudagainst what your API expects. - Clear the page when finished, especially on shared machines.
Decoding runs in the browser with no account. That reduces upload risk; it does not make production pastes a good idea. For broader paste hygiene, see Is it safe to upload documents online?.
Claims to read first
Start with exp, iss, aud, and sub. Then open custom claims your app defines (roles, tenant ids). If exp is in the past, refresh or re-login before you dig into signature configuration. If aud mismatches, fix client configuration before you rotate keys.
JWT decoder versus Base64 decode
A JWT uses Base64url on each part. A single-shot Base64 tool does not split on dots or pretty-print both header and payload. The product FAQ states the JWT decoder formats those parts as JSON instead of decoding one raw string. Use Base64 for ordinary encoded blobs; use the JWT tool for tokens. Integrity hashing of a string is a third job (SHA-256 for file integrity checks).
How to check results and continue debugging
Match decoded claims to your auth server’s documentation. Confirm algorithm in the header matches what the server allows. Investigate alg confusion attacks in your verification code reviews, not by trusting a client-side pretty printer.
If claims look right and the API still rejects the token, the signature or key id (kid) path is the next stop on the server. Decode already did its job.
Log claim summaries in staging with care: writing full tokens to centralized logs recreates the secret-paste problem inside your observability stack.
Related security and integration topics
Team password habits and session hygiene sit next to token handling (Strong password vs passphrase for teams). When you wire Toolsy APIs or widgets, keep secrets server-side per the developer integrations complete guide.
Browser-versus-cloud privacy tradeoffs for AI and upload tools are covered elsewhere in wave 13 trust posts; JWT decode here stays a local, non-verifying inspector.
Limits, privacy, and when not to use this
The Toolsy JWT decoder is free, browser-side, and non-verifying. It will not validate signatures, refresh tokens, or implement OAuth for you. It will not safely handle a paste policy that forbids any web UI.
Do not use decoded JSON as authorization in frontend code alone. Anyone can edit a payload and re-encode it; without signature checks, those edits look “valid” to naive clients.
Frequently asked questions
What does a JWT decoder show?
It Base64-decodes the header and payload so you can read the JSON claims. Toolsy’s FAQ states it does not prove the token is valid. You use it to understand contents while you debug, then verify on a trusted server.
Does this JWT decoder check the signature?
No. Decoding is not verification. Always verify JWTs on a trusted server with the correct keys and allowed algorithms. Treat anything you see in the payload as untrusted data until that check passes.
Is a JWT decoder safe for production tokens?
Prefer local tools for live secrets. Toolsy decodes in your browser and does not upload the token per the FAQ, but you should still avoid pasting production tokens when staging or synthetic tokens suffice. Never drop prod tokens into chat or tickets.
Is Toolsy’s JWT decoder free?
Yes. No account and no daily limit according to the product FAQ. That does not change the rule against pasting production secrets.
How is a JWT decoder different from Base64 decode?
A JWT has three parts. The JWT tool splits them and formats header and payload as JSON. A generic Base64 tool treats one string at a time and will not structure claims for you. See Base64 for non-JWT blobs.
How do I read the exp claim when debugging?
Decode the payload and find exp (usually a Unix second timestamp). Compare it to the current time. If it is expired, refresh the session before chasing signature bugs. Watch millisecond-versus-second mistakes when you convert epochs by hand.
Can someone fake claims if I only decode?
Yes. Without signature verification, crafted tokens can carry any claims. That is why decode-only output must not authorize access. Server-side verification is mandatory for trust.
Should I paste refresh tokens into a JWT decoder?
Avoid it. Refresh tokens are high-value secrets. Debug with low-privilege staging tokens or logging that never leaves your secure environment. Clear browser state after any sensitive paste.
Why does my decoded JSON look wrong?
The token may be truncated, still include a Bearer prefix, or use an unusual encoding. Paste the full three-part string. If only one segment is available, say so in your notes and do not assume header fields you did not see.
Where should JWT verification happen?
On a server or trusted runtime you control, using a maintained JWT library, pinned algorithms, and proper key management. Browser decode tools are for inspection during development, not for enforcing access control.
Decode to see claims; verify to trust them; keep production secrets off the pasteboard. For packing non-token bytes into configs or email HTML, see Base64 encode for email HTML data URLs. For hash fingerprints of text, see SHA-256 for file integrity checks.
Decode a JWT header and payload
Paste a three-part token and read claims as JSON in your browser. Does not verify signatures. Avoid production secrets.


