Decode a JWT Without the Secret

You can decode a JWT without the secret because the header and payload are only Base64URL encoded. Paste a token to read it. Verification needs the key.

Part of the free JWT Decoder. Runs in your browser — nothing is uploaded.

Decode a JWT Without the Secret

Reading a JWT does not need a secret. The header and payload are plain Base64URL-encoded JSON. The secret or public key is only needed to verify the signature, which proves the token was not tampered with.

Worked example: Decoding needs no key

JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJzdmMtYmlsbGluZyIsInNjb3BlIjoicmVhZDppbnZvaWNlcyIsImlhdCI6MTc2NzIyNTYwMH0.c2lnbmF0dXJl

Decoded token

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

// PAYLOAD
{
  "sub": "svc-billing",
  "scope": "read:invoices",
  "iat": 1767225600
}

// CLAIM TIMES (UTC)
iat: 2026-01-01 00:00:00 UTC

Practical tip

Decoding is not trust. Always verify the signature and the iss, aud and exp claims on your server before acting on a token.

How to use this JWT Decoder

  1. 1Use the live tool above — it runs entirely in your browser and never uploads your data.
  2. 2Paste the sample from the worked example, or use your own input.
  3. 3Copy the result, then adapt the same steps in your editor, script, or pipeline.

Decode a JWT Without the Secret FAQs

Does decoding prove a JWT is valid?

No. Decoding only reveals contents. Validity requires verifying the signature with the correct key and checking claims such as expiry and audience.

Why is the signature not decoded?

The signature is raw binary produced by a cryptographic algorithm. It is not JSON, so there is nothing readable to show without verifying it against a key.

More JWT Decoder pages

Open the full JWT Decoder tool →