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

Browser Compatibility

LiteRT Backend / chromeOS, Linux, Windows and Android

WebNNCPUGPUNPU
chromsOS✅ LiteRT/XNNPACK🚀ℹ️ LiteRT/MLDrift🚀ℹ️ LiteRT
To do, temporarily fallback to XNNPACK
Linux✅ LiteRT/XNNPACK🚀ℹ️ LiteRT/MLDrift🚀ℹ️ LiteRT
To do, temporarily fallback to XNNPACK
Windows✅ LiteRT/XNNPACK
🚀ℹ️ WCR/MLAS (deprecated)
ℹ️ DirectML (deprecated)
🚀ℹ️ Windows ML
ℹ️ DirectML (deprecated)
🚀ℹ️ Windows ML
Android✅ LiteRT/XNNPACK🚀ℹ️ LiteRT/MLDrift🚀ℹ️ LiteRT
To do, temporarily fallback to XNNPACK

The WebNN LiteRT backend mainly supported on ChromeOS, Linux, Windows and Android.

WebNN SpecOperationsChromium Version
argMax✅ ARG_MAXM126
argMin✅ ARG_MINM126
batchNormalization✅ Emulated with Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + BiasM127
cast✅ CASTM126
clamp✅ RELU_N1_TO_1 ✅ RELU6 ✅ RELUM112
concat✅ CONCATENATIONM113
conv2d✅ CONV_2D ✅ DEPTHWISE_CONV_2DM112
convTranspose2d✅ TRANSPOSE_CONVM128
cumulativeSum✅ CUMSUMM132
dequantizeLinear✅ QUANTIZEM132
element-wise binary / add✅ ADDM112
element-wise binary / div✅ DIVM112
element-wise binary / max✅ MAXIMUMM112
element-wise binary / min✅ MINIMUMM112
element-wise binary / mul✅ MULM112
element-wise binary / notEqual✅ NotEqualM134
element-wise binary / pow✅ POWM122
element-wise binary / sub✅ SUBM112
element-wise logical / equal✅ EQUALM126
element-wise logical / greater✅ GREATERM126
element-wise logical / greaterOrEqual✅ GREATER_EQUALM126
element-wise logical / lesser✅ LESSM126
element-wise logical / lesserOrEqual✅ LESS_EQUALM126
element-wise logical / logicalAnd✅ LOGICAL_ANDM132
element-wise logical / logicalOr✅ LOGICAL_ORM132
element-wise logical / logicalXor✅ NOT_EQUALM132
element-wise logical / not✅ LOGICAL_NOTM126
element-wise unary / abs✅ ABSM116
element-wise unary / ceil✅ CEILM116
element-wise unary / identity✅ RESHAPEM126
element-wise unary / cos✅ COSM123
element-wise unary / erf✅ SIGNM128
element-wise unary / exp✅ EXPM123
element-wise unary / floor✅ FLOORM116
element-wise unary / log✅ LOGM123
element-wise unary / neg✅ NEGM116
element-wise unary / reciprocal✅ Emulated with 1/xM127
element-wise unary / sin✅ SINM123
element-wise unary / sqrt✅ SQRTM122
elu✅ ELUM115
expand✅ BROADCAST_TOM128
gather✅ GATHERM126
gatherElements✅ Emulated with GATHER_NDM133
gatherND✅ GATHER_NDM132
gelu✅ GELUM128
gemm✅ FULLY_CONNECTEDM112
gru✅ EmulatedM129
gruCell✅ EmulatedM129
hardSigmoid✅ Emulated with y = max(0, min(1, alpha * // x + beta))M126
hardSwish✅ HARD_SWISHM112
instanceNormalization✅ Emulated with Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + BiasM127
layerNormalization✅ EmulatedM127
leakyRelu✅ LEAKY_RELUM113
linear✅ Emulated with alpha * x + betaM126
lstm✅ EmulatedM129
lstmCell✅ EmulatedM129
matmul✅ BATCH_MATMULM126
pad✅ PADM114
pooling / averagePool2d✅ AVERAGE_POOL_2DM112
pooling / l2Pool2d🚀 L2_POOL_2D
pooling / maxPool2d✅ MAX_POOL_2DM112
prelu✅ PRELUM115
quantizeLinear✅ QUANTIZEM132
reduction / reduceL1✅ Emulated with adding abs operation before reduceSumM128
reduction / reduceL2✅ Emulated with appending pow(x, 0.5) after reduceSumSquareM128
reduction / reduceLogSum✅ Emulated with log and reduceSumM127
reduction / reduceLogSumExp✅ Emulated with log, reduceSum and expM127
reduction / reduceMax✅ REDUCE_MAXM126
reduction / reduceMean✅ MEANM120
reduction / reduceMin✅ REDUCE_MINM126
reduction / reduceProduct✅ REDUCE_PRODM126
reduction / reduceSum✅ SUMM126
reduction / reduceSumSquare✅ Emulated with reduceSum and squareM127
relu✅ RELUM112
resample2d✅ RESIZE_BILINEAR ✅ RESIZE_NEAREST_NEIGHBORM112
reshape✅ RESHAPEM112
reverse✅ REVERSEM133
scatterElements✅ Emulated with SCATTER_ND and WHEREM133
scatterND✅ SCATTER_NDM132
sigmoid✅ LOGISTICM112
sign✅ SIGNM130
slice✅ SLICEM116
softmax✅ SOFTMAXM112
softplus✅ Emulated with ln(1 + exp(x))M126
softsign✅ Emulated with x / (1 + |x|)M127
split✅ SPLIT_VM116
tanh✅ TANHM116
tile✅ TILEM131
transpose✅ TRANSPOSEM113
triangular✅ EmulatedM128
where✅ SELECT_V2M126
Last updated on