Skip to content

Unsigned JWT Builder

Build unsigned JWTs for learning—never for production.

Unsigned JWT Builder constructs a structurally valid but unsigned JSON Web Token from header and payload JSON you provide, entirely in your browser. It exists to teach JWT structure and the dangers of the alg=none vulnerability class—never to produce tokens for real authentication.

How it works

Your header and payload JSON objects are validated and Base64url-encoded independently, then joined as header.payload with an empty trailing signature segment—exactly the shape of a real alg=none JWT. No cryptographic signing operation is ever performed, even if the header claims an algorithm like HS256, to make the point that a JWT's header is unverified metadata.

Benefits

  • Clear, hands-on demonstration of JWT structure
  • Illustrates why the alg header claim can never be trusted blindly
  • Runs entirely client-side—no network calls
  • Useful for building test fixtures for claim-reading (not verification) code

Use cases

  • Teach students or new engineers how JWTs are structured
  • Demonstrate historical alg=none and alg-confusion vulnerabilities
  • Generate test fixtures for parsers that only read claims in trusted test environments
  • Show why signature verification must happen server-side, independent of header claims

Best practices

  • Never accept alg=none tokens in any production authentication or authorization system
  • Always pin the expected signing algorithm server-side instead of trusting the token header
  • Use this tool only in learning, testing, or security-training contexts
  • Pair this demo with a real signing tool (like HMAC Generator) to show the contrast

Common mistakes

  • Mistaking an unsigned demo token for something a real server should accept
  • Assuming setting alg to a strong algorithm in the header makes a token trustworthy
  • Using output from this tool against a real, production authentication endpoint
  • Forgetting that claims in an unsigned token can be changed by anyone with no detection

Privacy

Token construction happens entirely client-side—no header or payload data is uploaded to ToolHub. Because the payload may resemble real claims, on-device history requires explicit opt-in.

Frequently asked questions

Is it ever safe to use alg=none in production?
No, never. The "none" algorithm means no signature at all—anyone can craft any claims they want. Numerous real-world vulnerabilities have come from servers that accepted alg=none tokens. Always require and verify a strong signature algorithm server-side.
Does this tool sign the JWT with any algorithm?
No. This builder never computes a cryptographic signature, regardless of what the header's "alg" field claims. It only Base64url-encodes the header and payload JSON you provide and appends an empty signature segment, for learning purposes only.
Why does the tool still work if I set alg to HS256?
On purpose. This demonstrates that a JWT's header is just self-declared, unverified metadata—setting alg to HS256 in the header does not make the token actually signed. Real signature verification must happen independently, using a trusted key.
What is this tool useful for, then?
It is useful for learning JWT structure, building test fixtures for code that only needs to read claims (not verify signatures) in a trusted test environment, and demonstrating alg-confusion vulnerabilities to students or teammates.
Can a server accept a token built with this tool?
It should not, if the server correctly verifies signatures. If it does accept an unsigned or mis-signed token, that is a serious security bug in that server, not a feature of JWTs.
Does this tool upload my header or payload JSON?
No. Encoding happens entirely in your browser using TextEncoder and Base64url—no network request is made.

Version 1.0.0 · Updated 2026-07-27 · 1 minute