The State of JWT Libraries on JWT.io: A Security Concern

Published: 28 Mar 2025

JWT.io is widely known among developers for its convenient JWT debugger and its curated list of libraries supporting JSON Web Tokens across dozens of programming languages. While it's a helpful resource, there's a serious and often overlooked issue: many of the libraries listed are outdated, unmaintained, or outright insecure.

The Problem: Abandoned and Insecure Libraries

JWT.io not only showcases active libraries—it also lists libraries that haven't seen updates in years, or have even been archived entirely. This poses a significant risk to developers who rely on the site to find a reliable library for implementing JWT in their applications.

📁 Archived Repositories (No Longer Maintained)

💤 Libraries Untouched for Years

Several libraries haven’t been updated in over 5–10 years, making them highly questionable for use in modern applications.

Maturity and Compliance: All Over the Place

The maturity of these libraries varies wildly. One supports a cryptographic algorithm that doesn’t even exist in the JWT specification: HMAC-MD5, or worse—make security design decisions that are completely unsafe.

Examples:

  • One library uses a Regular Expression to extract the algorithm from the JWT header instead of parsing the JSON.
  • Another signs tokens using a random string of random length and the payload as the secret.
  • Some libraries only support HMAC-SHA256, offering no flexibility or standards compliance.

I also tried reporting a security issue to a Scala library: spray-jwt#5 – no response since October 2024.

Raising the Alarm

I raised this problem last year by opening an issue on the JWT.io GitHub repository. Since then, I’ve also submitted multiple pull requests:

Unfortunately, there has been little to no action so far.

Why This Matters

JWTs are commonly used for authentication and authorization—core components of application security. Using outdated or broken JWT libraries can lead to:

  • Token forgery
  • Authentication bypass
  • Insecure cryptographic handling
  • Hard-to-detect vulnerabilities in production

What Can Be Done?

  1. Audit the library list: Libraries should be reviewed periodically for activity and security.
  2. Add metadata: Show last update date, archive status, and supported algorithms.
  3. Let the community flag problems: Add a simple reporting system for issues with listed libraries.
  4. Set a minimum bar: Exclude libraries that don’t follow the JWT spec or use insecure defaults.

TL;DR: JWT.io is a popular and convenient tool, but the library list can be dangerous. Developers may unknowingly choose insecure or abandoned libraries. We need better transparency and active curation to keep the ecosystem secure.

Want to help? Star or comment on the issue I opened here:
👉 jsonwebtoken/jsonwebtoken.github.io#717

Photo of Louis Nyffenegger
Written by Louis Nyffenegger
Founder and CEO @PentesterLab

Join the PentesterLab's Newsletter

Subscribe to get our latest content by email.

    We won't send you spam. Unsubscribe at any time.