Can your browser run a local AI model?
This page tests your actual machine — WebGPU, your graphics card's memory bandwidth, the WebAssembly features the runtime needs, and how much the browser will let a site store — then tells you which models your machine can actually keep and run. It takes about a second and nothing leaves your browser.
Checking your machine…
Running each test in your browser. No data is sent anywhere.
- Graphics adapter (WebGPU)
- WebAssembly runtime features
- Browser storage budget
- GPU memory bandwidth
Your machine
Everything above was measured in your browser and stays there. AgentOp records only a coarse bucket — the verdict tier, a vendor word such as “nvidia”, which runtime build applies, and whether a model fits — because the full set of readings, taken together, would be a browser fingerprint, and this is not a product that fingerprints people. How we handle data →
What you can run
27 models, smallest first| Model | Download | Context | On this machine |
|---|---|---|---|
|
Qwen 3 0.6B (Q4_K_M)
Qwen
|
0.4GB | 4096 tokens | not checked |
|
Qwen 3.5 0.8B (Q4_K_M)
Qwen 3.5
|
0.5GB | 8192 tokens | not checked |
|
LFM2.5 1.2B Instruct (Q4_K_M)
LFM (Liquid AI)
|
0.7GB | 8192 tokens | not checked |
|
Llama 3.2 1B Instruct (Q4_K_M)
Llama
|
0.8GB | 8192 tokens | not checked |
|
DeepSeek R1 Distill Qwen 1.5B (Q4_K_M)
DeepSeek
|
1.1GB | 8192 tokens | not checked |
|
Qwen 3 1.7B (Q4_K_M)
Qwen
|
1.1GB | 8192 tokens | not checked |
|
Qwen 3.5 2B (Q4_K_M)
Qwen 3.5
|
1.3GB | 8192 tokens | not checked |
|
LFM2.5 2.6B (Q4_K_M)
LFM (Liquid AI)
|
1.7GB | 8192 tokens | not checked |
|
Hermes 3 Llama 3.2 3B (Q4_K_M)
Hermes (NousResearch)
|
2.0GB | 8192 tokens | not checked |
|
Llama 3.2 3B Instruct (Q4_K_M)
Llama
|
2.0GB | 8192 tokens | not checked |
|
Granite 4.2 3B (Q4_K_M)
Granite (IBM)
|
2.2GB | 8192 tokens | not checked |
|
Phi 3.5 Mini 3.8B Instruct (Q4_K_M)
Phi
|
2.4GB | 2048 tokens | not checked |
|
Phi 4 Mini Instruct (Q4_K_M)
Phi
|
2.5GB | 8192 tokens | not checked |
|
Qwen 3 4B (Q4_K_M)★ default
Qwen
|
2.5GB | 8192 tokens | not checked |
|
Qwen 3.5 4B (Q4_K_M)
Qwen 3.5
|
2.7GB | 8192 tokens | not checked |
|
Gemma 4 E2B Instruct (Q4_K_M)
Gemma 4
|
3.5GB | 8192 tokens | not checked |
|
DeepSeek R1 Distill Qwen 7B (Q4_K_M)
DeepSeek
|
4.7GB | 8192 tokens | not checked |
|
Qwen 2.5 Coder 7B Instruct (Q4_K_M)
Qwen
|
4.7GB | 8192 tokens | not checked |
|
Ling 3.0 Tiny (Q4_K_M)
Ling (InclusionAI)
|
4.8GB | 8192 tokens | not checked |
|
Llama 3.1 8B Instruct (Q4_K_M)
Llama
|
4.9GB | 8192 tokens | not checked |
|
DeepSeek R1-0528 Qwen3 8B (Q4_K_M)
DeepSeek
|
5.0GB | 8192 tokens | not checked |
|
Qwen 3 8B (Q4_K_M)
Qwen
|
5.0GB | 8192 tokens | not checked |
|
LFM2.5 8B A1B MoE (Q4_K_M)
LFM (Liquid AI)
|
5.2GB | 8192 tokens | not checked |
|
Gemma 4 E4B Instruct (Q4_K_M)
Gemma 4
|
5.4GB | 8192 tokens | not checked |
|
Granite 4.2 8B (Q4_K_M)
Granite (IBM)
|
5.4GB | 8192 tokens | not checked |
|
Qwen 3.5 9B (Q4_K_M)
Qwen 3.5
|
5.7GB | 8192 tokens | not checked |
|
Gemma 4 12B Instruct (Q4_K_M) ⚠️ Heavy
Gemma 4
|
7.1GB | 8192 tokens | not checked |
Full technical report (adapter limits, features, WebAssembly matrix)
Run the check to populate this.
What this page checks — and what no browser will tell it
Browsers deliberately refuse to expose your hardware. There is no way for a web page to
read your VRAM, your CPU model, your clock speed or your disk size, and
navigator.deviceMemory is quantised and capped at 8 GB, so a 64 GB
workstation reports 8. What a page can do is check capability flags, read a few
coarse buckets, and measure performance directly. This check does all three:
- A real graphics adapter, or a fake one. Asking for WebGPU is not enough — a browser can report support and hand back a software renderer, which is slower than the CPU path it would otherwise take. The check asks for the high-performance adapter and looks at whether it is a fallback.
- Which runtime build applies. The local model runtime is llama.cpp compiled to WebAssembly. With JavaScript Promise Integration and Memory64 it uses the fast build and can address models above 4 GB; without them it falls back to a compatibility build that works but is slower and capped.
- The storage quota, not your disk. A model is downloaded once and kept in the browser's cache. The binding limit is the quota the browser grants a site — roughly 60% of free disk in Chromium, considerably less in Safari — so this is what decides whether a 5 GB model can be kept at all.
- Actual memory bandwidth. A short compute shader streams a large buffer through the GPU and times it. That separates a real graphics card from a weak integrated one by an order of magnitude — a measurement, not a spec sheet.
What actually decides speed in a browser (we measured it)
The textbook rule for local language models is that generating one token at a time is limited by memory bandwidth, because every token re-reads the model's weights — so tokens per second should be roughly your GPU's bandwidth divided by the model's size, and a bigger model should be proportionally slower.
We built that rule into this page, then measured it, and on this stack it does not hold. Three models on one RTX 4090, in Chrome, three generation passes each:
| Model | File size | Measured | The rule predicts |
|---|---|---|---|
| Qwen3 0.6B | 0.4 GB | 48.8 tok/s | — |
| Qwen3 1.7B | 1.1 GB | 46.6 tok/s | 17.7 tok/s |
| Qwen3 4B | 2.6 GB | 58.6 tok/s | 7.5 tok/s |
A 6.5× range of model sizes, and the largest model was the fastest. The reason is that a language model running in a browser tab pays a large fixed cost per token — crossing the JavaScript/WebAssembly boundary, dispatching each layer to the GPU separately — and in the size range a browser can actually handle, that cost dominates. The GPU spends much of each token waiting to be told what to do next. Bandwidth is the ceiling; this runtime is nowhere near it.
Which is why this page does not print a tokens-per-second figure
It would be a number we cannot stand behind. What the measurement above does support is the distinction this page actually makes: whether your machine has a real GPU, how strong it is relative to other machines, and whether the browser will let it keep the model file. Those are the three things that decide whether a local agent is usable, and all three are measured here rather than estimated.
For context: the bandwidth figure above is a real reading. On the same 4090 it measures around 920 GB/s, about 91% of that card's theoretical 1008 GB/s, so the benchmark is working correctly — it is the extrapolation from it to a per-model speed that the evidence does not support.
Browser support
| Browser | Platform | WebGPU | What to expect |
|---|---|---|---|
| Chrome / Edge 113+ | Windows, macOS, Linux, ChromeOS | Yes | Best supported. Full-speed GPU path and the fast runtime build. |
| Safari 26+ | macOS, iPadOS | Yes | Works on Apple Silicon. Browser storage limits are tighter, so large models may not cache. |
| Firefox 141+ | Windows | Yes | Works. Falls back to the compatibility runtime build where JSPI is missing, which is slower. |
| Older or mobile browsers | Any | No | Cloud providers (OpenAI, Anthropic) still work; on-device models do not. |
Phones and tablets are out of scope by design. A local model needs several gigabytes of memory and sustained power draw; the honest answer on a phone is to use a cloud provider.
If the check says no
You still have three options, in order of least effort:
Turn on hardware acceleration
If the check found WebGPU but no real adapter, your browser is almost certainly running with hardware acceleration disabled — a common default on managed work machines. It is a single setting in Chrome and Edge under System settings.
Run the same agent on a cloud provider
Every agent that can run locally can also run against OpenAI or Anthropic with your own key, which needs no GPU at all. The key is encrypted in your browser and the request goes straight from your machine to the provider — it never reaches our servers. Retrieval, transcription and document reading still happen on your device either way.
Pick a smaller model
The smallest model in the table is Qwen 3 0.6B (Q4_K_M) at 0.4GB, which runs on machines that cannot touch the larger ones. For extraction, classification and summarising — what these agents mostly do — the difference in quality is much smaller than the difference in speed.
Frequently asked
Open this page and it answers in about a second. Technically the test is whether navigator.gpu exists and whether requesting an adapter from it returns real hardware rather than a software renderer — the second half matters, because a browser can report WebGPU support and then run everything on the CPU. WebGPU ships by default in Chrome and Edge 113+, Safari 26+ on Apple Silicon, and Firefox 141+ on Windows.
If it has a GPU that WebGPU can reach and a few gigabytes of free disk, almost certainly yes. Two things decide it: whether the browser exposes a real graphics adapter rather than a software renderer, and whether the storage quota the browser grants a site is large enough to keep the model file. Model size matters far less for speed than people expect — we measured Qwen3 0.6B, 1.7B and 4B on one RTX 4090 and got 48.8, 46.6 and 58.6 tokens per second respectively, with the largest model the fastest, because in-browser generation is dominated by per-token overhead rather than by reading the weights.
It does not strictly need one — the runtime falls back to the CPU through WebAssembly and still produces correct answers. But a CPU is roughly an order of magnitude slower at this work than a graphics card, so a model that answers in seconds on a GPU can take minutes on a CPU. That is why this page treats 'no usable GPU' as a reason to pick a cloud provider or the smallest model rather than as a hard failure.
Between roughly 0.5 GB and 7.5 GB depending on the model, downloaded once and then kept in the browser's Cache API storage for reuse. The practical limit is not your disk but the storage quota the browser grants the site, which in Chromium is approximately 60% of remaining free disk space and in Safari is considerably tighter. This page reads that quota and tells you which models actually fit.
No. Every check runs in your browser and the full report never leaves it. AgentOp records only a coarse bucket — a verdict tier, a GPU vendor word such as 'nvidia', which runtime build applies, and whether a model would fit — so it can tell whether people are failing at the hardware step. No adapter limits, no renderer string, no storage figures and no identifiers are sent, because the full combination would be a browser fingerprint.
Three common causes. The model is still downloading, which happens once per model and can take several minutes on a slow connection. The browser fell back to the compatibility build of the runtime because JavaScript Promise Integration or Memory64 is missing, which is slower and caps models at 4 GB. Or another application is already using the GPU's memory. This page reports what your hardware can do on an otherwise idle machine.
Related
Local LLM options compared
Browser runtimes vs Ollama and LM Studio vs cloud — which fits which job.
Providers & on-device capabilities
What runs locally, what a cloud key changes, and what each capability downloads.
Browse agents
Document Q&A, receipt extraction, meeting minutes and more — try before downloading.
Trust & security
What our servers see, which is far less than you would expect.