Skip to Content
🚧 The WebNN documentation is work-in-progress. Share feedback →

Browser Compatibility

Windows ML Backend / Windows

WebNNCPUGPUNPU
Windows 11 24H2 and newer✅ LiteRT / XNNPACK
✅ Windows ML✅ Windows ML

Windows ML / ONNX Runtime / OpenVINO Execution Provider

WebNN SpecOperationsChromium Version
argMax✅ ArgMaxM140
argMin✅ ArgMinM140
batchNormalization✅ BatchNormalizationM140
cast✅ CastM139
clamp✅ ClipM139
concat✅ ConcatM139
conv2d✅ ConvM139
convTranspose2d✅ ConvTransposeM139
cumulativeSum✅ CumSumM140
dequantizeLinear✅ DequantizeLinearM140
element-wise binary / add✅ AddM139
element-wise binary / div✅ DivM139
element-wise binary / max✅ MaxM139
element-wise binary / min✅ MinM139
element-wise binary / mul✅ MulM139
element-wise binary / notEqual✅ Emulate with Not + EqualM139
element-wise binary / pow✅ PowM139
element-wise binary / sub✅ SubM139
element-wise logical / equal✅ EqualM140
element-wise logical / greater✅ GreaterM140
element-wise logical / greaterOrEqual✅ GreaterOrEqualM140
element-wise logical / lesser✅ LessM140
element-wise logical / lesserOrEqual✅ LessOrEqualM140
element-wise logical / logicalAnd✅ AndM140
element-wise logical / logicalOr✅ OrM140
element-wise logical / logicalXor✅ XorM140
element-wise logical / not✅ NotM140
element-wise unary / abs✅ AbsM139
element-wise unary / ceil✅ CeilM139
element-wise unary / identity✅ IdentityM139
element-wise unary / cos✅ CosM139
element-wise unary / erf✅ ErfM139
element-wise unary / exp✅ ExpM139
element-wise unary / floor✅ FloorM139
element-wise unary / isInfinite✅ IsInfM141
element-wise unary / isNaN✅ IsNaNM141
element-wise unary / log✅ LogM139
element-wise unary / neg✅ NegM139
element-wise unary / reciprocal✅ ReciprocalM139
element-wise unary / roundEven✅ RoundM141
element-wise unary / sin✅ SinM139
element-wise unary / sqrt✅ SqrtM139
element-wise unary / tan✅ TanM139
elu✅ EluM140
expand✅ ExpandM139
gather✅ GatherM140
gatherElements✅ GatherElementsM140
gatherND✅ GatherNDM140
gelu✅ GeluM139
gemm✅ GemmM139
gru✅ GRUM140
gruCell✅ GRUM140
hardSigmoid✅ HardSigmoidM140
hardSwish✅ HardSwishM139
instanceNormalization✅ InstanceNormalizationM140
layerNormalization✅ LayerNormalizationM140
leakyRelu✅ LeakyReluM139
linear✅ LinearM140
lstm✅ LSTMM140
lstmCell✅ LSTMM140
matmul✅ MatMulM140
pad✅ PadM140
pooling / averagePool2d✅ AveragePoolM139
pooling / l2Pool2d✅ LpPoolM139
pooling / maxPool2d✅ MaxPoolM139
prelu✅ PReluM139
quantizeLinear✅ QuantizeLinearM140
reduction / reduceL1✅ ReduceL1M140
reduction / reduceL2✅ ReduceL2M140
reduction / reduceLogSum✅ ReduceLogSumM140
reduction / reduceLogSumExp✅ ReduceLogSumExpM140
reduction / reduceMax✅ ReduceMaxM140
reduction / reduceMean✅ ReduceMeanM140
reduction / reduceMin✅ ReduceMinM140
reduction / reduceProduct✅ ReduceProdM140
reduction / reduceSum✅ ReduceSumM140
reduction / reduceSumSquare✅ ReduceSumSquareM140
relu✅ ReluM139
resample2d✅ ResizeM140
reshape✅ ReshapeM139
reverse✅ Emulate using backward slice with negative stepsM140
scatterElements✅ ScatterElementsM140
scatterND✅ ScatterNDM140
sigmoid✅ SigmoidM139
sign✅ SignM139
slice✅ SliceM140
softmax✅ SoftmaxM139
softplus✅ SoftplusM140
softsign✅ SoftsignM139
split✅ SplitM139
tanh✅ TanhM139
tile✅ TileM140
transpose✅ TransposeM139
triangular✅ TriluM140
where✅ WhereM140

Additional Resources

ONNX Layers supported using OpenVINO

DirectML Backend / Windows (Deprecated)

May 20, 2025: DirectML was officially deprecated during Microsoft Build 2025. WebNN will leverage Windows ML to access OpenVINO and other EPs to get hardware acceleration.

WebNNCPUGPUNPU
Windows✅ LiteRT / XNNPACK✅ DirectML (deprecated)✅ DirectML (deprecated)

The WebNN DirectML backend mainly supported on Windows.

WebNN SpecOperationsChromium Version
argMax✅ REDUCE_FUNCTION_ARGMAXM122
argMin✅ REDUCE_FUNCTION_ARGMINM122
batchNormalization✅ BATCH_NORMALIZATIONM122
cast✅ CASTM122
clamp✅ ELEMENT_WISE_CLIPM119
concat✅ JOINM120
conv2d✅ CONVOLUTIONM119
convTranspose2d✅ CONVOLUTIONM121
cumulativeSum✅ CUMULATIVE_SUMMATIONM131
dequantizeLinear✅ ELEMENT_WISE_DEQUANTIZE_LINEARM132
element-wise binary / add✅ ELEMENT_WISE_ADDM119
element-wise binary / div✅ ELEMENT_WISE_DIVIDEM119
element-wise binary / max✅ ELEMENT_WISE_MAXM119
element-wise binary / min✅ ELEMENT_WISE_MINM119
element-wise binary / mul✅ ELEMENT_WISE_MULTIPLYM119
element-wise binary / notEqual✅ Emulated with ELEMENT_WISE_LOGICAL_EQUALS and ELEMENT_WISE_LOGICAL_NOTM134
element-wise binary / pow✅ ELEMENT_WISE_POWM119
element-wise binary / sub✅ ELEMENT_WISE_SUBTRACTM119
element-wise logical / equal✅ ELEMENT_WISE_LOGICAL_EQUALSM122
element-wise logical / greater✅ ELEMENT_WISE_LOGICAL_GREATER_THANM122
element-wise logical / greaterOrEqual✅ ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUALM122
element-wise logical / lesser✅ ELEMENT_WISE_LOGICAL_LESS_THANM122
element-wise logical / lesserOrEqual✅ ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUALM122
element-wise logical / logicalAnd✅ ELEMENT_WISE_LOGICAL_ANDM131
element-wise logical / logicalOr✅ ELEMENT_WISE_LOGICAL_ORM131
element-wise logical / logicalXor✅ ELEMENT_WISE_LOGICAL_XORM131
element-wise logical / not✅ ELEMENT_WISE_LOGICAL_NOTM121
element-wise unary / abs✅ ELEMENT_WISE_ABSM121
element-wise unary / ceil✅ ELEMENT_WISE_CEILM121
element-wise unary / identity✅ ELEMENT_WISE_IDENTITYM121
element-wise unary / cos✅ ELEMENT_WISE_COSM121
element-wise unary / erf✅ ELEMENT_WISE_ERFM121
element-wise unary / exp✅ ELEMENT_WISE_EXPM121
element-wise unary / floor✅ ELEMENT_WISE_FLOORM121
element-wise unary / isInfinite✅ ELEMENT_WISE_IS_INFINITYM140
element-wise unary / isNaN✅ ELEMENT_WISE_IS_NANM141
element-wise unary / log✅ ELEMENT_WISE_LOGM121
element-wise unary / neg✅ ELEMENT_WISE_NEGATEM121
element-wise unary / reciprocal✅ ELEMENT_WISE_RECIPM121
element-wise unary / roundEven✅ ELEMENT_WISE_ROUNDM141
element-wise unary / sin✅ ELEMENT_WISE_SINM121
element-wise unary / sqrt✅ ELEMENT_WISE_SQRTM121
element-wise unary / tan✅ ELEMENT_WISE_TANM121
elu✅ ACTIVATION_ELUM121
expand✅ ELEMENT_WISE_IDENTITYM121
gather✅ GATHERM122
gatherElements✅ GATHER_ELEMENTSM130
gatherND✅ GATHER_NDM131
gelu✅ ACTIVATION_GELUM126
gemm✅ GEMMM119
gru✅ GRUM125
gruCell✅ GRUM125
hardSigmoid✅ ACTIVATION_HARD_SIGMOIDM123
hardSwish✅ Map to other opM123
instanceNormalization✅ MEAN_VARIANCE_NORMALIZATION1M122
layerNormalization✅ MEAN_VARIANCE_NORMALIZATION1M122
leakyRelu✅ ACTIVATION_LEAKY_RELUM121
linear✅ ACTIVATION_LINEARM122
lstm✅ LSTMM125
lstmCell✅ LSTMM125
matmul✅ GEMMM121
pad✅ PADDINGM120
pooling / averagePool2d✅ AVERAGE_POOLINGM119
pooling / l2Pool2d✅ LP_POOLINGM123
pooling / maxPool2d✅ MAX_POOLING2M119
prelu✅ ACTIVATION_PARAMETERIZED_RELUM120
quantizeLinear✅ ELEMENT_WISE_QUANTIZE_LINEARM132
reduction / reduceL1✅ REDUCE_FUNCTION_L1M121
reduction / reduceL2✅ REDUCE_FUNCTION_L2M121
reduction / reduceLogSum✅ REDUCE_FUNCTION_LOG_SUMM121
reduction / reduceLogSumExp✅ REDUCE_FUNCTION_LOG_SUM_EXPM121
reduction / reduceMax✅ REDUCE_FUNCTION_MAXM121
reduction / reduceMean✅ REDUCE_FUNCTION_AVERAGEM121
reduction / reduceMin✅ REDUCE_FUNCTION_MINM121
reduction / reduceProduct✅ REDUCE_FUNCTION_MULTIPLYM121
reduction / reduceSum✅ REDUCE_FUNCTION_SUMM121
reduction / reduceSumSquare✅ REDUCE_FUNCTION_SUM_SQUAREM121
relu✅ ACTIVATION_RELUM119
resample2d✅ RESAMPLEM121
reshape✅ Supported by tensor stridesM119
reverse✅ SLICE1M133
scatterElements✅ SCATTER_ELEMENTSM132
scatterND✅ SCATTER_NDM131
sigmoid✅ ACTIVATION_SIGMOIDM121
sign✅ ELEMENT_WISE_SIGNM130
slice✅ SLICEM120
softmax✅ ACTIVATION_SOFTMAXM119
softplus✅ ACTIVATION_SOFTPLUSM122
softsign✅ ACTIVATION_SOFTSIGNM123
split✅ SPLITM120
tanh✅ ACTIVATION_TANHM121
tile✅ TILEM130
transpose✅ Supported by tensor stridesM120
triangular✅ Supported by combined operationsM126
where✅ ELEMENT_WISE_IFM122
Last updated on