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 fromtools/dep_updaters/.nodejs-github-bot— landing automation noise.dependabot[bot]— workflownpmlockfile 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.