Free JavaScript static analyzers on SecBench.js injection bugs: 8 tools ranked

On the sealed test half of SecBench.js (64 command and code injection bugs in npm libraries), Penthera 2.0.0 ranked 1st of 8 free tools, with share found in the right file 0.70. odgen scored 0.68, within the margin of error, so read it as a tie. Measured on 25 October 2026.

Which free static analyzer finds the most injection bugs in JavaScript libraries?

Penthera 2.0.0 ranked 1st of 8 free tools by share found in the right file (0.70), within the margin of error of odgen (0.68). Scored by share of command and code injection bugs found in the right file.

  1. Penthera0.70
  2. odgen0.68
  3. codeql0.64
  4. eslint-plugin-security0.64
  5. semgrep0.38
  6. graudit0.34
  7. bearer0.22
  8. njsscan0.05
Score: share found in the right file, relative to the top score. Ranked tools only.

Every tool, with 95% intervals

Counts are found over total. Intervals are 95% Wilson intervals. Penthera's row is bold.

RankToolCommand injectionCode injectionScore: share found in the right file
1Penthera 2.0.035/4710/170.70 [0.58, 0.80] 45/64
2odgen c5157ee36/466/160.68 [0.55, 0.78] 42/62
3codeql 2.27.237/474/170.64 [0.52, 0.75] 41/64
4eslint-plugin-security 4.2.032/479/170.64 [0.52, 0.75] 41/64
5semgrep 1.180.015/479/170.38 [0.27, 0.50] 24/64
6graudit 849d7c712/4710/170.34 [0.24, 0.47] 22/64
7bearer 2.1.114/470/170.22 [0.14, 0.33] 14/64
8njsscan 1.0.12/451/150.05 [0.02, 0.14] 3/60
Not rankedPenthera 1.9.00/4710/170.16 [0.09, 0.26] 10/64
Not rankedsemgrep, every file 1.180.016/479/170.39 [0.28, 0.51] 25/64

Not ranked, and why

Where another tool does better than Penthera

Tools that are not here

Paid tools (GitGuardian, Socket, Snyk, Phylum, Semgrep Pro) are not here. None publishes results on these benchmarks; we cannot measure them (cost and licence terms).

Published elsewhere, on other data

Not comparable with the numbers above: other datasets, other scoring.

Check it yourself

The dataset is SecBench.js. The ranking rules were written down before the run: the protocol. Every number on this page is read from published.json when the site is built; the results file has the method and per-family detail, and the runner's README says how to reproduce it.

Measured on . Sealed test half, scored once (E11b § 10). All four benchmarks.

penthera.org · Benchmarks · Blog · Live check · Terms · Trust · Source · MIT license