JWT Validator

See every header, claim, and signature in a readable format. Verify expiration, issuer, algorithm, and more in one place.

Your JWT never leaves your browser

What is a JWT?

JSON Web Tokens (JWTs) are compact, URL-safe tokens used for authentication and authorization in modern web applications. A JWT contains encoded information about a user or system, cryptographically signed to prevent tampering. Validation ensures the token is authentic, hasn't expired, and comes from a trusted source.

JWTs are commonly used in OAuth 2.0 and OpenID Connect flows for secure API authentication and single sign-on (SSO) systems.

How to Use This JWT Validator

  1. Paste your JWT into the input field
  2. Click "Validate" to decode the token
  3. Inspect the decoded header, payload, and claims
  4. Enter a public key to verify the signature (optional)

Note: All validation happens client-side in your browser.

Supported Algorithms

This validator supports the following asymmetric signing algorithms for signature verification:

  • RS256, RS384, RS512 — RSA with SHA-256/384/512
  • PS256, PS384, PS512 — RSA-PSS with SHA-256/384/512
  • ES256, ES384, ES512 — ECDSA with P-256/384/521 curves

Note: HMAC algorithms (HS256, HS384, HS512) require shared secrets and cannot be verified with public keys.

Why Validate JWTs?

JWT validation is critical for security in applications using token-based authentication. Validation prevents:

  • Token tampering: Signature verification ensures the token hasn't been modified
  • Expired credentials: Checking the exp claim prevents accepting stale tokens
  • Unauthorized access: Verifying the issuer (iss) and, when present, the audience (aud) ensures tokens come from trusted sources
  • Replay attacks: Proper validation of claims like nbf (not before) and jti (JWT ID) adds additional security layers

Frequently Asked Questions

Is it safe to paste my JWT into this tool?

Yes. All decoding and validation happens entirely in your browser using the Web Crypto API. No data is sent to any server. Your token never leaves your machine.

Can a JWT be tampered with?

The payload of a JWT is only base64url-encoded, not encrypted, so anyone can decode and read it. However, the signature binds the header and payload together cryptographically. If any part of the token is modified, signature verification will fail. This is why verifying the signature is critical since decoding alone does not confirm the token is trustworthy.

What happens if a JWT has no expiration?

A JWT without an exp claim never expires on its own. This is a security risk. If the token is stolen or leaked, it remains valid indefinitely. Best practice is to always include an exp claim and keep the lifetime short, relying on refresh tokens for long-lived sessions.

What is the difference between JWS and JWT?

A JWT (JSON Web Token) is a claim set encoded as a JSON object. A JWS (JSON Web Signature) is the mechanism that signs and wraps that payload. In practice, most JWTs you encounter are JWS tokens. The three-part dot-separated format is defined by JWS. JWT defines what goes in the payload; JWS defines how it gets signed and serialized.

What is the difference between a JWK and a PEM key?

A JWK (JSON Web Key) is a JSON object that represents a cryptographic key. A PEM file is a base64-encoded format wrapped in header and footer lines like -----BEGIN PUBLIC KEY-----. Both can represent the same underlying key. JWK is more common in modern auth systems and APIs, while PEM is more common in traditional server infrastructure. This tool accepts both formats for signature verification.

How do I get the public key to verify my JWT?

Most authorization servers expose a JWKS endpoint, typically at /.well-known/jwks.json, though some provide a dedicated API endpoint instead. This endpoint returns the public keys used to sign tokens. Find the key whose kid matches the kid in your JWT header, copy the full JWK object, and paste it into the Signature Verification section above. If you control the signing server, you can also export the public key directly in PEM format.

What does the kid claim mean?

The kid (key ID) claim is an optional header parameter that identifies which key was used to sign the JWT. When an authorization server rotates keys, the kid tells the verifier which public key from the JWKS endpoint to use for verification. If your JWT has a kid, look it up in your auth server's JWKS endpoint to get the correct public key.

References & Specifications

The following standards and resources are relevant to JWT validation, security, and token-based authentication: