Toolkernel
  • CSV
  • JSON
  • Regex
  • PDF
  • JWT
  • YAML
  • Cron
Toolkernel

Free, privacy-focused developer tools that run entirely in your browser.

  • ✓ 100% browser-based
  • ✓ No data uploaded
  • ✓ Free forever

JSON & CSV

  • JSON Formatter
  • JSON Compare
  • JSON Auto-Fix
  • CSV Cleaner & Merger
  • YAML Formatter

PDF Tools

  • Merge PDF
  • Split PDF
  • Compress PDF
  • PDF to Images
  • All PDF Tools

More Tools

  • Regex Tester
  • JWT Decoder
  • Cron Builder

© 2026 Toolkernel. All rights reserved.

Your files never leave your device. Built for developers who value privacy.

  1. Toolkernel
  2. /
  3. JWT Tools
Your tokens never leave your device - unlike jwt.io

Decode & DebugJSON Web Tokens

Instantly decode JWTs from Auth0, Firebase, AWS Cognito, and any provider. View claims, check expiration, and generate parsing code—all 100% in your browser.

Works offline. No data ever sent to servers.

JWT Decoder

Decode and inspect JWT tokens - view header, payload, and signature with claim explanations

Open Decoder
100% Private
Expiry Checker
Code Generator
Instant Decode
100%
Browser-based
0
Data uploaded
∞
Tokens decoded

What is a JSON Web Token (JWT)?

A JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact, self-contained way to securely transmit information between parties as a JSON object. JWTs are digitally signed using a secret (HMAC) or a public/private key pair (RSA or ECDSA), which means the information can be verified and trusted.

JWTs are widely used for authentication (access tokens, ID tokens) and authorization (passing user roles and permissions). When a user logs in, the authentication server issues a JWT containing user claims. The client stores this token and sends it with subsequent requests. Services can verify the token without contacting the auth server, making JWTs ideal for microservices and distributed systems.

JWT Structure: Three Parts Separated by Dots

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Header

Algorithm & Token Type

Payload

Claims (User Data)

Signature

Verification Hash

1Header

The header typically consists of two parts: the token type (JWT) and the signing algorithm (e.g., HS256, RS256, ES256).

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "key-id-123"
}

2Payload

Contains the claims—statements about the user (subject, email, roles) and metadata (issuer, expiration, audience).

{
  "sub": "user-123",
  "email": "user@example.com",
  "exp": 1735689600,
  "iss": "auth.example.com"
}

3Signature

Created by signing the encoded header and payload with a secret or private key. Used to verify the token wasn't tampered with.

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

Standard JWT Claims (RFC 7519)

These registered claim names are defined in the JWT specification and have specific meanings. While all claims are optional, using standard claims ensures interoperability.

ClaimFull NameDescriptionExample
issIssuerIdentifies who issued the JWT. Usually a URL or identifier of your auth server."https://auth.example.com"
subSubjectIdentifies the principal (usually user ID). Should be unique within the issuer context."user_123456"
audAudienceIntended recipient(s) of the JWT. Can be a string or array of strings."https://api.example.com"
expExpiration TimeUnix timestamp after which the token MUST NOT be accepted. Critical for security.1735689600
nbfNot BeforeUnix timestamp before which the token MUST NOT be accepted.1735600000
iatIssued AtUnix timestamp when the token was issued. Useful for determining token age.1735600000
jtiJWT IDUnique identifier for the token. Used to prevent replay attacks."a1b2c3d4-e5f6-7890"

JWT Signing Algorithms Comparison

Choosing the right algorithm depends on your architecture. Symmetric algorithms (HS*) use a shared secret, while asymmetric algorithms (RS*, ES*, PS*) use public/private key pairs.

AlgorithmTypeDescriptionBest For
HS256SymmetricHMAC with SHA-256. Shared secret for sign & verify.Simple apps, internal services
HS384SymmetricHMAC with SHA-384. Stronger hash than HS256.Higher security symmetric needs
HS512SymmetricHMAC with SHA-512. Strongest HMAC option.Maximum symmetric security
RS256AsymmetricRSA with SHA-256. Private key signs, public verifies.OAuth/OIDC, distributed systems
RS384AsymmetricRSA with SHA-384. Stronger than RS256.Enterprise applications
RS512AsymmetricRSA with SHA-512. Strongest RSA option.High-security enterprise
ES256AsymmetricECDSA with P-256 curve. Compact signatures.Mobile apps, IoT devices
ES384AsymmetricECDSA with P-384 curve. Stronger than ES256.Government, financial apps
PS256AsymmetricRSA-PSS with SHA-256. Probabilistic padding.Modern high-security apps

When Do You Need to Decode JWTs?

Debugging Authentication

When users report "401 Unauthorized" errors, decode their JWT to check if it's expired, has the wrong audience, or is missing required claims.

API Development

Inspect tokens during API development to verify your auth server is including the correct claims, scopes, and permissions.

Security Audits

Review what data is being transmitted in tokens. Check for sensitive PII, verify appropriate token lifetimes, and ensure secure algorithms are used.

Learning & Teaching

Understand how JWTs work by decoding real tokens. Great for onboarding new developers or learning about OAuth/OIDC authentication flows.

Why Privacy Matters for JWT Decoding

JWT tokens often contain sensitive information: user IDs, email addresses, roles, permissions, and sometimes API keys or session identifiers. Many popular JWT tools (including jwt.io) transmit your tokens to their servers for processing.

Our decoder is 100% client-side. All parsing happens in your browser using JavaScript. Your tokens are never transmitted anywhere—you can verify this by checking your browser's Network tab while using the decoder. You can even disconnect from the internet after loading the page and continue decoding tokens.

GDPR CompliantSafe for Production TokensWorks Offline

Frequently Asked Questions

How do I decode a JWT token online?

Simply paste your JWT token into our decoder. It will instantly parse the three parts (header, payload, signature) and display the decoded JSON. Our decoder runs entirely in your browser, so your token never leaves your device.

Is it safe to paste my JWT into an online decoder?

With our decoder, yes. Unlike most online JWT tools that send your token to their servers, our decoder processes everything locally in your browser using JavaScript. You can verify this by checking your browser's Network tab—no data is transmitted. You can even use it offline.

Why is my JWT token not working?

Common issues include: expired tokens (check 'exp' claim), tokens not yet valid (check 'nbf' claim), wrong audience ('aud' claim mismatch), signature verification failure (wrong key), or malformed tokens. Use our decoder to inspect all claims and identify the issue.

What's the difference between HS256 and RS256?

HS256 uses a symmetric secret (same key for signing and verifying). RS256 uses asymmetric keys (private key for signing, public key for verifying). RS256 is preferred for distributed systems because you only share the public key; the private key stays on your auth server.

Can I verify JWT signatures with this tool?

You can inspect the signature, but verification requires your secret or public key. For security, never paste secret keys into online tools. Signature verification should be done server-side using JWT libraries in your application code.

How long should JWT tokens be valid?

Access tokens: 5-60 minutes (shorter is more secure). ID tokens: 1 hour (OIDC standard). Refresh tokens: days to weeks, with rotation. High-security apps should use short-lived access tokens with refresh token rotation.

Related Developer Tools

JSON Formatter

Format, validate, and compare JSON data

Regex Tester

Test and debug regular expressions

YAML Formatter

Format and convert YAML configs