Browser Compatibility
Windows ML Backend / Windows
WebNN | CPU | GPU | NPU |
---|---|---|---|
Windows | ✅ LiteRT/XNNPACK ℹ️ WCR/MLAS (deprecated) | 🚀ℹ️ Windows ML | 🚀ℹ️ Windows ML |
OpenVINO EP
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.
WebNN | CPU | GPU | NPU |
---|---|---|---|
Windows | ✅ LiteRT/XNNPACK ℹ️ WCR/MLAS (deprecated) | ✅ DirectML (deprecated) | ✅ DirectML (deprecated) |
The WebNN DirectML backend mainly supported on Windows.
WebNN Spec | Operations | Chromium Version |
---|---|---|
argMax | ✅ REDUCE_FUNCTION_ARGMAX | M122 |
argMin | ✅ REDUCE_FUNCTION_ARGMIN | M122 |
batchNormalization | ✅ BATCH_NORMALIZATION | M122 |
cast | ✅ CAST | M122 |
clamp | ✅ ELEMENT_WISE_CLIP | M119 |
concat | ✅ JOIN | M120 |
conv2d | ✅ CONVOLUTION | M119 |
convTranspose2d | ✅ CONVOLUTION | M121 |
cumulativeSum | ✅ CUMULATIVE_SUMMATION | M131 |
dequantizeLinear | ✅ ELEMENT_WISE_DEQUANTIZE_LINEAR | M132 |
element-wise binary / add | ✅ ELEMENT_WISE_ADD | M119 |
element-wise binary / div | ✅ ELEMENT_WISE_DIVIDE | M119 |
element-wise binary / max | ✅ ELEMENT_WISE_MAX | M119 |
element-wise binary / min | ✅ ELEMENT_WISE_MIN | M119 |
element-wise binary / mul | ✅ ELEMENT_WISE_MULTIPLY | M119 |
element-wise binary / notEqual | ✅ Emulated with ELEMENT_WISE_LOGICAL_EQUALS and ELEMENT_WISE_LOGICAL_NOT | M134 |
element-wise binary / pow | ✅ ELEMENT_WISE_POW | M119 |
element-wise binary / sub | ✅ ELEMENT_WISE_SUBTRACT | M119 |
element-wise logical / equal | ✅ ELEMENT_WISE_LOGICAL_EQUALS | M122 |
element-wise logical / greater | ✅ ELEMENT_WISE_LOGICAL_GREATER_THAN | M122 |
element-wise logical / greaterOrEqual | ✅ ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL | M122 |
element-wise logical / lesser | ✅ ELEMENT_WISE_LOGICAL_LESS_THAN | M122 |
element-wise logical / lesserOrEqual | ✅ ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL | M122 |
element-wise logical / logicalAnd | ✅ ELEMENT_WISE_LOGICAL_AND | M131 |
element-wise logical / logicalOr | ✅ ELEMENT_WISE_LOGICAL_OR | M131 |
element-wise logical / logicalXor | ✅ ELEMENT_WISE_LOGICAL_XOR | M131 |
element-wise logical / not | ✅ ELEMENT_WISE_LOGICAL_NOT | M121 |
element-wise unary / abs | ✅ ELEMENT_WISE_ABS | M121 |
element-wise unary / ceil | ✅ ELEMENT_WISE_CEIL | M121 |
element-wise unary / identity | ✅ ELEMENT_WISE_IDENTITY | M121 |
element-wise unary / cos | ✅ ELEMENT_WISE_COS | M121 |
element-wise unary / erf | ✅ ELEMENT_WISE_ERF | M121 |
element-wise unary / exp | ✅ ELEMENT_WISE_EXP | M121 |
element-wise unary / floor | ✅ ELEMENT_WISE_FLOOR | M121 |
element-wise unary / log | ✅ ELEMENT_WISE_LOG | M121 |
element-wise unary / neg | ✅ ELEMENT_WISE_NEGATE | M121 |
element-wise unary / reciprocal | ✅ ELEMENT_WISE_RECIP | M121 |
element-wise unary / sin | ✅ ELEMENT_WISE_SIN | M121 |
element-wise unary / sqrt | ✅ ELEMENT_WISE_SQRT | M121 |
element-wise unary / tan | ✅ ELEMENT_WISE_TAN | M121 |
elu | ✅ ACTIVATION_ELU | M121 |
expand | ✅ ELEMENT_WISE_IDENTITY | M121 |
gather | ✅ GATHER | M122 |
gatherElements | ✅ GATHER_ELEMENTS | M130 |
gatherND | ✅ GATHER_ND | M131 |
gelu | ✅ ACTIVATION_GELU | M126 |
gemm | ✅ GEMM | M119 |
gru | ✅ GRU | M125 |
gruCell | ✅ GRU | M125 |
hardSigmoid | ✅ ACTIVATION_HARD_SIGMOID | M123 |
hardSwish | ✅ Map to other op | M123 |
instanceNormalization | ✅ MEAN_VARIANCE_NORMALIZATION1 | M122 |
layerNormalization | ✅ MEAN_VARIANCE_NORMALIZATION1 | M122 |
leakyRelu | ✅ ACTIVATION_LEAKY_RELU | M121 |
linear | ✅ ACTIVATION_LINEAR | M122 |
lstm | ✅ LSTM | M125 |
lstmCell | ✅ LSTM | M125 |
matmul | ✅ GEMM | M121 |
pad | ✅ PADDING | M120 |
pooling / averagePool2d | ✅ AVERAGE_POOLING | M119 |
pooling / l2Pool2d | ✅ LP_POOLING | M123 |
pooling / maxPool2d | ✅ MAX_POOLING2 | M119 |
prelu | ✅ ACTIVATION_PARAMETERIZED_RELU | M120 |
quantizeLinear | ✅ ELEMENT_WISE_QUANTIZE_LINEAR | M132 |
reduction / reduceL1 | ✅ REDUCE_FUNCTION_L1 | M121 |
reduction / reduceL2 | ✅ REDUCE_FUNCTION_L2 | M121 |
reduction / reduceLogSum | ✅ REDUCE_FUNCTION_LOG_SUM | M121 |
reduction / reduceLogSumExp | ✅ REDUCE_FUNCTION_LOG_SUM_EXP | M121 |
reduction / reduceMax | ✅ REDUCE_FUNCTION_MAX | M121 |
reduction / reduceMean | ✅ REDUCE_FUNCTION_AVERAGE | M121 |
reduction / reduceMin | ✅ REDUCE_FUNCTION_MIN | M121 |
reduction / reduceProduct | ✅ REDUCE_FUNCTION_MULTIPLY | M121 |
reduction / reduceSum | ✅ REDUCE_FUNCTION_SUM | M121 |
reduction / reduceSumSquare | ✅ REDUCE_FUNCTION_SUM_SQUARE | M121 |
relu | ✅ ACTIVATION_RELU | M119 |
resample2d | ✅ RESAMPLE | M121 |
reshape | ✅ Supported by tensor strides | M119 |
reverse | ✅ SLICE1 | M133 |
scatterElements | ✅ SCATTER_ELEMENTS | M132 |
scatterND | ✅ SCATTER_ND | M131 |
sigmoid | ✅ ACTIVATION_SIGMOID | M121 |
sign | ✅ ELEMENT_WISE_SIGN | M130 |
slice | ✅ SLICE | M120 |
softmax | ✅ ACTIVATION_SOFTMAX | M119 |
softplus | ✅ ACTIVATION_SOFTPLUS | M122 |
softsign | ✅ ACTIVATION_SOFTSIGN | M123 |
split | ✅ SPLIT | M120 |
tanh | ✅ ACTIVATION_TANH | M121 |
tile | ✅ TILE | M130 |
transpose | ✅ Supported by tensor strides | M120 |
triangular | ✅ Supported by combined operations | M126 |
where | ✅ ELEMENT_WISE_IF | M122 |
Last updated on