clean
A first install on a fresh machine. Every package is resolved, downloaded and linked from scratch.
Loading…
Cites this run by its date, with a link back here.
clean
upm is fastest at 796ms, 34.3× faster than npm.A first install on a fresh machine. Every package is resolved, downloaded and linked from scratch.
Mean install time across 6 fixtures in the clean scenario, from the run of Oct 20, 2026 on GitHub-hosted ubuntu-24.04-arm runners.
Disclosure. vlt publishes this benchmark, and vlt is one of the tools it measures. The suite, its configuration and every result file are public.
| 1 | upm1.5.0 | 796ms±1.7% | 34.3× faster | −81.3% | ||
| 2 | yarn (zpm)6.0.0-rc.205/6 fixtures | 1.10s±57.6% | 24.7× faster | — | not enough runs | |
| 3 | bun1.4.3 | 1.91s±19.6% | 14.3× faster | +21.7% | ||
| 4 | aube2.8.1 | 3.26s±16.6% | 8.4× faster | +11.0% | ||
| 5 | pnpm12.14.0 | 4.23s±5.5% | 6.5× faster | +12.4% | ||
| 6 | vlt1.5.0 | 4.28s±5.2% | 6.4× faster | +6.3% | ||
| 7 | deno2.9.6 | 4.35s±8.2% | 6.3× faster | +19.8% | ||
| 8 | yarn (berry)4.18.1 | 10.3s±6.0% | 2.6× faster | +1.2% | ||
| 9 | npm12.2.0 | 27.3s±3.1% | baseline | +6.1% | ||
| 10 | yarn1.22.22 | 29.6s±6.5% | 1.09× slower | +3.8% |
Lower is faster. ± is the pooled relative standard deviation. Since last run compares with Oct 19, 2026.
yarn (zpm) did not complete every fixture
796ms
1.10s
1.91s
3.26s
4.23s
4.28s
4.35s
10.3s
27.3s
29.6s
Lower is faster. Bars start at zero, each a bright cap on its tool's colour, labelled with its time and its multiple of the baseline. Dashed outline and dashed rule: the baseline, npm.
Not drawn: yarn (zpm)
Lower is faster; bars start at zero, each a bright cap on its tool's colour. All fixtures: a group per fixture, the tools in leaderboard order, as in the legend; hover a fixture to read each by name. Each fixture: its tools fastest first, each labelled with its time. A tool is drawn on every fixture it finished; a failed run is named, not drawn. The legend shows and hides tools everywhere on the page. Dashed outline and dashed rule: the baseline, npm.
| upm | 304ms34.7× faster | 2.32s32.8× faster | 1.05s30.8× faster | 498ms36.4× faster | 190ms32.0× faster | 416ms49.5× faster |
| yarn (zpm) | 600ms17.6× faster | DNF | 1.65s19.6× faster | 1.29s14.0× faster | 1.12s5.4× faster | 869ms23.7× faster |
| bun | 1.10s9.6× faster | 3.91s19.5× faster | 2.36s13.7× faster | 1.36s13.3× faster | 951ms6.4× faster | 1.76s11.7× faster |
| aube | 1.60s6.6× faster | 8.25s9.2× faster | 2.87s11.3× faster | 3.74s4.9× faster | 984ms6.2× faster | 2.09s9.9× faster |
| pnpm | 1.70s6.2× faster | 13.7s5.6× faster | 3.00s10.8× faster | 2.76s6.6× faster | 1.31s4.6× faster | 2.89s7.1× faster |
| vlt | 2.08s5.1× faster | 11.1s6.9× faster | 5.61s5.8× faster | 3.33s5.4× faster | 1.09s5.6× faster | 2.48s8.3× faster |
| deno | 2.99s3.5× faster | 9.62s7.9× faster | 4.04s8.0× faster | 3.48s5.2× faster | 2.39s2.5× faster | 3.60s5.7× faster |
| yarn (berry) | 3.33s3.2× faster | 31.6s2.4× faster | 11.5s2.8× faster | 7.74s2.3× faster | 2.28s2.7× faster | 5.61s3.7× faster |
| npm | 10.5sbaseline | 76.2sbaseline | 32.3sbaseline | 18.1sbaseline | 6.07sbaseline | 20.6sbaseline |
| yarn | 11.8s1.12× slower | 87.3s1.15× slower | 28.1s1.15× faster | 23.8s1.31× slower | 5.51s1.10× faster | 21.4s1.04× slower |
Each cell is the mean time, with its multiple of npm on that fixture beneath. Bold: fastest on the fixture. DNF: the run exited non-zero and is excluded from every figure. A dash: not run on that fixture.
Milliseconds per installed package; lower is faster. Tools disagree about what a dependency graph contains, so a tool that installs fewer packages finishes sooner without being faster — this is the figure that corrects for it. Dashed outline and dashed rule: the baseline, npm.
Not drawn: yarn, yarn (zpm)
| upm | 1.1ms34.7× faster | 1.5ms28.6× faster | 0.8ms28.5× faster | 1.5ms35.5× faster | 3.3ms32.0× faster | 1.0ms47.4× faster |
| yarn (zpm) | 2.1ms17.7× faster | DNF | 1.1ms21.1× faster | 3.8ms14.3× faster | 18.6ms5.6× faster | 1.9ms23.9× faster |
| bun | 3.9ms9.7× faster | 2.4ms17.9× faster | 1.5ms15.1× faster | 4.0ms13.4× faster | 16.1ms6.5× faster | 3.9ms11.7× faster |
| aube | 5.9ms6.4× faster | 6.1ms6.9× faster | 2.6ms8.8× faster | 11.7ms4.6× faster | 17.0ms6.2× faster | 5.3ms8.6× faster |
| pnpm | 6.1ms6.2× faster | 8.7ms4.9× faster | 2.3ms9.9× faster | 8.4ms6.4× faster | 22.6ms4.6× faster | 6.8ms6.8× faster |
| vlt | 7.5ms5.1× faster | 7.3ms5.8× faster | 4.4ms5.3× faster | 10.2ms5.3× faster | 18.4ms5.7× faster | 5.9ms7.9× faster |
| deno | 10.6ms3.6× faster | 6.4ms6.6× faster | 3.2ms7.3× faster | 10.5ms5.1× faster | 40.6ms2.6× faster | 8.5ms5.4× faster |
| yarn (berry) | 12.0ms3.2× faster | 18.0ms2.4× faster | 8.6ms2.7× faster | 23.0ms2.3× faster | 39.3ms2.7× faster | 12.6ms3.7× faster |
| npm | 37.8msbaseline | 42.4msbaseline | 23.1msbaseline | 54.1msbaseline | 105msbaseline | 46.1msbaseline |
| yarn | 42.0ms1.11× slower | — | 21.2ms1.09× faster | — | 93.4ms1.12× faster | 48.1ms1.04× slower |
Bold: fastest on the fixture. A tool with a time but no published package count is left out rather than divided by a guess.
| yarn | 281 | — | 1,327 | — | 59 | 445 | 2,112 |
| yarn (zpm) | 280 | — | 1,510 | 342 | 60 | 450 | 2,642 |
| aube | 270 | 1,345 | 1,087 | 319 | 58 | 392 | 3,471 |
| deno | 282 | 1,494 | 1,278 | 331 | 59 | 424 | 3,868 |
| vlt | 279 | 1,532 | 1,284 | 327 | 59 | 424 | 3,905 |
| upm | 279 | 1,568 | 1,291 | 327 | 58 | 428 | 3,951 |
| pnpm | 279 | 1,586 | 1,280 | 327 | 58 | 426 | 3,956 |
| yarn (berry) | 278 | 1,7581,728–1,788 | 1,328 | 336335–337 | 58 | 444 | 4,202 |
| npm | 279 | 1,7971,791–1,801 | 1,398 | 335 | 58 | 447 | 4,314 |
| bun | 282 | 1,646 | 1,5481,540–1,550 | 339 | 59 | 447 | 4,321 |
A range beneath a count means that tool's installs did not all produce the same number of packages.
| bun | 2 | 2 | 2 | 2 | 2 | 2 | 12 |
| deno | 2 | 2 | 2 | 2 | 2 | 2 | 12 |
| yarn (zpm) | 3 | 3 | 3 | 3 | 3 | 3 | 18 |
| npm | 4 | 4 | 4 | 4 | 4 | 4 | 24 |
| yarn | 4 | 4 | 4 | 4 | 4 | 4 | 24 |
| aube | 4 | 4 | 4 | 4 | 4 | 4 | 24 |
| upm | 4 | 4 | 4 | 4 | 4 | 4 | 24 |
| yarn (berry) | 4 | 6 | 4 | 4 | 4 | 4 | 26 |
| vlt | 5 | 10 | 5 | 5 | 5 | 5 | 35 |
| pnpm | 7 | 7 | 7 | 7 | 7 | 7 | 42 |