Base64url ≠ encryption
A JWT’s header and payload are just base64url text—anyone can read them. Only the signature proves integrity.
.jwt/.txt file.
This decoder splits your JWT into header, payload, and signature. It Base64URL-decodes the first two parts and pretty-prints the JSON. Verification (optional) recreates the signing input (header.payload) and checks the signature locally using the Web Crypto API.
BEGIN PUBLIC KEY or BEGIN RSA PUBLIC KEY).If present, exp, nbf, and iat are interpreted as UNIX seconds and summarized with status chips (valid/expired/not yet valid).
100% client-side. No network requests are made after page load. For sensitive tokens, prefer using this page offline (File → Save As) or the offline bundle.
A JWT’s header and payload are just base64url text—anyone can read them. Only the signature proves integrity.
Change alg or kid and the signature breaks. The header is signed along with the payload.
The infamous "alg":"none" tokens skipped signatures. Modern libraries reject them, but decoders still reveal the claim.
kidA kid (key ID) header tells servers which public key to try. Without it, verifiers may brute-try every key they have.
Claims like exp and nbf usually get a few seconds of leeway. A fast/slow laptop clock can flip a token from valid to expired.