Record in aggregate · metrics 1.13.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
10,718 of 10,719 indexed
Monthly downloads under inspection
320B registry-reported
Median health index
60 Moderate
Good or better
26% index 70 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.

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

Repositories
24%50%20%
Download volume
36%36%
BandRepositoriesDownloads / moVolume share
Excellent2275.2B1.6%
Good2,53045.8B14%
Moderate5,384116B36%
At risk2,133115B36%
Critical44438.1B12%

Score shapes

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

Vitality79
1100
Community & Adoption49
1100
Sustainability & Governance59
1100
Engineering Quality70
1100
Security46
1100
AI Readiness52
1100

Category profile

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

Vitality
79
Community & Adoption
49
Sustainability & Governance
59
Engineering Quality
70
Security
46
AI Readinessunweighted
52

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
97% of 10,718
License detected
90% of 10,718
Automated tests
88% of 10,718
CI workflows
88% of 10,718
Linter configuration
58% of 10,718
Documentation directory
47% of 10,718
Contributing guide
44% of 10,718
Code of conduct
29% of 10,718
Security policy
25% of 10,718

Agent-era signals

AI agent instructions
39% of 10,718
One-command bootstrap
19% of 10,718
llms.txt
3.9% of 10,718

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 6,757
56 · 47–63
100 – 999 2,085
66 · 56–73
1,000 – 9,999 1,271
72 · 65–78
10,000 and more 605
79 · 72–84

By monthly downloads

Under 10K / month 4,005
57 · 48–65
10K – 1M 1,982
65 · 55–72
1M – 100M 610
73 · 63–80
100M and more 706
49 · 38–62

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.6
Token-Permissions
1.7
SAST
1.9
Pinned-Dependencies
2.2
Code-Review
2.4
Security-Policy
3.2
Vulnerabilities
4.2
Dependency-Update-Tool
4.8
Contributors
6.3
Maintained
6.6
CI-Tests
7.2
License
8.9
Dangerous-Workflow
9.5
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
3473.2% of the record · 3.2% of 10,719 assessed
High-risk jurisdiction exposure
2822.6% of the record · 3.0% of 9,480 assessed
Malicious dependencies
8<0.1% of the record · 0.4% of 2,177 assessed
Inorganic growth
4<0.1% of the record · 0.9% of 439 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 1 day of inspection.

Push recency
87%
Last pushRepositoriesShare
Pushed within 30 days9,29487%
31 – 90 days2762.6%
91 – 365 days4714.4%
Over a year6776.3%

Stewardship & resilience

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

6,855Organization-stewarded median 64
3,863Personal accounts median 55

Maintainer bus factor

71% of inspected repositories depend on a single maintainer for the majority of their commits — including 883 with over a million monthly downloads.

1 maintainer
7,605
2 maintainers
1,805
3–5 maintainers
1,025
6+ maintainers
224

The dependency iceberg

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

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

Resolved packages per repository

0
130
1 – 5
331
6 – 20
585
21 – 50
392
51 – 200
695
201 – 500
1,282
501 – 1,000
1,504
Over 1,000
2,077

License landscape

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

MIT
5,763
Apache-2.0
1,764
Custom license
1,061
No license detected
1,029
AGPL-3.0
287
GPL-3.0
236
BSD-3-Clause
166
ISC
82
MPL-2.0
65
GPL-2.0
62

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
49At riskhealth index
chalk/ansi-regex
Regular expression for matching ANSI escape codes
JavaScript★ 202↓ 2.1B/moJul 22, 2026
MITJul 22, 2026 · metrics 1.13.0
npm
66Moderatehealth index
vercel/ms
Tiny millisecond conversion utility
TypeScript★ 5,541↓ 2.1B/moJul 22, 2026
MITJul 22, 2026 · metrics 1.13.0
npm
68Moderatehealth index
isaacs/node-lru-cache
A fast cache that automatically deletes the least recently used items
JavaScript · TypeScript★ 5,902↓ 2.1B/moJul 22, 2026
BlueOak-1.0.0Jul 22, 2026 · metrics 1.13.0
npm
60Moderatehealth index
sindresorhus/string-width
Get the visual width of a string - the number of columns required to display it
JavaScript★ 529↓ 2B/moJul 17, 2026
MITJul 17, 2026 · metrics 1.13.0
npm
49At riskhealth index
chalk/supports-color
Detect whether a terminal supports color
JavaScript★ 370↓ 1.9B/moJul 22, 2026
MITJul 22, 2026 · metrics 1.13.0
npm
59Moderatehealth index
chalk/chalk
🖍 Terminal string styling done right
JavaScript · TypeScript★ 23.3K↓ 1.8B/moJul 22, 2026
MITJul 22, 2026 · metrics 1.13.0

Reading these figures

  • Every figure is computed from the latest published inspection of each repository, under the versioned methodology (currently metrics 1.13.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-07-23 05:46 UTC; the aggregate is recomputed hourly. The underlying data is available as JSON.