22
1

JWT Decoder

Egor VolchenkoEgor Volchenko
CreatedNov 9, 2026
UpdatedNov 9, 2026

This JWT decoder reads the first two Base64URL segments of a JSON Web Token and displays its header and payload as JSON. Use it to inspect test claims and algorithm metadata during debugging. Decoding does not authenticate the token or check its expiration.

1
1

How to use JWT Decoder

Follow these steps to check the input and read the result.

Inspect a token’s readable claims

  1. Type or paste the token itself without a Bearer prefix into JSON Web Token (JWT).
  2. Leave Input Encoding: at UTF-8. The decoder reads JWT segments directly; changing this selector does not select another JWT format.
  3. Keep Auto / Live on to update the result as you edit. To process it manually, turn Auto / Live off and click Run.
  4. Read Decoded JWT Header & Payload and check the result before using it.
  5. Click Copy to copy the result. Use Clear where shown, or a field’s clear control, to clear the text before starting again.

For a synthetic example, enter eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkZW1vIn0.test. The decoded header contains "alg": "HS256" and the payload contains "sub": "demo". The final segment is a dummy value, not a valid signature.

Separate readable claims from trust

Fields such as sub, iss, and exp are claims made by the token. This form does not check a signing key, issuer, audience, or time constraints. Treat the displayed values as untrusted until your application validates them.

Recognize partial or malformed input

A normal signed compact token has three dot-separated parts. This implementation can still decode two parts and returns null for a header or payload it cannot parse. Neither readable output nor null output is a complete token-validity decision.

Frequently asked questions

No. The header and payload of an ordinary signed JWT are Base64URL-encoded and can be read without the signing key. A key is needed for signature verification, which this form does not perform.

API — JWT Header & Payload Viewer

Automate this tool directly from your scripts, CI/CD pipelines, or backend applications via HTTP POST.

No API Key Required 60 req/min
https://million.tools/api/v1/run/jwt-decoder

Request Parameters (JSON / Form Data)

  • start (or input)

    JSON Web Token (JWT)

    Type: string Default: —
  • input_encoding

    Input Encoding

    hex hex_ignore_non_hex base64 utf-8 utf-16le utf-16be windows-1251 windows-1252
    Type: string Default: utf-8
bash — cURL
curl -X POST https://million.tools/api/v1/run/jwt-decoder \
  -H "Content-Type: application/json" \
  -d '{"start":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature"}'
const response = await fetch('https://million.tools/api/v1/run/jwt-decoder', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
      "start": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature"
  }),
});

const data = await response.json();
console.log(data.result);
import requests

response = requests.post(
    'https://million.tools/api/v1/run/jwt-decoder',
    json={
        "start": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature",
    },
    timeout=15,
)

data = response.json()
print(data['result'])
$ch = curl_init('https://million.tools/api/v1/run/jwt-decoder');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'start' => 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature',
    ]),
]);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $response['result'] ?? '';
{
    "status": "success",
    "tool": "jwt-decoder",
    "service": "jwt_decoder",
    "result": "{\n    \"header\": {\n        \"alg\": \"HS256\"\n    },\n    \"payload\": {\n        \"sub\": \"123\"\n    }\n}",
    "results": {
        "result": "{\n    \"header\": {\n        \"alg\": \"HS256\"\n    },\n    \"payload\": {\n        \"sub\": \"123\"\n    }\n}"
    }
}
Egor Volchenko
Egor Volchenko Developer & Author

Hi! I’m a WordPress developer with over 10 years of experience. I love Tailwind CSS, clean code, and intuitive interfaces. I’m currently working on million.tools — a service with convenient online tools for everyday tasks. I’m building it from scratch with great attention to detail and user experience.

Published:
Updated:

Ratings & feedback 0

Share your experience with this tool.

Leave feedback

Your rating (optional)

Select a rating

Write a review, leave a rating, or do both.

Your email stays private.

No feedback yet

Be the first to leave a review or rating.