Record in aggregate · metrics 2.10.0

The state of npm.

Aggregate statistics across every inspected repository publishing to npm — how health distributes, where the download volume sits, and which practices are common or rare, measured against the whole record.

Inspected repositories
29,723 of 29,725 indexed
Monthly downloads under inspection
522B registry-reported
Median health index
65 Good
Good or better
52% index 65 and above

Health-index distribution

Latest health index of every inspected repository, in five-point intervals over the 1–100 scale.

Where the download volume sits

Combined monthly downloads by band, against repository counts.

59% of the monthly download volume under inspection flows through repositories below the good band — and the top 1% most-downloaded repositories carry 48% of the entire volume.

Repositories
22%23%23%
Download volume
18%20%18%
BandRepositoriesDownloads / moVolume share
Exceptional1,98760.8B12%
Excellent6,48976B15%
Good6,97876.8B15%
Moderate6,96292.9B18%
Weak3,548105B20%
At Risk2,75095.7B18%
Critical1,00915B2.9%

Score shapes

The distribution behind each category median, in ten-point bins — where the record clusters, and where a category separates repositories or saturates.

Vitality73
1100
Community & Adoption49
1100
Sustainability & Governance59
1100
Engineering Quality70
1100
Security52
1100
AI Readiness61
1100

Category profile

Median category score across the scope. Ticks mark the whole-record median. Categories are documented in the methodology wiki.

Vitality
73
Community & Adoption
49
Sustainability & Governance
59
Engineering Quality
70
Security
52
AI Readinessunweighted
61

The state of practice

Share of inspected repositories where the practice is publicly evident. Reports that predate a signal are excluded from its basis, never counted as missing.

Engineering & community practice

README
95% of 29,723
License detected
91% of 29,723
Automated tests
87% of 29,723
CI workflows
86% of 29,723
Linter configuration
61% of 29,723
Documentation directory
43% of 29,723
Contributing guide
41% of 29,723
Code of conduct
26% of 29,723
Security policy
23% of 29,723

Agent-era signals

AI agent instructions
34% of 29,723
llms.txt
23% of 29,723
One-command bootstrap
18% of 29,723

Signals read by the unweighted AI Readiness category.

Does popularity mean health?

Median health index (dot) and the middle half of repositories (band) per popularity bracket, on the shared 1–100 scale.

By GitHub stars

Under 100 stars 19,725
60 · 45–73
100 – 999 5,846
77 · 60–87
1,000 – 9,999 3,120
86 · 71–92
10,000 and more 1,032
92 · 84–96

By monthly downloads

Under 10K / month 10,907
62 · 48–75
10K – 1M 7,820
73 · 59–86
1M – 100M 3,092
77 · 48–90
100M and more 1,233
50 · 35–77

Security under the microscope

Average OpenSSF Scorecard result per check across the scope, weakest first, on Scorecard's 0–10 scale. Check results are mostly all-or-nothing, so the average tracks how much of the record passes. Checks Scorecard reports inconclusive are excluded from scoring, never counted as zero; each row's tooltip carries its basis.

CII-Best-Practices
0.1
Fuzzing
0.4
Signed-Releases
0.7
Branch-Protection
1.4
SAST
1.8
Token-Permissions
2.0
Code-Review
2.1
Pinned-Dependencies
2.4
Security-Policy
2.9
Vulnerabilities
3.5
Dependency-Update-Tool
4.8
Contributors
6.2
Maintained
6.4
CI-Tests
6.8
License
9.0
Dangerous-Workflow
9.6
Binary-Artifacts
9.7
Packaging
10.0

Red flags

Findings that adjust a rating downward rather than scoring into it. Each is reported as a count, as a share of the whole record, and as a rate among the repositories where it could be determined at all.

Abandonment
2,1867.3% of the record · 7.3% of 29,725 assessed
High-risk jurisdiction exposure
4721.6% of the record · 1.8% of 26,708 assessed
Malicious dependencies
1080.4% of the record · 0.4% of 23,861 assessed
Inorganic growth
5<0.1% of the record · 1.1% of 444 assessed

A red flag needs its own evidence, so its basis is smaller than the record. Growth authenticity is assessed only where day-by-day history was collected; dependency findings only where a dependency graph resolved. Repositories the evidence cannot answer for are left out of the basis rather than counted as passing.

The pulse

How recently each inspected repository last saw a push, at inspection time.

Half of the inspected repositories saw a push within 7 days of inspection.

Push recency
67%20%
Last pushRepositoriesShare
Pushed within 30 days20,01367%
31 – 90 days6,07320%
91 – 365 days1,5115.1%
Over a year2,1267.2%

Stewardship & resilience

Who stands behind the inspected repositories, and how many people the code depends on. Both are read by the governance category.

17,842Organization-stewarded median 73
11,881Personal accounts median 59

Maintainer bus factor

78% of inspected repositories depend on a single maintainer for the majority of their commits — including 3,047 with over a million monthly downloads.

1 maintainer
22,924
2 maintainers
4,147
3–5 maintainers
2,113
6+ maintainers
376

The dependency iceberg

Declared direct dependencies against the full resolved graph (direct plus transitive), across the 21,377 reports with a collected dependency graph.

The median repository declares 5 direct dependencies — and resolves to 458 packages in total.

Resolved packages per repository

0
413
1 – 5
1,031
6 – 20
1,967
21 – 50
1,208
51 – 200
2,392
201 – 500
4,244
501 – 1,000
4,765
Over 1,000
5,357

License landscape

The most common detected licenses across the scope (SPDX identifiers).

MIT
16,585
Apache-2.0
4,724
No license detected
2,809
Custom license
2,643
AGPL-3.0
689
GPL-3.0
571
BSD-3-Clause
430
ISC
357
MPL-2.0
187
GPL-2.0
127

Most relied upon

The most-downloaded repositories under inspection publishing to npm — the records the figures above weigh heaviest. The rest is covered by the full catalogue · tag index.

npm
99Exceptionalhealth index
typescript-eslint/typescript-eslint
:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript
TypeScript★ 16.4K↓ 3.8B/moAug 27, 2026
MITAug 27, 2026 · metrics 2.10.0
npm
50Moderatehealth index
jridgewell/sourcemaps
Monorepo for various sourcemap libraries
TypeScript · JavaScript★ 56↓ 3.8B/moOct 21, 2026
No licenseOct 21, 2026 · metrics 2.10.0
npm
89Excellenthealth index
npm/node-semver
The semver parser for node (the one npm uses)
JavaScript★ 5,472↓ 3.6B/moOct 21, 2026
ISCOct 21, 2026 · metrics 2.10.0
npm
98Exceptionalhealth index
babel/babel
🐠 Babel is a compiler for writing next generation JavaScript.
TypeScript · JavaScript★ 44K↓ 3.3B/moAug 27, 2026
MITAug 27, 2026 · metrics 2.10.0
npm
93Exceptionalhealth index
eslint/js
Monorepo for the JS language tools.
JavaScript★ 2,387↓ 3.3B/moOct 21, 2026
BSD-2-ClauseOct 21, 2026 · metrics 2.10.0
npm
75Goodhealth index
isaacs/minimatch
a glob matcher in javascript
JavaScript · TypeScript★ 3,526↓ 3B/moOct 21, 2026
BlueOak-1.0.0Oct 21, 2026 · metrics 2.10.0

Reading these figures

  • Every figure is computed from the latest published inspection of each repository, under the versioned methodology (currently metrics 2.10.0). See the methodology · band scale.
  • Statistics describe the inspected record — software admitted for inspection, not a random sample of all open source. Admission follows the public-interest criteria.
  • Download figures come from package registries; registries that publish no monthly number (Maven Central, Go, NuGet, RubyGems) contribute no volume rather than zero. Coverage per ecosystem is documented in supported ecosystems.
  • Where a signal is unavailable in a report — an uncollected dependency graph, an inconclusive Scorecard check, a report predating a signal — the repository is excluded from that figure's basis, never counted against it.
  • Health indices are signals of publicly visible practice, not audits or warranties — how to read them is covered by the health index.
  • Figures computed 2026-10-21 09:48 UTC; the aggregate is recomputed hourly. The underlying data is available as JSON.