Skip to content
Developer

JWT Decoder

Decode and inspect JSON Web Token header and payload.

jwttokendecodeauth
Loading tool…

About the JWT Decoder

JWT Decoder takes a JSON Web Token and splits it into its three dot-separated segments: header, payload, and signature. Paste the token into the JWT token textarea and decoding is automatic, because there is no button to trigger. The tool converts each base64url segment back to bytes, feeds the header and payload through JSON parsing, and renders both as pretty-printed JSON. The stat tiles summarize the result with Header bytes, Payload bytes, Signature bytes, and Algorithm, which is read straight from the decoded header. The signature segment is displayed as raw hexadecimal bytes under the Header and Payload boxes, since signatures are binary and never meant for human eyes as text. Nothing is verified here; the hint under the input makes that clear with a Decode only, no signature verification note. Malformed input is caught with precise messages such as Expected 3 segments separated by a period, an invalid base64url segment, or a payload that fails JSON parsing, and these surface in a red alert plus a toast. Each decoded part can be downloaded separately as jwt-header.json, jwt-payload.json, or jwt-signature.txt.

JWT Decoder examples

Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkZlcm5hbmRlcyBMYWJzIiwiaWF0IjoxNzAwMDAwMDAwLCJleHAiOjE4MDAwMDAwMDB9.iQGIEeRjOFm4ZgzoAJrypUWpu_cJURN9elCljM5BJ80
Output
Header
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload
{
  "sub": "1234567890",
  "name": "Fernandes Labs",
  "iat": 1700000000,
  "exp": 1800000000
}

Signature (hex)
89018811e4633859b8660ce8009af2a545a9bbf70951137d7a50a58cce4127cd
Note: The decoder splits the token into header, payload, and signature; the Algorithm stat reads HS256 and the signature prints as 32 binary bytes in hex.
Input
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoxODAwMDAwMDAwfQ.eqiS6b1brlCo4KxPnbd3b6klcvxfHuVOcA1YQUO5KpQ
Output
Payload
{
  "sub": "1234567890",
  "name": "Jane Doe",
  "admin": true,
  "iat": 1700000000,
  "exp": 1800000000
}
Note: The Algorithm stat still resolves to HS256 from the header while the payload renders an extra boolean admin claim.
Input
abc.mno
Output
No result — the red alert says Expected 3 segments separated by '.', got 2, and a Malformed JWT toast fires.
Note: The decoder demands exactly three dot-separated segments and refuses to decode anything else.

How to use the JWT Decoder

  1. 1

    Paste a token into the JWT token textarea; decoding happens automatically as you type.

  2. 2

    Wait for the Header and Payload ResultBoxes to render pretty-printed JSON from the decoded segments.

  3. 3

    Read the Algorithm stat to confirm the signing algorithm, then inspect the Signature (hex) box for the raw bytes.

  4. 4

    If a red alert or Malformed JWT toast appears, check that your token has exactly three segments.

  5. 5

    Use the download controls to save jwt-header.json, jwt-payload.json, or jwt-signature.txt individually.

Common use cases

  • Inspecting the claims returned by an OAuth provider and mapping them to local user fields.
  • Auditing the algorithm value when a service reports an unexpected token format.
  • Debugging why middleware rejects a token by checking its three segments and byte sizes.
  • Comparing the signature hex of two sessions to spot mismatched signing keys.
  • Reviewing a token generated by a teammate before it ships in an integration test.
  • Documenting the decoded payload structure for new developers on the auth team.

Best practices

  • Use this tool to inspect tokens you received, never tokens you are about to trust, since no signature verification happens.
  • Strip stray whitespace from pasted tokens, because decoding expects exactly three dot-separated segments.
  • Treat decoded payload data with the same care as the original token, especially sensitive claims.
  • Compare the Algorithm stat across environments when debugging SSO to catch algorithm-swapping drift.
  • Export each decoded part as a file when you need stable snapshots for a diff after a code change.
  • Never paste production tokens into shared machines; run sensitive inspection in a private session.

Tips

  • Confirm the Algorithm stat matches what your server expects before debugging middleware failures.
  • Compare the hex Signature boxes of two tokens to spot signing-key mismatches at a glance.
  • Use the payload download as a scratch file when mapping the claims consumed by your frontend.
  • Remember the Decode only hint — never rely on this tool as proof that a token is authentic.

Frequently asked questions

No, and that is stated right in the interface hint: Decode only, no signature verification. The tool decodes the base64url segments and prints the signature as raw hexadecimal bytes, but it never checks a key or cryptographically validates the token, so it is for inspection, not authentication.

The tool expects exactly three segments separated by periods, matching the header, payload, and signature structure of standard JWTs. Anyone pasting fewer segments gets a red alert that says how many were found, such as Expected 3 segments separated by a period, got 2, and no decoding occurs.

Signatures are raw binary bytes, usually 32 for HS256, that would appear as garbled text if printed directly. Encoding them as hexadecimal makes each byte readable and lets you compare two tokens byte by byte, which is useful when debugging signing mismatches between services.

Segments use base64url, which is standard base64 with plus replaced by minus and slash replaced by underscore, and with padding stripped. The decoder restores the padding, converts those characters back, and reports Invalid Base64URL in a named segment when something outside that alphabet appears.

Header and payload segments must always contain JSON objects, because the decoder runs JSON.parse on the decoded bytes. A failed parse triggers a message that names the segment and shows the first 80 characters of the text, which helps when debugging a token built from a forged or truncated payload.

The stat row shows the decoded byte length of each segment and reads the algorithm value directly from the parsed header, falling back to a dash when the header cannot be read. The bytes reflect decoded size, not base64url text length, so they match the raw binary content.

Explore more developer tools

Browse the full collection of developer tools on the hub, or jump back to all categories.

Related tools

Did this tool help?

Anonymous — one tap, no sign-up.