JWT Tool
Enter a header and payload in JSON format to generate, copy, decode, and verify HS256-signed JWTs directly in your browser.
Generated tokens are displayed instantly and can be copied with a single click.
All processing happens entirely in your browser; nothing is sent anywhere.
Decode a JWT
Enter the secret to verify the signatureJWT Decoder and Verification Tool
JWTs are commonly used for authentication, session handling, and API authorization. This tool decodes the header and payload of a JSON Web Token in your browser so you can inspect claims such as sub, iss, aud, iat, and exp. It also helps you check token structure and review signature-related data during debugging.
When it helps
- Debug login issues: Confirm whether a token contains the expected user ID, issuer, audience, and expiration time.
- Inspect API authorization: Review token claims before sending requests to protected endpoints.
- Check token lifetime: Convert
iatandexpvalues into human-readable times and spot expired tokens.
Security note
JWT payloads are encoded, not encrypted. Anyone with the token can read the header and payload. Avoid pasting production tokens into tools you do not trust, and never share tokens that contain session or authorization data.
Articles for this tool
JWT Security Deep Dive: Attack Vectors, JWKS, and Production Best Practices
A thorough guide to JWT security — covering the alg:none attack, algorithm confusion, key management with JWKS, token revocation strategies, and a production-ready security checklist.
Understanding JWT (JSON Web Token): Structure, Claims, and Secure Debugging
A comprehensive guide to JWT — how the Header, Payload, and Signature work, which claims matter most, common security pitfalls, and how to safely decode tokens in your browser.
What is JWKS (JSON Web Key Set)?
How JWKS works, what each field in the JSON means, how it's used during JWT signature verification, and what to watch for during key rotation. Generate an RSA key pair and see both JWKS and PEM formats in your browser.
Encoding vs Hashing vs Encryption: The Difference and When to Use Each
Base64 encoding, SHA-256 hashing and encryption are constantly confused, yet serve completely different purposes. A comparison table, concrete examples, and the right choice for each use case.
Recent Articles
curl Options Cheat Sheet: What -X, -H and -d Actually Do
A reference for the curl options you meet in real API work: why -d already implies POST, how -d differs from --data-raw, the @ prefix that silently reads a file, single vs double quotes, and why -k and -L deserve more caution than they usually get.
Converting Between JSON Schema and Zod: How required Maps to .optional()
Inside a two-way converter that turns JSON Schema into a Zod schema and Zod code back into JSON Schema. Covers the inverted defaults between required and .optional(), the constraint mapping table, and how the Zod side is parsed without executing any code.
SQL Clause Order Reference: Why WHERE Can't See Your SELECT Alias
The order you write SQL clauses is not the order the database runs them. A reference for the logical execution order (FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT), why aliases fail in WHERE, when to use WHERE vs HAVING, and the MySQL/PostgreSQL differences that bite.
Unified Diff Format Reference: Reading @@ Hunks in git diff Output
How to read the unified diff format git produces: what the four numbers in @@ -12,7 +12,9 @@ mean, why a one-character edit shows as a whole-line replacement, the whitespace and line-ending traps, \ No newline at end of file, combined @@@ diffs on merges, and rename detection via similarity index.
UTC to JST Reference: The 9-Hour Offset, Cheat Sheet & Timezone Pitfalls
Convert between UTC and JST (Japan Standard Time) with a cheat sheet. Covers what Z and +09:00 mean in ISO 8601, when JavaScript date parsing silently shifts by 9 hours, MySQL/PostgreSQL timezone behavior, and why GitHub Actions cron always runs in UTC.
CREATE TABLE Reference: MySQL vs PostgreSQL vs SQLite Types & Constraints
A cross-database CREATE TABLE (DDL) reference with cheat sheets for data types, auto-increment keys (AUTO_INCREMENT / IDENTITY / rowid), foreign key ON DELETE behavior, and the CHECK constraint that MySQL silently ignores.