Click here to download the Blitz Browser!

WPT

This page compares scores on the Web Platform Tests across web engines, using the latest master runs from wpt.fyi and Blitz's own test runner.


wpt / webnn / validation_tests

Spec: Web Neural Network API ↗

Runs: Chrome 158.0.8110.0 (wpt@850b36a56, 2026-10-18) | Firefox 160.0a1 (wpt@b58866519, 2026-10-18) | Safari 254 preview (wpt@850b36a56, 2026-10-18) | Ladybird 1.0-e7b21 (wpt@850b36a56, 2026-10-18) | Servo Servo 0.7 (wpt@df642c414, 2026-10-17) | Blitz fb8d6c15e (wpt@cd1d8aa5b, 2026-10-17)

Score history

Percentage of subtests passing over time, one master run per day. Every engine's percentage is relative to the same denominator: the total number of subtests known to any engine in the latest runs (so lines are not distorted by tests being added to WPT, and an engine that skips tests is not flattered for it).

1 month3 months6 months1 year2 years4 yearsAll time
0%20%40%60%80%100%Nov 2025Dec 2025Jan 2026Feb 2026Mar 2026Apr 2026May 2026Jun 2026Jul 2026Aug 2026Sep 2026Oct 2026ChromeFirefoxSafariLadybirdServo

Sort: alphabetical | by subtest count

AreaChromeFirefoxSafariLadybirdServoBlitz
Total99.3%3749/37740.0%3/37740.0%0/37740.0%3/37740.0%3/37740.0%0/3774
TestChromeFirefoxSafariLadybirdServoBlitz
Total99.3%3749/37740.0%3/37740.0%0/37740.0%3/37740.0%3/3774NO DATA
argMinMax.https.any.html?cpu25/250/250/250/250/25NOT RUN
argMinMax.https.any.html?gpu25/250/250/250/250/25NOT RUN
argMinMax.https.any.html?npu25/250/250/250/250/25NOT RUN
batchNormalization.https.any.html?cpu26/260/260/260/260/26NOT RUN
batchNormalization.https.any.html?gpu26/260/260/260/260/26NOT RUN
batchNormalization.https.any.html?npu26/260/260/260/260/26NOT RUN
build-more-than-once.https.any.html?cpu9/90/90/90/90/9NOT RUN
build-more-than-once.https.any.html?gpu9/90/90/90/90/9NOT RUN
build-more-than-once.https.any.html?npu9/90/90/90/90/9NOT RUN
cast.https.any.html?cpu6/60/60/60/60/6NOT RUN
cast.https.any.html?gpu6/60/60/60/60/6NOT RUN
cast.https.any.html?npu6/60/60/60/60/6NOT RUN
clamp.https.any.html?cpu13/130/130/130/130/13NOT RUN
clamp.https.any.html?gpu13/130/130/130/130/13NOT RUN
clamp.https.any.html?npu13/130/130/130/130/13NOT RUN
concat.https.any.html?cpu18/180/180/180/180/18NOT RUN
concat.https.any.html?gpu18/180/180/180/180/18NOT RUN
concat.https.any.html?npu18/180/180/180/180/18NOT RUN
constant-changed-buffer.https.any.html?cpu4/40/40/40/40/4NOT RUN
constant-changed-buffer.https.any.html?gpu4/40/40/40/40/4NOT RUN
constant-changed-buffer.https.any.html?npu4/40/40/40/40/4NOT RUN
constant.https.any.html?cpu44/440/440/440/440/44NOT RUN
constant.https.any.html?gpu42/440/440/440/440/44NOT RUN
constant.https.any.html?npu44/440/440/440/440/44NOT RUN
conv2d.https.any.html?cpu63/630/630/630/630/63NOT RUN
conv2d.https.any.html?gpu63/630/630/630/630/63NOT RUN
conv2d.https.any.html?npu63/630/630/630/630/63NOT RUN
convTranspose2d.https.any.html?cpu60/600/600/600/600/60NOT RUN
convTranspose2d.https.any.html?gpu60/600/600/600/600/60NOT RUN
convTranspose2d.https.any.html?npu60/600/600/600/600/60NOT RUN
createContext.https.any.html?cpu10/101/100/101/101/10NOT RUN
createContext.https.any.html?gpu10/101/100/101/101/10NOT RUN
createContext.https.any.html?npu10/101/100/101/101/10NOT RUN
cumulativeSum.https.any.html?cpu12/120/120/120/120/12NOT RUN
cumulativeSum.https.any.html?gpu12/120/120/120/120/12NOT RUN
cumulativeSum.https.any.html?npu12/120/120/120/120/12NOT RUN
dequantizeLinear.https.any.html?cpu16/160/160/160/160/16NOT RUN
dequantizeLinear.https.any.html?gpu16/160/160/160/160/16NOT RUN
dequantizeLinear.https.any.html?npu16/160/160/160/160/16NOT RUN
destroyContext.https.any.html?cpu11/110/110/110/110/11NOT RUN
destroyContext.https.any.html?gpu11/110/110/110/110/11NOT RUN
destroyContext.https.any.html?npu11/110/110/110/110/11NOT RUN
destroyGraph.https.any.html?cpu3/30/30/30/30/3NOT RUN
destroyGraph.https.any.html?gpu3/30/30/30/30/3NOT RUN
destroyGraph.https.any.html?npu3/30/30/30/30/3NOT RUN
elementwise-binary.https.any.html?op=add&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=add&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=add&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=div&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=div&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=div&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=max&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=max&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=max&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=min&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=min&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=min&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=mul&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=mul&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=mul&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=pow&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=pow&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=pow&device=npu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=sub&device=cpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=sub&device=gpu11/110/110/110/110/11NOT RUN
elementwise-binary.https.any.html?op=sub&device=npu11/110/110/110/110/11NOT RUN
elementwise-logical.https.any.html?op=equal&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=equal&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=equal&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greater&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greater&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greater&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greaterOrEqual&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greaterOrEqual&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=greaterOrEqual&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=isInfinite&device=cpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=isInfinite&device=gpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=isInfinite&device=npu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=isNaN&device=cpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=isNaN&device=gpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=isNaN&device=npu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=lesser&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=lesser&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=lesser&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=lesserOrEqual&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=lesserOrEqual&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=lesserOrEqual&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalAnd&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalAnd&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalAnd&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalNot&device=cpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=logicalNot&device=gpu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=logicalNot&device=npu2/20/20/20/20/2NOT RUN
elementwise-logical.https.any.html?op=logicalOr&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalOr&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalOr&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalXor&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalXor&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=logicalXor&device=npu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=notEqual&device=cpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=notEqual&device=gpu5/50/50/50/50/5NOT RUN
elementwise-logical.https.any.html?op=notEqual&device=npu5/50/50/50/50/5NOT RUN
elementwise-unary.https.any.html?cpu91/910/910/910/910/91NOT RUN
elementwise-unary.https.any.html?gpu91/910/910/910/910/91NOT RUN
elementwise-unary.https.any.html?npu91/910/910/910/910/91NOT RUN
elu.https.any.html?cpu10/100/100/100/100/10NOT RUN
elu.https.any.html?gpu10/100/100/100/100/10NOT RUN
elu.https.any.html?npu10/100/100/100/100/10NOT RUN
expand.https.any.html?cpu15/150/150/150/150/15NOT RUN
expand.https.any.html?gpu15/150/150/150/150/15NOT RUN
expand.https.any.html?npu15/150/150/150/150/15NOT RUN
gather.https.any.html?cpu12/120/120/120/120/12NOT RUN
gather.https.any.html?gpu7/120/120/120/120/12NOT RUN
gather.https.any.html?npu12/120/120/120/120/12NOT RUN
gatherElements.https.any.html?cpu10/100/100/100/100/10NOT RUN
gatherElements.https.any.html?gpu10/100/100/100/100/10NOT RUN
gatherElements.https.any.html?npu10/100/100/100/100/10NOT RUN
gatherND.https.any.html?cpu9/90/90/90/90/9NOT RUN
gatherND.https.any.html?gpu9/90/90/90/90/9NOT RUN
gatherND.https.any.html?npu9/90/90/90/90/9NOT RUN
gelu.https.any.html?cpu7/70/70/70/70/7NOT RUN
gelu.https.any.html?gpu7/70/70/70/70/7NOT RUN
gelu.https.any.html?npu7/70/70/70/70/7NOT RUN
gemm.https.any.html?cpu26/260/260/260/260/26NOT RUN
gemm.https.any.html?gpu26/260/260/260/260/26NOT RUN
gemm.https.any.html?npu26/260/260/260/260/26NOT RUN
gru.https.any.html?cpu29/290/290/290/290/29NOT RUN
gru.https.any.html?gpu29/290/290/290/290/29NOT RUN
gru.https.any.html?npu29/290/290/290/290/29NOT RUN
gruCell.https.any.html?cpu33/330/330/330/330/33NOT RUN
gruCell.https.any.html?gpu33/330/330/330/330/33NOT RUN
gruCell.https.any.html?npu33/330/330/330/330/33NOT RUN
hardSigmoid.https.any.html?cpu10/100/100/100/100/10NOT RUN
hardSigmoid.https.any.html?gpu10/100/100/100/100/10NOT RUN
hardSigmoid.https.any.html?npu10/100/100/100/100/10NOT RUN
hardSwish.https.any.html?cpu7/70/70/70/70/7NOT RUN
hardSwish.https.any.html?gpu7/70/70/70/70/7NOT RUN
hardSwish.https.any.html?npu7/70/70/70/70/7NOT RUN
input.https.any.html?cpu9/90/90/90/90/9NOT RUN
input.https.any.html?gpu8/90/90/90/90/9NOT RUN
input.https.any.html?npu9/90/90/90/90/9NOT RUN
instanceNormalization.https.any.html?cpu22/220/220/220/220/22NOT RUN
instanceNormalization.https.any.html?gpu22/220/220/220/220/22NOT RUN
instanceNormalization.https.any.html?npu22/220/220/220/220/22NOT RUN
invalid-rank.https.any.html?cpu2/20/20/20/20/2NOT RUN
invalid-rank.https.any.html?gpu2/20/20/20/20/2NOT RUN
invalid-rank.https.any.html?npu2/20/20/20/20/2NOT RUN
layerNormalization.https.any.html?cpu21/210/210/210/210/21NOT RUN
layerNormalization.https.any.html?gpu21/210/210/210/210/21NOT RUN
layerNormalization.https.any.html?npu21/210/210/210/210/21NOT RUN
leakyRelu.https.any.html?cpu10/100/100/100/100/10NOT RUN
leakyRelu.https.any.html?gpu10/100/100/100/100/10NOT RUN
leakyRelu.https.any.html?npu10/100/100/100/100/10NOT RUN
linear.https.any.html?cpu10/100/100/100/100/10NOT RUN
linear.https.any.html?gpu10/100/100/100/100/10NOT RUN
linear.https.any.html?npu10/100/100/100/100/10NOT RUN
lstm.https.any.html?cpu29/290/290/290/290/29NOT RUN
lstm.https.any.html?gpu29/290/290/290/290/29NOT RUN
lstm.https.any.html?npu29/290/290/290/290/29NOT RUN
lstmCell.https.any.html?cpu41/410/410/410/410/41NOT RUN
lstmCell.https.any.html?gpu40/410/410/410/410/41NOT RUN
lstmCell.https.any.html?npu41/410/410/410/410/41NOT RUN
matmul.https.any.html?cpu15/150/150/150/150/15NOT RUN
matmul.https.any.html?gpu15/150/150/150/150/15NOT RUN
matmul.https.any.html?npu15/150/150/150/150/15NOT RUN
opSupportLimits.https.any.html?cpu5/50/50/50/50/5NOT RUN
opSupportLimits.https.any.html?gpu5/50/50/50/50/5NOT RUN
opSupportLimits.https.any.html?npu5/50/50/50/50/5NOT RUN
pad.https.any.html?cpu15/150/150/150/150/15NOT RUN
pad.https.any.html?gpu15/150/150/150/150/15NOT RUN
pad.https.any.html?npu15/150/150/150/150/15NOT RUN
pooling-and-reduction-keep-dims.https.any.html?cpu3/30/30/30/30/3NOT RUN
pooling-and-reduction-keep-dims.https.any.html?gpu3/30/30/30/30/3NOT RUN
pooling-and-reduction-keep-dims.https.any.html?npu3/30/30/30/30/3NOT RUN
pooling.https.any.html?cpu53/570/570/570/570/57NOT RUN
pooling.https.any.html?gpu52/570/570/570/570/57NOT RUN
pooling.https.any.html?npu53/570/570/570/570/57NOT RUN
prelu.https.any.html?cpu10/100/100/100/100/10NOT RUN
prelu.https.any.html?gpu10/100/100/100/100/10NOT RUN
prelu.https.any.html?npu10/100/100/100/100/10NOT RUN
quantizeLinear.https.any.html?cpu15/150/150/150/150/15NOT RUN
quantizeLinear.https.any.html?gpu15/150/150/150/150/15NOT RUN
quantizeLinear.https.any.html?npu15/150/150/150/150/15NOT RUN
reduction.https.any.html?cpu91/910/910/910/910/91NOT RUN
reduction.https.any.html?gpu91/910/910/910/910/91NOT RUN
reduction.https.any.html?npu91/910/910/910/910/91NOT RUN
relu.https.any.html?cpu7/70/70/70/70/7NOT RUN
relu.https.any.html?gpu7/70/70/70/70/7NOT RUN
relu.https.any.html?npu7/70/70/70/70/7NOT RUN
resample2d.https.any.html?cpu28/280/280/280/280/28NOT RUN
resample2d.https.any.html?gpu28/280/280/280/280/28NOT RUN
resample2d.https.any.html?npu28/280/280/280/280/28NOT RUN
reshape.https.any.html?cpu14/140/140/140/140/14NOT RUN
reshape.https.any.html?gpu14/140/140/140/140/14NOT RUN
reshape.https.any.html?npu14/140/140/140/140/14NOT RUN
reverse.https.any.html?cpu9/90/90/90/90/9NOT RUN
reverse.https.any.html?gpu9/90/90/90/90/9NOT RUN
reverse.https.any.html?npu9/90/90/90/90/9NOT RUN
scatterElements.https.any.html?cpu15/150/150/150/150/15NOT RUN
scatterElements.https.any.html?gpu15/150/150/150/150/15NOT RUN
scatterElements.https.any.html?npu15/150/150/150/150/15NOT RUN
scatterND.https.any.html?cpu10/100/100/100/100/10NOT RUN
scatterND.https.any.html?gpu10/100/100/100/100/10NOT RUN
scatterND.https.any.html?npu10/100/100/100/100/10NOT RUN
sigmoid.https.any.html?cpu7/70/70/70/70/7NOT RUN
sigmoid.https.any.html?gpu7/70/70/70/70/7NOT RUN
sigmoid.https.any.html?npu7/70/70/70/70/7NOT RUN
slice.https.any.html?cpu16/160/160/160/160/16NOT RUN
slice.https.any.html?gpu16/160/160/160/160/16NOT RUN
slice.https.any.html?npu16/160/160/160/160/16NOT RUN
softmax.https.any.html?cpu10/100/100/100/100/10NOT RUN
softmax.https.any.html?gpu10/100/100/100/100/10NOT RUN
softmax.https.any.html?npu10/100/100/100/100/10NOT RUN
softplus.https.any.html?cpu7/70/70/70/70/7NOT RUN
softplus.https.any.html?gpu7/70/70/70/70/7NOT RUN
softplus.https.any.html?npu7/70/70/70/70/7NOT RUN
softsign.https.any.html?cpu7/70/70/70/70/7NOT RUN
softsign.https.any.html?gpu7/70/70/70/70/7NOT RUN
softsign.https.any.html?npu7/70/70/70/70/7NOT RUN
split.https.any.html?cpu16/160/160/160/160/16NOT RUN
split.https.any.html?gpu16/160/160/160/160/16NOT RUN
split.https.any.html?npu16/160/160/160/160/16NOT RUN
tanh.https.any.html?cpu7/70/70/70/70/7NOT RUN
tanh.https.any.html?gpu7/70/70/70/70/7NOT RUN
tanh.https.any.html?npu7/70/70/70/70/7NOT RUN
tile.https.any.html?cpu11/120/120/120/120/12NOT RUN
tile.https.any.html?gpu11/120/120/120/120/12NOT RUN
tile.https.any.html?npu11/120/120/120/120/12NOT RUN
transpose.https.any.html?cpu11/110/110/110/110/11NOT RUN
transpose.https.any.html?gpu11/110/110/110/110/11NOT RUN
transpose.https.any.html?npu11/110/110/110/110/11NOT RUN
triangular.https.any.html?cpu6/60/60/60/60/6NOT RUN
triangular.https.any.html?gpu6/60/60/60/60/6NOT RUN
triangular.https.any.html?npu6/60/60/60/60/6NOT RUN
unprintableNames.https.any.html?cpuPASSERRORERRORERRORERRORNOT RUN
unprintableNames.https.any.html?gpuPASSERRORERRORERRORERRORNOT RUN
unprintableNames.https.any.html?npuPASSERRORERRORERRORERRORNOT RUN
where.https.any.html?cpu13/130/130/130/130/13NOT RUN
where.https.any.html?gpu13/130/130/130/130/13NOT RUN
where.https.any.html?npu13/130/130/130/130/13NOT RUN