RepoFlow Team · Feb 17, 2026
Node.js vs Deno vs Bun Performance Benchmarks
We benchmarked Node, Deno, and Bun to see where each runtime wins
After benchmarking Node.js across versions, we got a lot of requests to compare Node.js to Bun and Deno, so we tested the latest version of each runtime.
This is a microbenchmark suite. It is not a full app benchmark, but it is still useful for seeing where each runtime is strong when the exact same code patterns run on the same machine.
This is a microbenchmark suite. It is not a full app benchmark, but it is still useful for seeing where each runtime is strong when the exact same code patterns run on the same machine.
Versions tested
- Node 25.6.1
- Deno 2.6.9
- Bun 1.3.9
HTTP GET throughput
Localhost server with keep alive, 32 concurrent clients, 256 byte payload.
JSON.parse small payload
Parse about 1 KB JSON repeatedly, measures parser throughput.
JSON.parse large payload
Parse about 100 KB JSON repeatedly, stresses larger input handling.
JSON.stringify small object
Serialize a small object repeatedly, measures serializer throughput.
JSON.stringify medium object
Serialize a larger object repeatedly, closer to real responses and logs.
SHA 256 hashing small buffer
Hash about 1 KB buffers using the built in crypto API.
SHA 256 hashing large buffer
Hash about 64 KB buffers, shows bulk hashing throughput.
Buffer copy 64 KB
Copy about 64 KB repeatedly using Uint8Array.set, measures raw memory bandwidth and memory subsystem performance.
Array map plus reduce
Common data transformation pattern, map then aggregate with reduce.
String concatenation
Repeated string building, highlights string handling performance
Integer loop plus arithmetic
Tight numeric loop with simple arithmetic, measures raw JIT throughput.
Integer loop with randomized input
Adds randomness inside the loop to reduce predictable optimizations.
Microtask chain throughput
Promise microtasks chained back to back, measures microtask scheduling.
Async await throughput
Many async function resumes, measures async scheduling overhead
How the Tests Were Performed
Each test was run 15 times. The charts report p50, median throughput.
The system was allowed to cool down between runs to avoid thermal bias.
The system was allowed to cool down between runs to avoid thermal bias.
- Hardware: Apple M4, 10 cores, macOS 25.0.0 (arm64)
- Tooling: Custom Node.js benchmark harness, no external frameworks involved
Conclusion
Across these 14 tests, Bun led in 8, Deno led in 5, and Node led in 1.
Bun stood out most on server style throughput, especially HTTP and large JSON parsing.
Deno led the async scheduling style tests, and also edged out the tight arithmetic loop.
Node stayed very competitive overall and led the SHA 256 hashing test for the 1,024 byte input.
As always, let us know which benchmark you’d like to see next.
Happy Benchmark Tuesday!
Bun stood out most on server style throughput, especially HTTP and large JSON parsing.
Deno led the async scheduling style tests, and also edged out the tight arithmetic loop.
Node stayed very competitive overall and led the SHA 256 hashing test for the 1,024 byte input.
As always, let us know which benchmark you’d like to see next.
Happy Benchmark Tuesday!
