1. Paste your package.json
2. What looks like a near-miss of a famous package
| Dependency | Field | Close to | Edit distance |
|---|
Not checked (not a registry-backed specifier)
| Dependency | Specifier |
|---|
Want the real answer, not a guess from a name list?
This page compares names against roughly 130 well-known packages hard-coded into it -- it has no way to know whether a name that isn't on that list actually exists. The CLI answers the question that actually matters: is this name registered at all, and if it is, does it look freshly squatted? Same zero-dependency shape as this portfolio's other supply-chain checkers.
node cli.mjs # scan ./package.json against the live registry node cli.mjs path/to/package.json node cli.mjs --json node cli.mjs --strict # also fail CI on a suspiciously new (but real) name
Get cli.mjs and engine.mjs -- Node 18+, nothing to install. It sends only each dependency's name to registry.npmjs.org, one read-only request per name -- the only network call anywhere in this tool.
Real, dated incidents that used exactly this mechanism
| Case | Date | Mechanism | What happened |
|---|
More: what is slopsquatting, and why doesn't a lockfile already protect you. See also how this compares to Socket, an ongoing registry-aware scanning service, and how this compares to just reading package.json by hand.
Common questions
What is slopsquatting?
Registering a package name that a large language model hallucinates in generated code. A May 2025 USENIX Security study found 19.7% of packages recommended by 16 code-generating models did not exist at all. If a developer copies an AI's install suggestion without checking, and an attacker has already registered that exact hallucinated name, the install silently succeeds against the attacker's package instead of failing.
Does this page check the live npm registry?
No, and deliberately so. This page never sends anything anywhere -- it only compares the names you paste against a short built-in list of about 130 extremely well-known packages, entirely in your browser. For the real question -- does this exact name exist right now, and if so how new and untrusted does it look -- use the companion CLI, which is the only part of this tool that touches the network, making one read-only request per dependency to registry.npmjs.org.
Is a flagged name proof of anything?
No. A near-miss of a famous package name can be a coincidence, an unrelated real package, or a genuine typosquat -- this tool cannot tell those apart, on the browser page or in the CLI. A flag means "read this one before you trust it", the same framing this portfolio's other supply-chain checkers use, never a verdict.
Is my dependency data uploaded anywhere?
No. The browser page parses the package.json you paste entirely in your own browser and never sends it anywhere -- there is no fetch call in this page at all. The CLI reads your local file and sends only each dependency's name (never the whole file, never your code) to the public npm registry, one request per name.