DeveloperKit

JWT Decoder

Decode, inspect, and verify JSON Web Tokens. Free, private, and 100% in your browser.

Encoded Token

Decoded Token

The decoded header, payload, and claims will appear here.

What Is a JSON Web Token (JWT)?

A JSON Web Token (JWT, RFC 7519) is a compact, URL-safe string used to pass claims between systems, most often as an OAuth 2.0 access token or an OpenID Connect ID token. It has three base64url-encoded parts separated by dots: a header that names the signing algorithm, a payload with the claims, and a signature that proves the token was issued by someone holding the key.

The header and payload are encoded, not encrypted, so a JWT decoder can read them without any key. Verifying the signature is what tells you whether the token can be trusted. This JWT debugger does both, entirely in your browser.

Structure of a JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9   ← header    {"alg":"HS256","typ":"JWT"}
.eyJzdWIiOiIxMjM0NTY3ODkwIn0          ← payload   {"sub":"1234567890"}
.SflKxwRJSMeKKF2QT4fwpMeJf36POk6y…   ← signature

Features

  • Instant decoding

    The header, payload, and signature are decoded as you paste. A Bearer prefix or surrounding quotes are removed automatically.

  • Expiration at a glance

    exp, nbf, iat, and auth_time are shown as UTC and local dates with a live countdown, so you know immediately whether a token is expired.

  • Signature verification

    Verify HMAC (HS256/384/512) with a secret, or RSA, RSA-PSS, ECDSA, and EdDSA with a PEM key, X.509 certificate, JWK, or JWKS.

  • Claims explained

    Standard claims such as iss, sub, aud, and jti are labeled with plain-English descriptions.

  • Clear error messages

    Malformed tokens, invalid base64url, non-JSON headers, and encrypted JWE tokens are reported precisely.

  • Private by design

    Decoding and verification use your browser's Web Crypto API. Tokens, secrets, and keys never leave your device.

How to Decode and Verify a JWT

  1. Paste the token into the Encoded Token box. A leading Bearer is removed automatically.
  2. Read the decoded header, payload, and claims. The banner shows whether the token is expired.
  3. To verify the signature, enter the shared secret (HS256/384/512) or paste the public key, certificate, or JWKS (RS, PS, ES, EdDSA).
  4. A green Signature verified message confirms the token has not been modified.

Registered JWT Claims

iss (issuer), sub (subject), and aud (audience) identify who issued the token, who it is about, and who should accept it. exp (expiration time), nbf (not before), and iat (issued at) are NumericDate values: seconds since January 1, 1970 UTC. jti is a unique token ID that servers can use to reject replayed tokens.

A server must always verify the signature and check exp, nbf, iss, and aud before trusting a token. Never accept tokens with "alg": "none".

Frequently Asked Questions

Is it safe to paste a JWT here?

Yes. This JWT decoder runs entirely in your browser: the token, secret, and public key are never sent to a server, logged, or stored. Still, treat production tokens like passwords and avoid sharing them, because anyone who has a valid token can use it until it expires.

Does decoding a JWT require the secret?

No. The header and payload are only base64url-encoded, not encrypted, so anyone can read them. The secret or public key is only needed to verify that the signature is genuine and the token has not been changed.

How do I check if a JWT is expired?

Paste the token and look at the status banner above the header. It compares the exp (expiration) and nbf (not before) claims with your current time and shows how long ago the token expired or how long it remains valid.

Which signing algorithms can be verified?

HS256, HS384, and HS512 with a shared secret; RS256, RS384, RS512, PS256, PS384, and PS512 with an RSA public key; ES256, ES384, and ES512 with an EC public key; and EdDSA (Ed25519) in browsers that support it. Keys can be PEM (PUBLIC KEY or RSA PUBLIC KEY), an X.509 certificate, a JWK, or a JWKS. For a JWKS, the key whose kid matches the token header is used.

Why does verification fail with the right secret?

Check whether your secret is stored Base64-encoded. Some libraries and identity providers expect the raw bytes of a Base64 secret; enable Secret is Base64 encoded in that case. Also make sure there are no extra spaces or line breaks in the secret.

Can this tool decode encrypted JWTs (JWE)?

No. A JWE has five parts and its payload is encrypted, so it can only be read with the decryption key. This tool decodes signed tokens (JWS), which is the format used by almost all access tokens and ID tokens.

  • JWT Encoder

    Create and sign JSON Web Tokens with HS256, RS256, ES256, PS256, or EdDSA, and generate test key pairs.

  • Hash Generator

    Generate MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hashes and HMACs of text or files, live as you type.

  • Bcrypt Generator

    Hash passwords with bcrypt at any cost factor and verify a password against an existing bcrypt hash.

  • UUID Generator

    Generate v4, v7, v1, v5, and v3 UUIDs / GUIDs in bulk, and inspect any UUID's version and timestamp.