diff --git a/README.md b/README.md
index 45cc797..b958271 100644
--- a/README.md
+++ b/README.md
@@ -79,6 +79,34 @@ inup detects your package manager and finds dependencies across workspaces. Priv
Need to leave a package alone? Run `npx inup --ignore "react,react-dom"`, or save your rules in [`.inuprc`](docs/guide/configuration.md).
+## Speed
+
+How long each tool takes to list every outdated dependency, from launch to exit, on public repositories pinned to a commit. Lower is better.
+
+
+
+
+
+
+| First run | [expressjs/express](https://github.com/expressjs/express/tree/0dee2c52c7c873498f8ed7d8ee4ddd0a04d3ada8)
1 package.json · 44 dependencies | [vuejs/core](https://github.com/vuejs/core/tree/65eae178383289b6a9f93505ab85017460f72395)
22 package.json files · 69 dependencies | [TanStack/query](https://github.com/TanStack/query/tree/ce77be5e15c695df9d4d9122caf9256d334433ba)
105 package.json files · 190 dependencies |
+| :-- | --: | --: | --: |
+| inup | **0.35 s** | **0.95 s** | **2.68 s** |
+| npm-check-updates | 0.66 s | 4.36 s | 12.4 s |
+| taze | 0.65 s | 1.46 s | 9.84 s |
+| npm-check | 1.07 s | — | — |
+| npm outdated / pnpm outdated | 0.90 s | 1.45 s | 2.99 s |
+
+| Repeat run | [expressjs/express](https://github.com/expressjs/express/tree/0dee2c52c7c873498f8ed7d8ee4ddd0a04d3ada8) | [vuejs/core](https://github.com/vuejs/core/tree/65eae178383289b6a9f93505ab85017460f72395) | [TanStack/query](https://github.com/TanStack/query/tree/ce77be5e15c695df9d4d9122caf9256d334433ba) |
+| :-- | --: | --: | --: |
+| inup | 0.31 s | 0.44 s | **0.64 s** |
+| npm-check-updates | 0.69 s | 4.37 s | 12.1 s |
+| taze | **0.21 s** | 0.53 s | 6.67 s |
+| npm-check | 1.09 s | — | — |
+| npm outdated / pnpm outdated | 0.69 s | **0.21 s** | 4.70 s |
+
+First run: every cache the tool keeps is emptied before each run. Repeat run: caches kept. Median of 10 runs per tool with [hyperfine](https://github.com/sharkdp/hyperfine) 1.20.0 on GitHub Actions ubuntu24 20261018.339.1, 4 CPUs, Node v24.22.0, 21 Oct 2026. inup's times include its vulnerability check, which the other tools don't run. Fastest in **bold**.
+
+[How it's measured, tool versions and exact commands](docs/guide/benchmarks.md)
## Let a release age before you take it
diff --git a/docs/benchmark/speed-dark.svg b/docs/benchmark/speed-dark.svg
new file mode 100644
index 0000000..a7b66a8
--- /dev/null
+++ b/docs/benchmark/speed-dark.svg
@@ -0,0 +1,51 @@
+
diff --git a/docs/benchmark/speed-light.svg b/docs/benchmark/speed-light.svg
new file mode 100644
index 0000000..26f9822
--- /dev/null
+++ b/docs/benchmark/speed-light.svg
@@ -0,0 +1,51 @@
+
diff --git a/docs/guide/benchmarks.md b/docs/guide/benchmarks.md
index 7f5923e..478fbce 100644
--- a/docs/guide/benchmarks.md
+++ b/docs/guide/benchmarks.md
@@ -49,5 +49,73 @@ Fixtures: `express`, `vue-core`, `tanstack-query`. Times from your machine and n
## Results
-_No results yet. They appear here after the Benchmark workflow runs._
+### expressjs/express
+
+[`expressjs/express@0dee2c5`](https://github.com/expressjs/express/tree/0dee2c52c7c873498f8ed7d8ee4ddd0a04d3ada8) · npm · 1 package.json · 44 dependencies
+
+| Tool | Version | First run | Repeat run | Updates found |
+| :-- | :-- | --: | --: | --: |
+| inup | 1.8.7 (77f554e) | **0.35 s** ± 0.01
0.34–0.38 | 0.31 s ± 0.01
0.30–0.34 | 22 |
+| npm-check-updates | 23.1.1 | 0.66 s ± 0.03
0.63–0.72 | 0.69 s ± 0.03
0.65–0.73 | 21 |
+| taze | 21.3.0 | 0.65 s ± 0.55
0.48–2.30 | **0.21 s** ± 0.00
0.21–0.22 | 21 |
+| npm-check | 6.0.1 | 1.07 s ± 0.03
1.04–1.15 | 1.09 s ± 0.04
1.05–1.16 | — |
+| npm outdated | 11.19.1 | 0.90 s ± 0.01
0.89–0.93 | 0.69 s ± 0.01
0.67–0.70 | 13 |
+
+Median, ± standard deviation, min–max, over 10 runs. Measured 21 Oct 2026 on GitHub Actions ubuntu24 20261018.339.1 · Linux 7.0.0-1017-azure · AMD EPYC 7763 64-Core Processor · 4 CPUs · 16 GB · Node v24.22.0 · hyperfine 1.20.0 · [workflow run](https://github.com/donfear/inup/actions/runs/39603646627).
+
+Commands, run in the repository root:
+
+```sh
+inup --json
+ncu --jsonUpgraded
+taze major --include-locked --no-github-actions --no-node-version --json
+npm-check --skip-unused
+npm outdated --json
+```
+
+### vuejs/core
+
+[`vuejs/core@65eae17`](https://github.com/vuejs/core/tree/65eae178383289b6a9f93505ab85017460f72395) · pnpm@12.11.2 · 22 package.json files · 69 dependencies
+
+| Tool | Version | First run | Repeat run | Updates found |
+| :-- | :-- | --: | --: | --: |
+| inup | 1.8.7 (77f554e) | **0.95 s** ± 0.02
0.91–0.97 | 0.44 s ± 0.02
0.43–0.51 | 26 |
+| npm-check-updates | 23.1.1 | 4.36 s ± 0.19
4.21–4.76 | 4.37 s ± 0.26
4.21–4.96 | 25 |
+| taze | 21.3.0 | 1.46 s ± 0.63
1.10–2.83 | 0.53 s ± 0.01
0.52–0.55 | 25 |
+| pnpm outdated | 12.11.2 | 1.45 s ± 0.18
1.42–1.96 | **0.21 s** ± 0.01
0.20–0.22 | 27 |
+| npm-check | — | not run: no workspace support | | |
+
+Median, ± standard deviation, min–max, over 10 runs. Measured 21 Oct 2026 on GitHub Actions ubuntu24 20261018.339.1 · Linux 7.0.0-1017-azure · AMD EPYC 7763 64-Core Processor · 4 CPUs · 16 GB · Node v24.22.0 · hyperfine 1.20.0 · [workflow run](https://github.com/donfear/inup/actions/runs/39603646627).
+
+Commands, run in the repository root:
+
+```sh
+inup --json
+ncu --jsonUpgraded --workspaces
+taze major --recursive --include-locked --no-github-actions --no-node-version --json
+pnpm outdated --recursive --format json
+```
+
+### TanStack/query
+
+[`TanStack/query@ce77be5`](https://github.com/TanStack/query/tree/ce77be5e15c695df9d4d9122caf9256d334433ba) · pnpm@12.4.2 · 105 package.json files · 190 dependencies
+
+| Tool | Version | First run | Repeat run | Updates found |
+| :-- | :-- | --: | --: | --: |
+| inup | 1.8.7 (77f554e) | **2.68 s** ± 0.04
2.62–2.74 | **0.64 s** ± 0.08
0.61–0.90 | 606 |
+| npm-check-updates | 23.1.1 | 12.4 s ± 0.86
11.50–14.49 | 12.1 s ± 1.10
11.18–15.14 | 588 |
+| taze | 21.3.0 | 9.84 s ± 0.70
8.61–10.70 | 6.67 s ± 0.07
6.59–6.85 | 601 |
+| pnpm outdated | 12.4.2 | 2.99 s ± 0.08
2.80–3.08 | 4.70 s ± 0.09
4.62–4.90 | 99 |
+| npm-check | — | not run: no workspace support | | |
+
+Median, ± standard deviation, min–max, over 10 runs. Measured 21 Oct 2026 on GitHub Actions ubuntu24 20261018.339.1 · Linux 7.0.0-1017-azure · AMD EPYC 7763 64-Core Processor · 4 CPUs · 16 GB · Node v24.22.0 · hyperfine 1.20.0 · [workflow run](https://github.com/donfear/inup/actions/runs/39603646627).
+
+Commands, run in the repository root:
+
+```sh
+inup --json
+ncu --jsonUpgraded --workspaces
+taze major --recursive --include-locked --no-github-actions --no-node-version --json
+pnpm outdated --recursive --format json
+```