A lightweight browser extension for decoding and encoding JSON Web Tokens (JWT). View header, payload, and signature with HS256 signing support.
- Parse any JWT — paste a token (Ctrl+V / Cmd+V) and instantly view its decoded components
- Color-coded sections — header (blue), payload (purple), signature (pink)
- Collapsible panels — expand/collapse each section independently
- Standard claims display — automatic detection and formatting of
iss,sub,aud,exp,nbf,iat,jti - Expiry detection — shows expired/valid badge and formats timestamps to human-readable dates
- Copy individual parts — copy header, payload, or signature separately
- Generate signed JWTs — provide a JSON payload and secret key
- HMAC-SHA256 signing — uses Web Crypto API for secure signing
- Copy or download — get the encoded JWT as text or download as
.txtfile
- Dark/light mode — automatic OS detection with manual toggle
- Fully offline — no external API calls, all processing in-browser
- Keyboard shortcuts — Escape to clear input
- Accessible — ARIA labels and keyboard navigation support
- Clone or download this repository
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right corner)
- Click "Load unpacked"
- Select the extension folder
- The JWT Encoder/Decoder icon will appear in your extensions toolbar
The icons/icon.svg file is the master source. Export to PNG at these sizes:
- 16×16px →
icon16.png - 32×32px →
icon32.png - 48×48px →
icon48.png - 128×128px →
icon128.png
storage— Required for dark/light mode preference persistence viachrome.storage.local
That's it! No other permissions are needed. This extension:
- ✅ Works completely offline
- ✅ Never accesses web pages or tabs
- ✅ Never sends data to external servers
- ✅ Never reads your browsing history
- No external libraries — pure vanilla JavaScript
- Manifest V3 — modern Chrome extension standard
- Web Crypto API — uses
SubtleCrypto.sign()for HMAC-SHA256 - Base64URL encoding — proper handling of URL-safe Base64 variant
- UTF-8 support — correctly handles Unicode in JWT payloads
- Open the extension popup
- Click in the text area and paste your JWT token (Ctrl+V / Cmd+V)
- Click "Decode"
- View the color-coded header, payload, and signature sections
- Copy individual parts as needed
- Switch to the "Encode JWT" tab
- Enter your payload as JSON (e.g.,
{"sub": "user123", "iat": 1516239022}) - Enter a secret key
- Click "Generate JWT"
- Copy or download the signed token
- HS256 only — RSA/ECDSA algorithms are not supported for signing
- No signature verification — the extension can decode any JWT but cannot verify signatures (requires the secret key)
- No key storage — secret keys are not saved (for security)
If this extension helped you, consider supporting development:
- ☕ Buy Me a Coffee
- 💖 GitHub Sponsors
- 🍵 Ko-fi
- 💸 PayPal
MIT License - free to use and modify.
v1.0.0 — Initial release
- JWT decode with collapsible sections
- HS256 encoding support
- Dark/light mode theming
- Standard claims detection