Free tool · no signup
npm audit online: scan your lockfile
Paste your package-lock.json or yarn.lock, or drop the file in. You get every known vulnerability and malicious package in your dependency tree, with the version that fixes each one.
By the Bug Circuit security team · Last updated
Free, no signup. Your file is read in your browser. Only package names and versions are sent to osv.dev, the open vulnerability database run by Google, to look up known advisories. No code, paths or registry addresses leave your device.
How it works
How the audit works
The tool reads your lockfile in the browser. For package-lock.json it supports lockfile versions 1, 2 and 3, and it reads yarn.lock in the classic format. It builds a list of every distinct package and version, and marks the ones that are only development tools where the lockfile says so. Local folders, links and git or file dependencies are skipped, because they are not registry releases.
It then asks OSV (osv.dev), the open vulnerability database run by Google, which of those versions have a published advisory. Only package names and version numbers are sent, in batches. The lockfile, your registry addresses and any tokens stay on your device. For each advisory found, the tool reads the details and works out the fixed version for the release line you are on, because many advisories list a separate fix for each line.
The report groups the results by package and sorts them by severity. Advisories that start with MAL are reports of malicious packages: code that steals secrets or runs commands when installed. Remove those and assume any secret the machine could reach is exposed.
What to do with the result
Start with the critical and high items that are not development-only. Run npm audit fix first. It applies every fix that stays inside the version ranges you allow. For a package that remains, find what pulls it in with npm ls and update that parent. A flaw in a development tool matters less to a running site but still matters to your build machine, so do not ignore it.
An advisory is a published flaw, not proof of an attack on you. Whether it can be exploited depends on how your code calls the package. That is why the report keeps the advisory identifiers, so you can read the details. Add the check to your build pipeline as well, because new advisories appear every day for versions that were clean yesterday.
Worked examples
A small old project
Lockfile with lodash 4.17.15, minimist 1.2.0, express 4.17.1 and jest 29.7.0 (development only)
3 of 4 packages have advisories: 9 in total (1 critical, 3 high). lodash 4.17.15: 5, minimist 1.2.0: 2, express 4.17.1: 2. Critical: Prototype Pollution in minimist, fixed in 1.2.6.
Result on 24 Oct 2026. The counts grow over time as researchers publish new advisories.
A clean lockfile
A lockfile where every version is current
No known advisories in 412 packages.
A clean result means nothing is published yet. Check again after each release and in CI.
A malicious package
A lockfile that includes a package reported as malware
Critical: reported as malicious. Remove it.
Remove the package, rebuild from a clean lockfile and rotate any token or key the machine could reach.
Frequently asked questions
Is my lockfile uploaded anywhere?
How is this different from running npm audit?
Which lockfiles does it read?
What does a MAL advisory mean?
Do development dependencies matter?
Why does it find different results from another scanner?
Is there a size limit?
Keep reading
See what attackers see, for free
Run the free passive check on your website. No login, no impact on your site, results in seconds.
Ready for the full manual audit? See pricing