Best Online JWT Decoders Compared (2026)
JSON Web Tokens (JWT) are everywhere in modern web APIs — OAuth 2.0 access tokens, OpenID Connect ID tokens, session tokens, and API authentication. When debugging authentication failures, you need a reliable JWT decoder that can show you the claims, detect expiration, and verify signatures. We tested the top online JWT decoders to help you pick the right one.
Quick Comparison Table
| Feature | CardWise JWT | jwt.io | JWT.ms | DinoTools | TokenDev |
|---|---|---|---|---|---|
| Decode header + payload | Yes | Yes | Yes | Yes | Yes |
| HS256 signature verify | Yes | Yes | Yes | Yes | No |
| RS256 signature verify | Yes | Yes | No | No | No |
| HS384/HS512 verify | Yes | Yes | No | No | No |
| RS384/RS512 verify | Yes | Yes | No | No | No |
| Expiration auto-detect | Yes (visual warning) | Yes | Yes | No | No |
| Standard claim highlighting | Yes (iss/sub/aud/iat/nbf) | Yes | Basic | No | No |
| Client-side only | Yes (zero upload) | Partial | Yes | Yes | No (server) |
| Algorithm confusion detection | Yes (warns none/algorithm) | Yes | No | No | No |
| Real-time decode | Yes (as-you-paste) | Yes | Yes | No | No |
| Mobile friendly | Yes | Yes | Yes | Basic | Yes |
| Privacy | Best (no server) | Good (mostly client) | Good (client) | Good (client) | Poor (server) |
| Price | Free | Free | Free | Free | Free |
1. CardWise JWT Decoder — Most Private & Complete
CardWise (formerly Cupass) offers a comprehensive JWT decoder that runs 100% in your browser — your JWT tokens never leave your device. It supports the widest range of signature verification algorithms and provides the clearest visual feedback for debugging.
Key advantages for developers and security engineers:
- Full algorithm coverage — HS256, HS384, HS512, RS256, RS384, RS512 signature verification
- Zero data upload — everything runs client-side via Web Crypto API
- Expiration auto-detect — visual warning when
expclaim is in the past - Standard claim highlighting —
iss,sub,aud,iat,nbf,expare color-coded - Algorithm confusion warnings — alerts when
alg: noneis used or algorithm mismatch is detected - Real-time decoding — paste a token and see everything decoded instantly
2. jwt.io — The Standard Reference
jwt.io (by Auth0) is the most well-known online JWT tool. It offers decoding, signature verification for multiple algorithms, and a library finder. It also provides JWT.io debugger browser extension.
Pros: Well-known, comprehensive algorithm support, library finder for multiple languages, browser extension available, good documentation.
Cons: Some features may send data to Auth0 servers (analytics), not fully client-side, ads for Auth0 products can be intrusive, UI can be cluttered on mobile.
3. JWT.ms — Microsoft's Tool
JWT.ms is Microsoft's online JWT decoder, primarily aimed at Azure AD developers. It decodes header and payload, shows claims, and detects expiration.
Pros: Clean Microsoft-style UI, good claim display, Azure AD-friendly, client-side processing.
Cons: No RSA signature verification (HS256 only), limited algorithm support, Azure-focused documentation may not apply to general JWT use.
4. DinoTools JWT — Minimal Client-Side Decoder
DinoTools offers a simple, minimal JWT decoder that runs client-side. It shows header and payload in JSON format.
Pros: Lightweight, client-side, no ads, simple.
Cons: No signature verification, no expiration detection, no claim highlighting, no real-time decoding, very basic UI.
5. TokenDev JWT — Basic Server-Side Decoder
TokenDev provides a basic JWT decoder with header and payload display. It processes tokens on a server.
Pros: Simple interface, shows header and payload.
Cons: Server-side processing (your token is uploaded), no signature verification, no expiration detection, no claim highlighting.
Which JWT Decoder Should You Use?
| Use Case | Recommended Tool | Why |
|---|---|---|
| Production token debugging (sensitive) | CardWise JWT | 100% client-side + full algorithm verify |
| RS256 signature verification | CardWise JWT | Client-side RSA verify with public key |
| OAuth/OIDC token analysis | CardWise JWT | Claim highlighting + expiration + privacy |
| Learning JWT + finding libraries | jwt.io | Best documentation + library finder |
| Azure AD token debugging | JWT.ms | Azure-optimized claim display |
| Quick non-sensitive decode | Any tool | Basic decode works everywhere |
JWT Algorithms Quick Reference
| Algorithm | Type | Key Required | Common Use |
|---|---|---|---|
| HS256 | HMAC + SHA-256 | Shared secret | Simple APIs, internal services |
| HS384 | HMAC + SHA-384 | Shared secret | Higher security internal APIs |
| HS512 | HMAC + SHA-512 | Shared secret | Maximum security HMAC |
| RS256 | RSA + SHA-256 | Public/private key pair | OAuth 2.0, OIDC, enterprise APIs |
| RS384 | RSA + SHA-384 | Public/private key pair | High-security enterprise |
| RS512 | RSA + SHA-512 | Public/private key pair | Maximum security RSA |
| none | No signature | None | Development only (security risk!) |
Frequently Asked Questions
Is it safe to paste my JWT token in an online decoder?
Only if the decoder runs client-side. CardWise JWT Decoder processes everything in your browser — your token never leaves your device. jwt.io and JWT.ms are mostly client-side but include analytics tracking. Other tools may transmit your token to a server. JWT tokens can contain user IDs, email addresses, roles, and expiration times, so always verify the tool is client-side before pasting production tokens.
Can I verify a JWT signature online?
Yes. CardWise JWT Decoder supports HMAC verification (HS256/HS384/HS512) by entering the shared secret, and RSA verification (RS256/RS384/RS512) by providing the public key. The tool shows whether the signature is valid or invalid in real-time, all computed locally in your browser via the Web Crypto API.
What does the alg: none header mean?
alg: none means the JWT has no cryptographic signature. This is a known security vulnerability — attackers can modify the token payload and simply change the algorithm to none to bypass verification. CardWise JWT Decoder explicitly warns when alg: none is detected. Never accept alg: none tokens in production.
Why is my JWT token expired?
Check the exp (expiration time) claim in the payload. It is a Unix timestamp. If it is in the past, the token has expired and your API should reject it. Common causes: short token lifetime (e.g., 15 minutes for access tokens), clock skew between client and server, or the token was issued long ago. Use the refresh token to obtain a new access token.