What We Measure
Web Bench uses 8 categories and dozens of detailed tests to see how your device performs inside the browser. Below you can check what each category measures, how it relates to everyday experience, and whether a higher or lower number is better. Tests your device or browser does not support are skipped automatically, and every value is a reference that varies by environment.
CPU single-core
CPU Single measures how fast one core finishes real-world work such as text processing, JSON parsing, compression, hashing, image processing, sorting, pathfinding, physics simulation, ray tracing and linear algebra. Page loading, app responsiveness and programs that do one thing at a time tend to feel close to this value. The unit is operations per second, so higher means more work done in the same time. Tests that need browser APIs such as AES-GCM or Deflate are skipped when unsupported, and the score is calculated from the remaining tests.
- Text processing · Single
- Tokenization and regular expression search/replace
- JSON · Single
- Large document parsing and serialization
- LZ compression · Single
- In-house LZ compression and decompression
- SHA-256 · Single
- JavaScript hash throughput
- Image processing · Single
- Gaussian blur, resize and color conversion
- Sorting and data structures · Single
- Sort, hash map and priority queue
- A* pathfinding · Single
- Shortest path through a large grid with obstacles
- Physics simulation · Single
- n-body gravity and elastic collisions
- CPU ray tracing · Single
- Sphere scene rendering
- Linear algebra · Single
- Matrix multiplication and partially pivoted LU decomposition
- Large integers · Single
- BigInt multiplication and 64-bit primality test
- Document parsing · Single
- Markup tokenization and tree construction
- AES-GCM · Single
- SubtleCrypto encryption and decryption
- Deflate · Single
- CompressionStream compression and decompression
CPU multicore
CPU Multi runs the same kind of work split across several Workers to measure throughput when cores work together. You notice the difference in video encoding, large file processing and when running many tabs and apps at once. The unit is operations per second and higher is better. However, results depend on how many Workers the browser uses and how it synchronizes them, so do not read them purely as a physical core count. Tests that rely on encryption or compression APIs are skipped where those APIs are unavailable.
- Text processing · Multi
- Tokenization and regular expression search/replace
- JSON · Multi
- Large document parsing and serialization
- LZ compression · Multi
- In-house LZ compression and decompression
- SHA-256 · Multi
- JavaScript hash throughput
- Image processing · Multi
- Gaussian blur, resize and color conversion
- Sorting and data structures · Multi
- Sort, hash map and priority queue
- A* pathfinding · Multi
- Shortest path through a large grid with obstacles
- Physics simulation · Multi
- n-body gravity and elastic collisions
- CPU ray tracing · Multi
- Sphere scene rendering
- Linear algebra · Multi
- Matrix multiplication and partially pivoted LU decomposition
- Large integers · Multi
- BigInt multiplication and 64-bit primality test
- Document parsing · Multi
- Markup tokenization and tree construction
- AES-GCM · Multi
- SubtleCrypto encryption and decryption
- Deflate · Multi
- CompressionStream compression and decompression
Memory
Memory looks at the throughput of reading, writing and copying a contiguous 16 MB block, along with the latency of chasing data through random access. It relates to heavy data movement such as editing large images or video, keeping many tabs open and loading games. Throughput is in GB/s, so higher is better, while random access latency is in ns, so lower is better. Because access sizes are varied, you can also tell where speed changes across the cache hierarchy.
- Sequential read
- 16 MB sequential memory throughput
- Sequential write
- 16 MB sequential memory throughput
- Sequential copy
- 16 MB sequential memory throughput
- Random access · 16 KB
- Dependent pointer chasing across cache levels
- Random access · 64 KB
- Dependent pointer chasing across cache levels
- Random access · 256 KB
- Dependent pointer chasing across cache levels
- Random access · 1 MB
- Dependent pointer chasing across cache levels
- Random access · 4 MB
- Dependent pointer chasing across cache levels
- Random access · 16 MB
- Dependent pointer chasing across cache levels
- Random access · 64 MB
- Dependent pointer chasing across cache levels
- Random access · 256 MB
- Dependent pointer chasing across cache levels
GPU graphics
GPU Graphics renders large numbers of triangles, 131,072 particles and bloom and blur post-processing off-screen and measures the average FPS. It relates to how smoothly web games, 3D maps and effect-heavy pages run. The unit is FPS and higher is better. If WebGPU is unavailable, the test may run on the WebGL2 path instead, and if neither is available this category is skipped.
- Many triangles
- Offscreen graphics rendering · average FPS
- 131,072 particles
- Offscreen graphics rendering · average FPS
- Bloom and blur post-processing
- Offscreen graphics rendering · average FPS
GPU compute
GPU Compute measures speed when you hand calculations, not graphics, to the GPU. It runs f32 and f16 matrix multiplication, image convolution, particle simulation and parallel sums, and also verifies that the result buffers are correct. It is closest to heavily parallel work such as in-browser video processing and AI inference. Matrix multiplication is shown in GFLOPS and the rest in elements processed per second, and higher is better for all of them. Without WebGPU or the shader-f16 feature, the affected tests are skipped.
- Matrix multiplication f32
- WebGPU compute · output buffer validation
- Matrix multiplication f16
- WebGPU compute · output buffer validation
- Image convolution
- WebGPU compute · output buffer validation
- Particle simulation
- WebGPU compute · output buffer validation
- Parallel sum (reduction)
- WebGPU compute · output buffer validation
Browser
The Browser category measures DOM manipulation and layout, Canvas 2D drawing, screen refresh rate and frame consistency. It maps directly to everyday experience such as how responsive a complex web app feels and how smooth scrolling and animation are. DOM and Canvas are in operations per second, so higher is better, while frame intervals are in ms, so lower is better. These tests depend heavily on the browser engine and display settings as well as hardware, so compare results within the same browser.
- DOM manipulation and layout
- Create and update a virtual list, then resolve layout
- Canvas 2D
- Paths, shapes and text drawing
- Refresh rate and frame consistency
- requestAnimationFrame intervals · refresh rate and p95 deviation
Storage
Storage creates a temporary file in the browser's OPFS to measure sequential write, sequential read, random write and random read speed, then deletes the file when finished. It relates to downloading large files and loading offline app data. The unit is MB/s and higher is better. If the browser does not support OPFS or it is blocked, for example in a private browsing mode, this category is skipped.
- Sequential write
- Temporary OPFS file I/O · deleted afterwards
- Sequential read
- Temporary OPFS file I/O · deleted afterwards
- Random write
- Temporary OPFS file I/O · deleted afterwards
- Random read
- Temporary OPFS file I/O · deleted afterwards
AI inference (optional)
AI inference is optional and runs only if you agree to download the models. It feeds fixed test sentences and images to measure how fast text generation and image models run inside the browser, and it never uses your personal files. It is a reference for how smooth on-device AI features might feel, and a higher processing speed is better. If you do not agree, it is not run and is left out of the total score. If WebGPU is unavailable it runs on the WASM path instead, and that is shown separately.
- Time to first token
- From generate call to first token · excludes tokenization
- Prompt processing
- Input tokens / first forward pass · excludes tokenization and sampling
- Text generation
- greedy 128 tokens · throughput of 127 tokens after the first
- Single-image classification
- Fixed 224×224 RGB image · excludes preprocessing · MobileNetV4 fp32