CPU PARALLEL COMPUTE / 60 SECOND RUN
How fast is
your browser?
A deterministic Chudnovsky benchmark that spreads the work across Web Workers, measures sustained Pi throughput, and returns a prefix-checked digit string.
RUN CONFIGURATION
Benchmark controls
Detecting hardware…
Automatically scaled to the detected hardware.LIVE TELEMETRY
Aggregate throughput
PARALLEL EXECUTION
Worker telemetry
PREFIX-CHECKED OUTPUT
Pi digit string
Your result is ready. Review it and choose whether to share it.
The prefix-checked Pi string will appear here…
I agree to share this result, approximate country, selected OS/hardware hints, and a pseudonymous installation identifier so one best result can be kept per browser installation, on the board this run is measured for.
What data is collected?SYSTEM DIAGNOSTICS
Hardware profile
- CPU model
- —
- Browser
- —
- Logical CPU cores
- —
- CPU architecture
- —
- Browser-reported memory (approx.)
- —
- RAM speed
- —
- Timer resolution
- —
- Graphics
- —
- Cross-origin isolated
- —
- WebGPU
- —
Browser APIs expose logical core count, browser name/version, and may expose architecture; the full user-agent string, CPU model, and RAM speed are not collected.
SCORING METHOD
What the score means
The score is designed to measure sustained browser compute, not to claim perfect hardware attestation.
What runs
Each Web Worker independently runs the same Chudnovsky binary-splitting calculation and uses the full requested duration. If it reaches its precision ceiling, it holds its last verified stream and remains active until the clock ends.
Worker profile
The worker pool scales to the logical CPU count reported by the browser, up to a 64-worker safety ceiling. Firefox, macOS, Linux, Windows, Android, and iOS use the same hardware-scaled pool; per-worker precision is reduced as the pool grows to keep total work bounded. If the browser cannot sustain the requested pool, the app retries with a smaller pool and records the actual count. The score uses the verified workers actually selected, not an arbitrary 2/8/16 profile.
How the score is calculated
Aggregate score is the sum of verified digits produced by the workers that completed successfully, divided by the measured duration and projected to 60 seconds.
Best single stream
Workers duplicate the mathematical work by design. Use Best single stream when comparing browser setups with different worker or CPU-core counts.
Verification and limits
Pi is computed with the Chudnovsky formula, a series that converges about 14 digits per added term, evaluated by binary splitting in exact integer arithmetic. The same input always yields the same digits, so every result is reproducible. Each string is checked against a known prefix and a checksum, so malformed or truncated output is obvious. Browsers limit memory, worker scheduling and background execution, so this measures browser execution. An isolated worker failure yields a disclosed partial result when at least half the workers verify; below that the run is rejected. An accepted run always covers the full requested duration. A worker that reaches its precision or WebAssembly memory ceiling holds its last verified stream and is labeled precision-cap-limited or memory-limited rather than failed.
Good faith
The community leaderboard relies on users submitting in good faith. A browser cannot prove hardware identity or prevent a modified client from faking timing.
DATA & PRIVACY
What we collect and use
Submission is off by default. Here is exactly what stays local and what is sent if you choose to share.
Stays in your browser
The Pi calculation, full digit string, live telemetry, and hardware hints are handled locally. A random installation identifier is generated locally and is sent only if you opt in. The full string is not uploaded automatically. Language and your last submission summary and rank use browser storage only.
Sent only after opt-in
If you check the box and press Submit, the server receives the score, duration, the board this run targets, verified worker count, precision cap, digit totals, a short Pi proof prefix, checksum, digest, approximate country, OS name, browser name/version, selected hardware hints, and a random installation identifier. The identifier is hashed immediately; the raw value, full user-agent string, CPU model, and RAM speed are not stored.
Protected server data
The server stores the submitted score, approximate country, OS name, browser name/version, selected hardware hints, a keyed IP hash, and a keyed installation hash. It keeps one best row per installation, on one of the four boards, so a better run recorded on any of them can move that row to another. Raw IP addresses and installation IDs are never stored or returned; the country may come from a trusted proxy header or a local GeoIP lookup. No full user-agent string, CPU model, RAM speed, or hardware fingerprint data is stored.
Leaderboard identity
The leaderboard generates a safe nickname and keeps one best result per pseudonymous browser installation. That single row sits on one of the four boards: a better run moves it to the board it was measured for rather than adding a second row, so one browser is ranked in one board at a time. The random installation identifier is stored only as a keyed hash; clearing this site's storage creates a new installation identity. It is not a hardware fingerprint and cannot identify a person across browsers or devices. Different browsers or profiles may count as separate installations.
Troubleshoot a run
Browser console diagnostics stay on this device. In DevTools, run PI_RACE_DEBUG.report() and share the redacted output. For live worker events, open this page with ?debug=1 or run PI_RACE_DEBUG.enable(); reports omit digit strings, request bodies, cookies, IP addresses, device identifiers, and secrets.