JWT Decoder

JWT Decoder

Paste a JSON Web Token to read its header and payload as formatted JSON, see when it was issued and when it expires, and what each standard claim means. Add the secret or public key to verify the signature. The token is decoded in your browser and never sent anywhere.

HS256, HS384, HS512: the shared secret. RS, PS, ES and EdDSA: the public key as PEM (-----BEGIN PUBLIC KEY-----), a JWK or a JWKS.
  • Header

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

  • Payload

    { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

ExpiryNo expiry date (exp)
AlgorithmHS256 — HMAC with SHA-256 (shared secret)
SignatureNot checked — add the key to verify
Type (typ)JWT
Subject (sub)1234567890
Issued at (iat)Jan 18, 2018, 1:30:22 AM UTC (9 years ago)
Other claimsname

Decoding needs no key: anyone holding a token can read its header and payload, so tokens must never carry passwords or other secrets. Only a valid signature proves the token is genuine and unchanged. The token never left your browser.

Calculated on your device · formulas checked against known results · How we test

How to use the JWT decoder

  1. Paste the token into the box — the long text that starts with eyJ. A copied Authorization: Bearer … header, quotes around the token or line breaks inside it are cleaned up for you.
  2. Read the decoded header and payload as formatted JSON, the expiry status at the top, and the standard claims with their dates in your time zone and how long ago or how far ahead they are.
  3. To check the signature, enter the key: the shared secret for HS256, HS384 and HS512, or the public key for RS, PS, ES and EdDSA tokens, as a PEM block, a JWK or a whole JWKS. The result says Valid signature or Invalid signature.

What is inside a JWT

A JSON Web Token (RFC 7519) is three pieces of base64url text joined by dots: header.payload.signature. The header and the payload are JSON objects, merely encoded — not encrypted — which is why they always start with eyJ, the encoding of {". The header names the signing algorithm (alg); the payload holds the claims, statements about the user or session. The signature is computed over the first two parts exactly as written, so changing a single character of either makes it fail.

ClaimNameMeaning
issIssuerWho created and signed the token, often the login server’s URL
subSubjectWhom the token is about, usually a user ID
audAudienceThe service or services that should accept it; a token for one API must be rejected by another
expExpiration timeAfter this moment the token must be rejected
nbfNot beforeBefore this moment the token must be rejected
iatIssued atWhen the token was created
jtiJWT IDA unique ID, so a server can refuse a token it has seen before

The three dates are NumericDates: seconds since January 1, 1970 (UTC), the same numbers as Unix timestamps. A value with 13 digits is milliseconds — a common bug the decoder points out. Servers usually allow a minute or two of clock skew; the status shown here uses none.

Worked example

RFC 7515, the JSON Web Signature standard, signs this token in its first example (Appendix A.1):

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

Its header decodes to { "typ": "JWT", "alg": "HS256" } — an HMAC SHA-256 token — and its payload to { "iss": "joe", "exp": 1300819380, "http://example.com/is_root": true }. So the issuer is “joe”, there is one private claim (http://example.com/is_root), and exp 1300819380 is 2011-03-22 18:43:00 UTC: decoded in October 2026, the status read “Expired 16 years ago”. To verify it, paste the RFC’s key as a JWK,

{"kty":"oct","k":"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow"}

and the signature shows as valid. Change one letter of the payload and it becomes invalid.

The token already in the box is the well-known example from jwt.io; its secret is your-256-bit-secret. That secret is 19 bytes, shorter than the 32 bytes RFC 7518 requires for HS256, so the decoder flags it once you verify.

Verifying the signature

Security tips

To decode a single base64url part by hand, use Base64 decode; to read a timestamp in other formats, the epoch converter.

Frequently asked questions

Is it safe to paste a JWT here?

The token is decoded and verified by JavaScript in your browser and never sent to a server, and the page doesn’t save it. Still, a valid token works like a temporary password, so the safest habit with any website is to paste expired or test tokens, and to sign out (which revokes some tokens) if you pasted a live one somewhere you don’t trust.

Can I decode a JWT without the secret?

Yes. The header and payload are only base64url-encoded, so no key is needed to read them. The secret or public key is needed only to verify the signature — to prove the token is genuine and unchanged.

Why does the decoder say “Invalid signature”?

Either the token was changed after it was signed, or the key isn’t the one that signed it: a secret from another environment, a missing or extra character, the wrong public key after a key rotation, or a secret that is meant to be Base64-decoded first (paste it as a JWK of type oct).

What is the difference between a JWT, a JWS and a JWE?

A JWS (RFC 7515) is signed data in three parts; a JWE (RFC 7516) is encrypted data in five parts. A JWT (RFC 7519) is a set of claims carried in one of them — almost always a JWS, which is why “JWT” usually means a signed token.

How do I know when a token expires?

Look at Expires (exp): the decoder shows it as a date in your time zone and as “in 2 days” or “3 hours ago”. A token without an exp claim never expires by itself, which is risky for access tokens.

Embed this calculator on your website

Free for any website or blog. Paste this code where you want the calculator to appear:

All free calculator widgets

Last updated: October 16, 2026

Menu

Categories

Finance Calculators30 calculatorsBusiness & Shopping Calculators9 calculatorsHealth & Fitness Calculators13 calculatorsMath & School Calculators23 calculatorsDate & Time Calculators19 calculatorsHoliday Countdowns17 calculatorsEveryday Tools47 calculatorsMic, Camera & Sound Tools10 calculatorsDeveloper Tools10 calculatorsImage & PDF Tools19 calculators

CalcWorthy

AboutContactPrivacy PolicyTerms of Use

Language

Language
EnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語Japanese한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese简体中文Simplified Chinese