The Deno vs Node.js comparison on OctoCounts shows side-by-side source line counts for denoland/deno and nodejs/node, counted under the rules and on the dates stated below: files, total lines, code lines, comment lines, blank lines, and per-language totals, pinned to the exact commits listed below.
This page compares the source lines of code (SLOC) of denoland/deno and nodejs/node using cached OctoCounts reports. Code size is not code quality: a larger count only means more source material, not a better or worse project.
As of 2026-10-26, denoland/deno contains 1,194,932 total lines (948,404 code) across 2,020 files, while nodejs/node contains 13,338,800 total lines (10,499,039 code) across 21,532 files as of 2026-10-29. nodejs/node has about 11x the counted code lines of denoland/deno under the same engine and counting rules. Code size is not code quality: a larger count only means more source material, not a better or worse project.
| Metric | denoland/deno | nodejs/node |
|---|---|---|
| Files | 2,020 | 21,532 |
| Total lines | 1,194,932 | 13,338,800 |
| Code lines | 948,404 | 10,499,039 |
| Comment lines | 171,109 | 1,483,818 |
| Blank lines | 75,419 | 1,355,943 |
| Languages counted | 15 | 53 |
Top languages in denoland/deno: Rust (53.3% of code), JavaScript (29.4% of code), TypeScript (14.9% of code). Top languages in nodejs/node: C Header (23.6% of code), GNU Style Assembly (18.7% of code), Perl (17.7% of code). C appears in both top language lists; Rust, JavaScript, TypeScript, TOML appear only in denoland/deno's top languages; C Header, GNU Style Assembly, Perl, C++ appear only in nodejs/node's top languages.
Methodology: both counts come from cached OctoCounts reports generated with tokei. denoland/deno was counted at ref main (commit e7b39ebd55c8) on 2026-10-26; nodejs/node was counted at ref main (commit 502c117e8ef0) on 2026-10-29. See the counting methodology for ignored directories and analysis options.
Both reports use the same engine and effective counting rules. Repository declarations, when enabled, are specific to each repository. denoland/deno: tokei-14.0.0, policy directories-v1; docs excluded, tests excluded, generated excluded. Excluded directory names: .cache, .generated, .git, .next, __tests__, build, dist, doc, docs, documentation, fixtures, gen, generated, node_modules, target, test, tests, vendor. Ignored languages: none. Repository declarations: off. Exclusions are rule-based; they do not prove that every test, document or generated file was removed. nodejs/node: tokei-14.0.0, policy directories-v1; docs excluded, tests excluded, generated excluded. Excluded directory names: .cache, .generated, .git, .next, __tests__, build, dist, doc, docs, documentation, fixtures, gen, generated, node_modules, target, test, tests, vendor. Ignored languages: none. Repository declarations: off. Exclusions are rule-based; they do not prove that every test, document or generated file was removed.
Background observations recorded on 2026-09-16; language descriptions here are historical context, not claims about the current filtered shares. Use this page's measured language breakdown for current counts. Repository layout before counting filters: denoland/deno is the Deno runtime repository: the Rust core that embeds V8, the TypeScript/JavaScript runtime and standard-library surface, the CLI, and tooling. nodejs/node is the Node.js repository: the C/C++ runtime and bindings, the JavaScript standard library under lib/, and vendored third-party sources under deps/. Neither count includes V8's own source; both consume it at build time. Both trees were counted on the dates in the methodology line above.
Both runtimes combine native implementation code with higher-level runtime APIs. The language totals depend on the pinned tree and exclusions; they are not measurements of runtime speed or standards coverage.
Node's lib/ directory and Deno's runtime API code are distinct from native bindings and embedded engines. Inspect the pinned tree to determine which layers contribute to a particular count.
These counts do not measure runtime performance, startup time, or compatibility with the existing npm ecosystem — those are properties of the shipped binaries, not of the repositories' line counts.
Sources: denoland/deno repository · nodejs/node repository. Statements verified 2026-09-16.
Evidence and next steps:
Saved reports remain subject to cache cleanup and replacement. Export their JSON for durable citation; live report URLs can change.
Note: code size is not code quality. OctoCounts only reports reproducible line counts and makes no claim that either project is better.
As of 2026-10-26, denoland/deno contains 1,194,932 total lines (948,404 code) across 2,020 files, while nodejs/node contains 13,338,800 total lines (10,499,039 code) across 21,532 files as of 2026-10-29. nodejs/node has about 11x the counted code lines of denoland/deno under the same engine and counting rules. Code size is not code quality: a larger count only means more source material, not a better or worse project.
Not necessarily. SLOC measures size, not complexity, quality, or maintainability. A larger codebase can mean more features, more generated or vendored code, more verbose language idioms, or more tests — none of which imply the code is harder to work with. Use SLOC to gauge the scale of what you'd be reading or maintaining, not as a quality signal for denoland/deno, nodejs/node, or any repository.
Methodology: both counts come from cached OctoCounts reports generated with tokei. denoland/deno was counted at ref main (commit e7b39ebd55c8) on 2026-10-26; nodejs/node was counted at ref main (commit 502c117e8ef0) on 2026-10-29. See the counting methodology for ignored directories and analysis options.
Yes. This page shows the default branch for each repository. Use the interactive comparison tool to pick any public GitHub repository, branch, tag, or commit SHA for both sides and get a fresh side-by-side report.