If you've worked with any modern web API, you've almost certainly encountered a JWT. They appear in Authorization headers, cookies, local storage — and they look like a long, incomprehensible blob of characters. But they're actually quite simple once you understand the structure.

This guide explains what JWTs are, what's inside them, how to safely decode one, and when you should (and shouldn't) trust them.

What Is a JWT?

JWT stands for JSON Web Token. It's a compact, URL-safe token format used to transmit information between parties — most commonly to verify that a user is authenticated. The JWT specification is defined in RFC 7519.

A JWT looks like this:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFtZWVyIiwiaWF0IjoxNzEzODAwMDAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

It has three parts separated by dots: a Header, a Payload, and a Signature. Each part is Base64URL-encoded.

The Three Parts of a JWT

1. Header

The header declares the token type and the signing algorithm used:

{ "alg": "HS256", "typ": "JWT" }

2. Payload (Claims)

The payload contains the actual data — called claims. These are statements about the user or the token itself:

{ "sub": "1234567890", // Subject (user ID) "name": "Ameer", "email": "[email protected]", "iat": 1713800000, // Issued At (Unix timestamp) "exp": 1713886400 // Expires At }

3. Signature

The signature is created by signing the header + payload with a secret key. It's what allows the server to verify that the token hasn't been tampered with. Without the secret key, you can read the payload but you cannot produce a valid signature.

Important: The payload is only Base64-encoded, not encrypted. Anyone can decode and read it. Never put sensitive data (passwords, credit card numbers, etc.) in a JWT payload.

How to Decode a JWT

Decoding a JWT means reading the header and payload. This doesn't require the secret key — it's just Base64URL decoding. Here's how to do it instantly:

  1. Copy your JWT token
  2. Open EazyStudio's JWT Decoder
  3. Paste the token — the header, payload, and expiry are shown immediately
  4. Check the exp claim to see if the token has expired

Privacy: EazyStudio's JWT decoder runs entirely in your browser. Your token is never sent to any server — it's decoded locally with JavaScript.

Verifying a JWT (vs. Just Decoding)

There's an important distinction between decoding and verifying a JWT:

When debugging, you just want to decode — to see what's in the token. When your server processes a user request, it must verify — to confirm the token is trustworthy. Never skip verification on the server side.

Common JWT Claims Explained

ClaimMeaning
subSubject — usually the user ID
issIssuer — who created the token
audAudience — who the token is intended for
expExpiration time (Unix timestamp)
iatIssued at (Unix timestamp)
jtiJWT ID — unique identifier for the token

When Should You Use JWTs?

JWTs are great for:

JWTs are not ideal for:

Decode a JWT Right Now — Free

Paste any JWT to instantly see the header, payload, and expiration. Runs 100% in your browser.

Open JWT Decoder

Related Articles