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 10
Windows 11 prior to 24H2
✅ LiteRT / XNNPACK✅ LiteRT / MLDrift🚀ℹ️ LiteRT
To do, temporarily fallback to XNNPACK
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 Spec OperationsChromium 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 / isInfinite ✅ Emulate with abs(x) == +infM140
element-wise unary / isNaN ✅ Emulate with x != xM141
element-wise unary / log ✅ LOGM123
element-wise unary / neg ✅ NEGM116
element-wise unary / reciprocal ✅ Emulated with 1/xM127
element-wise unary / roundEven ✅ RoundM141
element-wise unary / sin ✅ SINM123
element-wise unary / sqrt ✅ SQRTM122
element-wise unary / tan ✅ Emulated with sin(x)/cos(x)M126
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