Open-Source Wikis

/

Node.js

/

By the numbers

nodejs/node

By the numbers

A snapshot of the Node.js core repository at commit 80e0f14f8e on main (sampled 2026‑04‑30 by walking git log and the working tree).

Numbers are intended to give shape and proportion, not bookkeeping precision.

Repository at a glance

Metric Value
Repository age 2009‑02‑16 → present (≈ 17 years)
Total commits on main ≈ 46 700
Total tags (releases + RCs) 935
Default branch main
Working tree size (incl. .git) ≈ 790 MB
Working tree size (excl. .git) ≈ 670 MB

Code shape

xychart-beta horizontal
    title "Lines of source by tree"
    x-axis ["lib/ JS", "src/ C++", "test/ JS", "doc/api/ Markdown"]
    y-axis "Lines" 0 --> 200000
    bar [153086, 170742, 0, 136583]

The chart omits test/'s line count because the file count there matters more than the line count: 6 679 .js test files plus a large test/fixtures/ tree and test/cctest/ C++ harness.

Tree Files Lines
lib/ (JS, no tests) 315 .js 153 086
src/ (C++, no tests) 204 .cc + 239 .h 170 742
test/ (JS) 6 679 .js very large
doc/api/ 67 .md files 136 583
deps/ (vendored) 30+ subdirectories 662 MB on disk

Largest source files

The biggest C++ files in src/:

Size File What lives there
141 K src/node_file.cc the fs binding
130 K src/node_sqlite.cc the entire node:sqlite implementation
128 K src/js_native_api_v8.cc the V8 backend for Node-API
128 K src/node_http2.cc HTTP/2 + nghttp2 binding
101 K src/quic/session.cc the QUIC session state machine
84 K src/node_options.cc every CLI flag
84 K src/env.cc Environment lifecycle
82 K src/crypto/crypto_context.cc tls.SecureContext
72 K src/crypto/crypto_tls.cc TLSWrap
70 K src/cares_wrap.cc dns.resolve* over c-ares

The biggest JS files in lib/:

Size File What lives there
114 K lib/internal/http2/core.js HTTP/2 high-level core
98 K lib/internal/util/inspect.js util.inspect
97 K lib/internal/webstreams/readablestream.js WHATWG ReadableStream
85 K lib/fs.js node:fs callback + sync surface
76 K lib/internal/quic/quic.js quic JS internals
72 K lib/internal/modules/cjs/loader.js the CommonJS resolver + Module
70 K lib/net.js net.Socket/Server
69 K lib/internal/errors.js every ERR_* registration
53 K lib/internal/fs/promises.js FileHandle + Promise FS API
52 K lib/internal/streams/readable.js the canonical Readable

Activity

Commit volume per calendar year (extracted via git log --format='%ad' --date=format:'%Y'):

Year Commits
2009 915
2010 1 955
2011 2 345
2012 2 369
2013 1 964
2014 1 072
2015 2 314
2016 3 163
2017 4 599
2018 4 684
2019 3 999
2020 3 370
2021 2 583
2022 2 586
2023 2 697
2024 2 604
2025 2 548
2026 (YTD) 904

Activity peaked in 2017–2018 (right after the 4.x → 8.x transition stabilized) and has settled at roughly 2 500–2 700 commits per year since.

Bot-attributed commits

Of the last 12 months of commits (≈ 2 648), about 349 (~13 %) carry a bot author or co-author. The dominant contributors are:

  • Node.js GitHub Bot — auto-PRs from tools/dep_updaters/.
  • nodejs-github-bot — landing automation noise.
  • dependabot[bot] — workflow npm lockfile bumps.

This is a lower bound on AI- or automation-assisted work — inline AI tooling (Copilot, in-IDE code suggestions) leaves no git trace.

Vendored versions

The currently-vendored dependency versions (extracted from deps/):

Dependency Version
Node.js 26.0.0-pre (per src/node_version.h)
V8 14.6.x (per deps/v8/include/v8-version.h)
libuv 1.52.x
OpenSSL 3.5.6 (April 2026)
nghttp2 1.69.0
ngtcp2 1.22.0
c-ares 1.34.6
ICU 78.3
undici 8.1.0
amaro 1.1.8
acorn 8.16.0
zlib 1.3.1 (cloudflare fork)

Maintenance hot-spots

The directories with the largest concentration of TODO/FIXME/HACK comments (across src/ and lib/) total ≈ 443. The bulk of them sit in three areas:

  • src/crypto/ — comments tracking OpenSSL 3.x migration debt.
  • lib/internal/streams/ — hand-written notes about WHATWG / Node-stream interop edge cases.
  • lib/internal/modules/esm/ — markers tracking spec-evolution items (loader v2, import attributes).

Test surface

  • test/parallel/ is the default home for new tests.
  • test/sequential/, test/pummel/, test/known_issues/, test/cctest/, test/wasi/, test/wpt/, test/sea/, test/sqlite/, test/test-runner/, test/embedding/, test/abort/, test/async-hooks/, test/addons/, test/js-native-api/, test/node-api/, and many smaller buckets give different categories their own runners.
  • The runner is tools/test.py (a fork of V8's testpy).

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

By the numbers – Node.js wiki | Factory