01Capabilities
WebNN
checking…
WebGPU
checking…
WebAssembly
checking…
Cross-origin isolation
checking…
Storage
checking…
Built-in AI (Prompt API)
checking…
Device availability — what the browser compiles for when you ask for each device
| Device | createContext | Build | graph.devices | Verdict |
|---|---|---|---|---|
| checking… | ||||
02Backend
→
pipeline(task, model, { device, dtype })
Resolving…
03aImage classification

03bSpeech to text · Whisper
03cPrompt API → Transformers.js fallback
detecting…
04Fallback trace
Requested vs. what JS can observe: each WebNN context and graph the library creates (options passed, time, graph.devices), this demo's own chain (NPU → GPU → CPU → WASM on errors), ORT op placement (turn on verbose ORT op log), and per-run timings. A missing NPU does not throw: when graph.devices is empty the browser picked and JS cannot see what. Then use Task Manager / chrome://histograms (README → “Tracing NPU fallback”).
05Benchmark board
| Task | Model | Backend | dtype | Download | Load | 1st run | Avg (n) | tok/s | Result |
|---|
Load = pipeline construction incl. session creation (cached files after first visit). 1st run includes backend warm-up/compilation. Avg = mean of n timed runs after the first.
06Offline & caches
…