Browser Benchmark Suite

HTML/CSS/JS performance tests — run across Chrome, Firefox, Safari to compare

Overall Score (higher = faster)

JS — Arithmetic

Integer multiply (Mops/s)
Float multiply (Mops/s)
Math.sqrt loop (Mops/s)
Math.sin/cos (Mops/s)
Bitwise ops (Mops/s)
**exponentiation (Mops/s)
BigInt add (Kops/s)

JS — Strings

String concat (Kops/s)
Template literal (Kops/s)
String split (Kops/s)
String search (Kops/s)
String replace (Kops/s)
String slice (Mops/s)
charCodeAt (Mops/s)
String.fromCharCode (Mops/s)

JS — Arrays

Array push/pop (Mops/s)
Array sort 10K (ms)
Array map (Mops/s)
Array filter (Mops/s)
Array reduce (Mops/s)
Array find (Mops/s)
Array flat (Kops/s)
Typed Array fill (GB/s)
Typed Array copy (GB/s)

JS — Objects & Functions

Object create (Mops/s)
Property access (Mops/s)
Property set (Mops/s)
Object.keys (Kops/s)
Object spread (Kops/s)
Prototype chain (Mops/s)
Function call overhead (Mops/s)
Closure capture (Mops/s)
apply/call overhead (Mops/s)

JS — Collections

Map set/get (Mops/s)
Map iteration (Mops/s)
Set add/has (Mops/s)
Set iteration (Mops/s)
WeakMap set/get (Mops/s)
WeakSet add/has (Mops/s)

JS — Regex

Simple match (Kops/s)
Email validate (Kops/s)
Global replace (Kops/s)
Named groups (Kops/s)
Lookahead (Kops/s)
matchAll (Kops/s)

JS — JSON & Serialization

JSON.stringify small (Kops/s)
JSON.parse small (Kops/s)
JSON.stringify large (MB/s)
JSON.parse large (MB/s)
structuredClone (Kops/s)

JS — Sorting Algorithms

Native sort 100K nums (ms)
Native sort 100K strs (ms)
Native sort 100K objs (ms)
Intl.Collator sort (ms)

DOM — Creation & Mutation

createElement (Kops/s)
createTextNode (Kops/s)
cloneNode shallow (Kops/s)
cloneNode deep (Kops/s)
innerHTML set (Kops/s)
insertAdjacentHTML (Kops/s)
appendChild (Kops/s)
replaceChild (Kops/s)
remove() (Kops/s)
DocumentFragment bulk (Kops/s)

DOM — Attributes & Properties

setAttribute (Kops/s)
getAttribute (Kops/s)
removeAttribute (Kops/s)
dataset.key set (Kops/s)
classList.add/remove (Kops/s)
classList.toggle (Kops/s)
classList.contains (Mops/s)
textContent set (Kops/s)
id property set (Mops/s)

DOM — Querying

getElementById (Mops/s)
querySelector (Kops/s)
querySelectorAll div (Kops/s)
querySelectorAll .class (Kops/s)
querySelectorAll [attr] (Kops/s)
querySelectorAll :nth-child (Kops/s)
querySelectorAll :not() (Kops/s)
closest() (Kops/s)
matches() (Mops/s)
getElementsByClassName (Kops/s)
getElementsByTagName (Kops/s)

DOM — Layout & Reflow

offsetWidth read (Kops/s)
getBoundingClientRect (Kops/s)
getComputedStyle (Kops/s)
Force reflow (ops/s)
scrollTop read (Mops/s)
clientWidth read (Mops/s)
style.width mutation (Kops/s)
style.transform set (Kops/s)
cssText bulk set (Kops/s)

DOM — Events

addEventListener (Kops/s)
removeEventListener (Kops/s)
dispatchEvent (Kops/s)
CustomEvent create (Kops/s)
Event bubbling depth-10 (Kops/s)

Canvas 2D — Rasterization

fillRect (Mrects/s)
strokeRect (Mrects/s)
clearRect (Mrects/s)
fillCircle (Karcs/s)
strokeCircle (Karcs/s)
bezierCurveTo (Kops/s)
lineTo polyline (Kops/s)
Path2D fill (Kops/s)

Canvas 2D — Pixel & Image

getImageData (Mpx/s)
putImageData (Mpx/s)
drawImage canvas (Kops/s)
drawImage scaled (Kops/s)
createImageData (Kops/s)
Pixel manipulation (Mpx/s)

Canvas 2D — Text & State

fillText (Kops/s)
measureText (Kops/s)
save/restore (Kops/s)
setTransform (Kops/s)
gradient fill (Kops/s)
shadow render (Kops/s)
globalAlpha ops (Kops/s)

Web APIs — Storage

localStorage setItem (Kops/s)
localStorage getItem (Kops/s)
localStorage removeItem (Kops/s)
sessionStorage setItem (Kops/s)
sessionStorage getItem (Kops/s)

Web APIs — URL & Encoding

URL parse (Kops/s)
URL stringify (Kops/s)
URLSearchParams (Kops/s)
encodeURIComponent (Kops/s)
decodeURIComponent (Kops/s)
btoa / atob roundtrip (Kops/s)

Web APIs — Crypto & Hashing

crypto.randomUUID (Kops/s)
crypto.getRandomValues (Kops/s)
SubtleCrypto SHA-256 1KB (Kops/s)
SubtleCrypto SHA-256 1MB (MB/s)

Web APIs — Observer & Misc

MutationObserver setup (Kops/s)
ResizeObserver setup (Kops/s)
performance.now() (Mops/s)
Date.now() (Mops/s)
new Date() (Mops/s)
Intl.DateTimeFormat (Kops/s)
Intl.NumberFormat (Kops/s)

Async & Event Loop

Promise.resolve chain (Kops/s)
async/await (Kops/s)
queueMicrotask (Kops/s)
Promise.all 1000 (Kops/s)
Promise.race 1000 (Kops/s)
setTimeout(0) latency (ms)
rAF latency (ms)
MessageChannel latency (ms)

Memory Allocation

Object literal alloc (Mops/s)
Array literal alloc (Mops/s)
Float64Array 1K (Mops/s)
ArrayBuffer 1MB (Kops/s)
DataView ops (Mops/s)
SharedArrayBuffer r/w (Mops/s)

CSS — Selector Engine

Tag selector (Kops/s)
Class selector (Kops/s)
ID selector (Kops/s)
Descendant selector (Kops/s)
Child combinator (Kops/s)
Sibling combinator (Kops/s)
Pseudo :nth-child (Kops/s)
Pseudo :not() (Kops/s)
Attribute selector (Kops/s)
Complex multi-class (Kops/s)

CSS — Computed Styles

getComputedStyle full (Kops/s)
getPropertyValue color (Kops/s)
CSSStyleDeclaration read (Mops/s)
CSS variable read (Mops/s)
CSS variable write (Kops/s)
Inline style parse (Kops/s)

Score Breakdown