Typosquatting
Typosquatting in the context of software packages means registering a package name that looks almost identical to a legitimate, popular package — one letter swapped, a missing character, or a common misspelling. When a developer mistype the package name in npm install or pip install, they get the malicious package instead.
Why it keeps working
The npm and PyPI registries are open — anyone can register any available name. There's no automatic protection against names that are suspiciously close to popular packages. By the time security researchers notice and report a typosquatted package, it may have already been installed thousands of times.
The attack is simple and low-effort for attackers. Register expres (missing the final s), add a postinstall script that exfiltrates environment variables to a remote server, and wait. Developers mistype package names all the time.
Common targets
express → expres, expresss, expresjs lodash → lodas, lodashs, lodahs react → reacts, reaact, recat axios → axois, axois, axxios webpack → webpak, webapck, webpackk requests → requets, reqeusts (Python) django → dajngo, djagno (Python)
Real typosquatting incidents
In 2022, researchers found over 200 typosquatted packages on PyPI targeting popular data science libraries. In 2023, a campaign targeted npm packages used in crypto development. In early 2026, the Contagious Interview operation used typosquatted packages as part of a broader developer targeting campaign.
How PackageFix detects it
PackageFix runs a Levenshtein distance check on every package name in your manifest against a hardcoded list of the top 100 packages per ecosystem. A distance of 1 (one character different) triggers a TYPOSQUAT? badge: "Similar to express — verify this is the correct package."
Check your dependencies for CVEs, CISA KEV entries, and supply chain risks.
Open PackageFix →Free · No signup · No CLI · Runs in your browser