// hardware check

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

Graphics
Read bandwidth
Measured — how strong this GPU is
Runtime build
Storage available
Quota this browser grants a site
CPU threads
System memory
Browser-reported, capped at 8 GB

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:

ModelFile sizeMeasuredThe rule predicts
Qwen3 0.6B0.4 GB48.8 tok/s
Qwen3 1.7B1.1 GB46.6 tok/s17.7 tok/s
Qwen3 4B2.6 GB58.6 tok/s7.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:

01

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.

02

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.

03

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

How do I know if my browser supports WebGPU?

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.

Can my computer run a large language model in the browser?

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.

Why does a browser AI model need a GPU at all?

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.

How much disk space does a browser-run model need?

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.

Does this page send my hardware details anywhere?

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.

The check says my machine is fine but the agent is still slow. Why?

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