A modern, open-source rewrite of jsPerf

Benchmark JavaScript in your browser

Compare snippets by ops/sec, share a link, and go deeper with server-side analysis across V8, QuickJS, Node, Deno and Bun.

Try it

Synthetic Commerce JIT and CPU Profile Showcase

Open the full benchmark

Runs in a sandboxed iframe on your machine. Results vary by browser and device; each full run contributes to the benchmark's cross-browser stats.

Beyond the browser run

The full benchmark page adds server-side analysis for everyone; donors unlock the priority lane and reporting.

Try them on the full benchmark

Write, run, share

The jsPerf workflow you remember, rebuilt on a modern runner with accurate timing.

  1. 01

    Write

    Add shared setup, then two or more snippets. Plain JavaScript or TypeScript with types, generics and unions — no rewriting first.

  2. 02

    Run

    Each case runs in a sandboxed iframe on tinybench. You get ops/sec, margin of error and a ranked result in a few seconds.

  3. 03

    Share

    Every benchmark has a stable URL and revision history. Runs from other browsers and devices roll up into per-benchmark stats.

Then take the same code to every runtime that matters

  • Browser
  • QuickJS
  • V8
  • Node
  • Deno
  • Bun

Deep Analysis

When browser numbers aren't enough

One click sends the same cases to controlled server-side environments and brings back reproducible results, engine internals and a shareable report.

A deterministic baseline next to a real JIT

Browser numbers move with every run. Deep Analysis executes your cases in QuickJS compiled to WebAssembly for a variance-free baseline, then in V8 inside an isolated Firecracker microVM to capture inline caching, optimisation and GC effects.

  • QuickJS memory-limit sweeps show how each case degrades under pressure
  • V8 runs single-core and canonical, so cases stay comparable across sessions
  • The prediction model reports JIT amplification per case
Open the example benchmark
Deep Analysis · engines

QuickJS · baseline

Indexed order scoring2,140 ops/s
Polymorphic normalization1,370 ops/s

V8 · microVM

Indexed order scoring48,900 ops/s
Polymorphic normalization19,600 ops/s
JIT amplification 22.8× vs 14.3× — the monomorphic path benefits far more from optimisation. Illustrative numbers.

Latest benchmarks

Fresh public suites from the community. Open one and press Run.

Browse all

Guides and starting points

Focused examples and measurement guides for when you want a starting point instead of a blank benchmark.

Keep jsPerf free, fast and ad-free

Deep Analysis runs on real microVMs and multi-runtime workers, and that costs money every month. If jsPerf saves you time, consider supporting it — the site has no ads and no tracking.

Already donated? to claim your boost.

Donors get

  • Higher rate limits for saves and analyses
  • Boosted badge on your benchmarks
  • Benchmark Doctor guidance on flawed cases
  • Shareable presentation reports with complexity slides