# Bun vs Deno: source lines of code compared

The Bun vs Deno comparison on OctoCounts shows side-by-side source line counts for oven-sh/bun and denoland/deno, counted with the same engine and analysis options on the dates shown in the methodology line: files, total lines, code lines, comment lines, blank lines, and per-language totals, pinned to the exact commits listed below.

As of 2026-09-17, oven-sh/bun contains 1,964,876 total lines (1,469,308 code) across 4,091 files, while denoland/deno contains 1,193,562 total lines (947,176 code) across 2,021 files as of 2026-09-16. oven-sh/bun is about 1.6x the size of denoland/deno by code lines. Code size is not code quality: a larger count only means more source material, not a better or worse project.

| Metric | [oven-sh/bun](https://octocounts.com/github/oven-sh/bun) | [denoland/deno](https://octocounts.com/github/denoland/deno) |
| --- | ---: | ---: |
| Files | 4,091 | 2,021 |
| Total lines | 1,964,876 | 1,193,562 |
| Code lines | 1,469,308 | 947,176 |
| Comment lines | 333,658 | 171,075 |
| Blank lines | 161,910 | 75,311 |
| Languages counted | 12 | 12 |

Top languages in oven-sh/bun: Rust (54.0% of code), C (13.6% of code), C++ (11.1% of code). Top languages in denoland/deno: Rust (53.2% of code), JavaScript (29.4% of code), TypeScript (14.9% of code). Rust, C, TypeScript, JavaScript appear in both top language lists; C++ appears only in oven-sh/bun's top languages; TOML appears only in denoland/deno's top languages.

Methodology: both counts come from cached OctoCounts reports generated with tokei. oven-sh/bun was counted at ref main (commit b52d5134815d) on 2026-09-17; denoland/deno was counted at ref 685eb3b4b4ffaf2770480b8a99021e8b03292786 (commit 685eb3b4b4ff) on 2026-09-16. See the [counting methodology](https://octocounts.com/docs/methodology) for ignored directories and analysis options.
## About this comparison

oven-sh/bun counts the Bun repository: the JavaScript runtime, bundler, test runner, and package manager, written in Zig around a vendored JavaScriptCore/WebKit tree. denoland/deno counts the Deno repository: the runtime, built in Rust on top of V8, with its standard library and toolchain. Both are all-in-one runtime monorepos, counted on the dates shown in the methodology line above.

The per-language tables show the implementation-language contrast directly — Zig-dominated on one side, Rust-dominated on the other — which is the counting-engine equivalent of each project's well-known choice of systems language.

Both repositories bundle far more than a language runtime: package management, bundling, and testing each live in the same tree, so each count covers a toolchain's full surface rather than an interpreter core alone.

_Both trees include third-party dependency code alongside the project's own — Bun notably vendors the WebKit/JSC engine it runs on — so these totals are not 'lines written by the project', and they say nothing about runtime speed or memory use._

Sources: [oven-sh/bun repository (Zig runtime and vendored WebKit)](https://github.com/oven-sh/bun) · [denoland/deno repository (Rust runtime on V8)](https://github.com/denoland/deno). Statements verified 2026-09-16.

Evidence and next steps:

- [oven-sh/bun SLOC report](https://octocounts.com/github/oven-sh/bun)
- [denoland/deno SLOC report](https://octocounts.com/github/denoland/deno)
- [Compare oven-sh/bun and denoland/deno interactively](https://octocounts.com/compare?left=https%3A%2F%2Fgithub.com%2Foven-sh%2Fbun&right=https%3A%2F%2Fgithub.com%2Fdenoland%2Fdeno)

Note: code size is not code quality. OctoCounts only reports reproducible line counts and makes no claim that either project is better.

## Compare FAQ

### Which has more lines of code, oven-sh/bun or denoland/deno?

oven-sh/bun has more code: 1,469,308 code lines versus 947,176 for denoland/deno, about 1.6x as much, based on cached OctoCounts reports as of 2026-09-17.

### Does more source lines of code mean more complexity?

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 oven-sh/bun, denoland/deno, or any repository.

### How is this comparison calculated?

Methodology: both counts come from cached OctoCounts reports generated with tokei. oven-sh/bun was counted at ref main (commit b52d5134815d) on 2026-09-17; denoland/deno was counted at ref 685eb3b4b4ffaf2770480b8a99021e8b03292786 (commit 685eb3b4b4ff) on 2026-09-16. See the counting methodology for ignored directories and analysis options.

### Can I compare a different branch, tag, or commit?

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.

## Related OctoCounts pages

- [Interactive repository comparison](https://octocounts.com/compare)
- [Recently analyzed repositories](https://octocounts.com/recent)
- [Popular SLOC reports](https://octocounts.com/popular)
- [Trending GitHub repositories](https://octocounts.com/trending)
- [Hall of Monoliths](https://octocounts.com/hall-of-monoliths)
- [Original research: how filtering changes SLOC counts](https://octocounts.com/research)
- [GitHub SLOC counter guide](https://octocounts.com/docs/github-sloc-counter)
- [Counting methodology](https://octocounts.com/docs/methodology)
- [SLOC and code metrics glossary](https://octocounts.com/docs/glossary)
- [OctoCounts API docs](https://octocounts.com/docs/api)
