FreeToolShop LogoFreeToolShop
๐Ÿ›ก๏ธ 100% Client-Side Cryptography

JWT Decoder & Signature Verifier

Instantly decode, verify, and debug your JSON Web Tokens. Check expiration dates, learn claim definitions, and verify HS256 signatures with zero server uploads. Your access tokens and secret keys never leave your browser.

Loading Secure Decoder...

How to Parse and Verify a JSON Web Token

1

Paste Your Token

Paste your encoded `eyJ...` string into the secure left pane. The tool instantly applies IDE-level color-coded syntax highlighting.

2

Verify Signature

If using HS256, enter your secret key. Our Web Crypto engine will cryptographically verify if the token has been tampered with.

3

Analyze Claims

Hover over standard claims (like `sub` or `iss`) to see their definitions, and check the live badge to see if the token is expired.

The Ultimate Guide to JSON Web Tokens (JWT)

JSON Web Tokens (JWT) are an open, industry-standard (RFC 7519) method for representing claims securely between two parties. They are overwhelmingly used in modern web development for Single Sign-On (SSO), REST API authentication, and securely passing user session data.

Despite their complex appearance, a JWT is just a Base64Url encoded string consisting of three distinct parts separated by dots (.).

1. The Header (Red)

The header typically consists of two parts: the type of the token (which is JWT), and the cryptographic signing algorithm being used, such as HMAC SHA256 (HS256) or RSA (RS256).

2. The Payload & Standard Claims (Purple)

The payload contains the "claims." Claims are statements about an entity (typically, the user) and additional data. While developers can add custom data, there are several Registered Claims that provide standard interoperability:

  • iss (Issuer): Identifies the principal that issued the JWT.
  • sub (Subject): Identifies the principal that is the subject of the JWT (often a User ID).
  • aud (Audience): Identifies the recipients that the JWT is intended for.
  • jti (JWT ID): Provides a unique identifier for the JWT to prevent replay attacks.
Security Warning: Never put secret information (like passwords or social security numbers) in the payload or header elements of a JWT unless it is explicitly encrypted. Anyone can decode a standard Base64Url JWT using our tool and read the payload.

3. The Signature & Cryptographic Verification (Blue)

To create the signature part, the server takes the encoded header, the encoded payload, a secret key, and the algorithm specified in the header, and hashes them together.

The signature is the magic that makes JWTs secure. It is used to verify the message wasn't changed along the way. If a hacker intercepts your token and changes "admin": false to "admin": true, the resulting signature will not match what the server expects, and the request will be instantly denied.

How to test this: If your token uses the HS256algorithm, our tool above will reveal a "Verify HS256 Signature" input. Paste your backend secret key into this box. Our tool uses the browser's native Web Crypto API to mathematically verify the signature against the payload, entirely on your local machine.

Understanding JWT Timestamps (`exp`, `iat`, `nbf`)

Handling expiration is a massive pain point for developers. JWTs use Unix Epoch time (the number of seconds since Jan 1, 1970). Our decoder automatically intercepts these fields and translates them into human-readable local times:

  • exp (Expiration Time): The exact moment the token becomes invalid. Our tool shows a red "Token Expired" badge if this time is in the past.
  • iat (Issued At): The exact moment the token was created and handed to the client.
  • nbf (Not Before): A time before which the token must NOT be accepted for processing.

Frequently Asked Questions

Is it safe to paste my production JWT and Secret Key here?

Yes. Our JWT Decoder and Verifier is built entirely with client-side JavaScript. When you paste your token and secret key, it is parsed and cryptographically verified locally within your browser's RAM. No network requests are made, and your data is never logged, stored, or transmitted to any server.

Why does my payload say "Invalid JWT Format"?

A valid JWT must contain exactly three parts separated by two periods (header.payload.signature). If you copy an incomplete string, or if you accidentally copy surrounding quotes from your code editor, the parser will fail. Ensure you are copying the raw, unquoted string.

Can I edit the payload and generate a new token?

No. While anyone can easily decode the Base64Url payload to read the data, you cannot modify the data to create a valid, spoofed token without possessing the server's private secret key used to generate the cryptographic signature.

Debug Your Authentication Safely

Stop guessing why your API requests are failing. Paste your access token above to instantly verify your payload data, test your HS256 signature, and check for expiration issues securely.

Verify Token Now