Playground
Hash text or files, or compare hash speeds on your machine. Everything runs in your browser; nothing is uploaded.
Hash text · Hash a file · Compare speeds
Compare speeds
Compare six hash variants in one WebAssembly build. The test checks known answers before timing and takes about ten seconds. Results depend on your browser and machine.
Enable JavaScript to use the playground.
| hash | 16 KiB | 1 MiB | relative |
|---|
| hash | 8 B | 64 B | 256 B | relative |
|---|
Reading the results and benchmark method
This build uses baseline WebAssembly: no SIMD, AES, or wide-multiply instruction. Hashes that use those features in native builds may rank differently here. See the native benchmarks.
Keep this tab in the foreground and close other busy apps for a steadier result. Small-key timings measure chained calls, so compare them with other latency measurements.
- The six wasm variants use one compiler and flag set:
zig cc -O3, targetingwasm32-wasiwithout SIMD. Competitor sources are pinned intests/wasm/. - Wasm timing loops exclude input copies and JS boundary calls.
- Each cell shows the best of three rounds, calibrated to about 50 ms per round to reduce browser-timer noise.
- The pure-JS row measures the npm package's BigInt fallback. SHA-256 uses WebCrypto and includes call overhead; it serves a different, cryptographic purpose.
- Small-key tests feed each result into the next seed. Bulk tests use independent hashes and accumulate the results.
- The hayahash known answers are checked against the native C reference during deployment.
Hash your text
Type text and choose a seed and output width. The 128-bit result's low word equals the 64-bit hash.
hash value:
Hash a file
Choose a file to compute its 64-bit hash with seed 0. The file stays in your browser; timing includes copying the input.
The shootout module embeds rapidhash (MIT, copyright 2025 Nicolas De Carli) and xxHash (BSD 2-Clause, copyright 2012-2023 Yann Collet). ChibiHash and hayahash are public domain. The module is built at deploy time from the commits pinned in the Makefile. No release artifact contains it.