JWT in one paragraph
A JWT is three base64-url-encoded segments joined by dots: header, payload, signature. Header declares the algorithm. Payload carries the claims (subject, expiration, custom data). Signature is the issuer\'s tamper-proof seal. The first two are public — base64 is encoding, not encryption. Treating JWT contents as secret is a recipe for sensitive-data leaks.
FAQ
- Why no signature verification?
- Verification needs the issuer's signing key (or JWKS endpoint). For decoding-only inspection — what 95% of debugging needs — a key isn't required. Verify on your server with
joseor your framework's middleware. - Are JWT contents secret?
- No. The payload is base64-encoded — anyone with the token can read it. Never put passwords, social-security numbers, or anything sensitive in the payload. Use opaque tokens or encrypted JWE for that.
- My token doesn't decode — what's wrong?
- Common causes: missing dot separators, copy-paste added whitespace, or it's a JWE (encrypted) — those need a key to even read. JWS tokens (the common case) decode without a key.
- Does it support all algorithms?
- Decoding is algorithm-agnostic — we just split on dots and base64-decode. Verification (which we don't do here) requires algo-specific keys.
Related tools
- Base64 Encode / Decode
UTF-8 safe encode and decode that round-trips emoji, CJK, and URL-safe variants.
- URL Encode / Decode
URL encode / decode with three variants: encodeURIComponent, encodeURI, and form-urlencoded.
- UUID Generator (v4 / v7)
Generate UUID v4 (random) or v7 (time-ordered). Bulk regenerate up to 100 at once.
- Unix Timestamp Converter
Convert between unix timestamps (seconds or ms) and human dates (ISO, RFC, local).