Product Pricing Security & data Research Publications Blog About Careers Alpha Talk to us Download alpha
Research Local inference · 14 July 2026 · 9 min read

Quantisation trade-offs for on-device browser agents

We benchmarked fourteen model and quantisation pairings across four consumer machines to find out which configurations are genuinely usable inside a browser. The honest answer is narrower than the marketing suggests, and the binding constraint is not the one most teams optimise for.

ReportDBR-2026-05
Versionv1.2
AreaLocal inference

Updated 14 July 2026 · corrected Ryzen throughput figures in v1.1

Abstract

Browser agents have a latency budget that chatbots do not. A user who clicks “summarise these tabs” is waiting on a foreground task, not reading a streaming reply. We measured time-to-first-token, sustained throughput, peak resident memory, and task accuracy for fourteen model/quantisation pairings on four machines representative of our alpha population. Q4_K_M at 7–9B parameters emerged as the only configuration meeting all four constraints on hardware with 16 GB of unified memory; below Q4, accuracy degradation on extraction tasks was severe enough to make the agent untrustworthy rather than merely slower.

Q4_K_Mthe only quantisation clearing all four constraints at 16 GB
2.3×time-to-first-token penalty when the model spills to swap
−31%extraction accuracy at Q2_K versus Q4_K_M on the same weights

A browser agent is not a chatbot. When someone asks a chat interface a question, they will tolerate a two-second pause because the reply streams and reading absorbs the wait. When someone clicks “summarise these tabs” in a browser, they are blocked on a foreground task, and the perceived cost of a pause is much higher. That single difference reshapes which local models are actually viable.

We wanted a defensible answer to a question we kept being asked by alpha testers: what should I actually run? The marketing answer — “any GGUF that fits in memory” — is technically true and practically useless. So we built a harness, picked four machines that match the hardware distribution in our alpha, and measured fourteen configurations against the constraints a browser agent actually has.

The four constraints

We treat a configuration as viable only if it clears all four of the following. These thresholds came from watching session recordings, not from a spec sheet.

02040608054272M3 Pro 18GB713819M4 Max 36GB46221.6Ryzen AI 9 32GB61292.4RTX 3060 16GB3B Q4_K_M9B Q4_K_M14B Q4_K_M
Sustained throughput by machine and model size. The 14B column is the interesting one: it clears our threshold only on the 36 GB machine, and the gap is not gradual — it is the memory cliff.

The throughput picture is roughly what you would expect from parameter count and memory bandwidth, with one exception. The 14B model on the 16 GB machine does not degrade gracefully; it falls off a cliff. Once the working set exceeds available unified memory, the operating system begins paging, and throughput drops by more than an order of magnitude rather than tapering. There is no useful middle ground to tune into.

Time to first token is the constraint that binds

Throughput gets the attention, but in our measurements time-to-first-token (TTFT) was the constraint that eliminated the most configurations. TTFT is dominated by prompt processing, and a browser agent's prompts are long: the semantic index retrieves passages from open tabs, history, and local documents, so a typical agent turn carries 2,000–6,000 tokens of context before the user's question.

0 ms1000 ms2000 ms3000 ms4000 ms3B Q4_K_M210 ms9B Q4_K_M640 ms9B Q5_K_M720 ms14B Q4_K_M1490 ms14B Q5_K_M2180 ms14B Q8_0 (swaps)3420 ms
Time to first token at a 4,000-token context. The dashed threshold is our 900 ms budget. Configurations that spill to swap are shown at their measured value, not clipped.

Three findings stand out. First, the 3B models clear the budget everywhere, including on the oldest machine we tested. Second, the 7–9B class clears it on everything with unified memory and an NPU or a modern GPU, which describes most machines bought since 2023. Third, the 2.3× penalty we measured when a model spills to swap is not recoverable by any amount of prompt engineering; the only fix is a smaller model or more memory.

Below Q4, the failure mode changes character

The most consequential result was not about speed. Aggressive quantisation is usually discussed as a quality-for-memory trade, with the implication that you lose a little polish. On extraction tasks — pull the effective date out of this contract, find the figure this paragraph cites — that framing is wrong. The degradation is not graceful.

QuantisationSize (9B)SummarisationExtractionCitation accuracy
FP16 (baseline)18.0 GB100100100
Q8_09.6 GB999898
Q5_K_M6.4 GB979594
Q4_K_M5.5 GB969593
Q3_K_M4.4 GB917871
Q2_K3.4 GB846958
Scores normalised to the FP16 baseline (=100) on our internal 640-item evaluation set.

Summarisation holds up reasonably well down to Q3, which is why quantisation benchmarks that lead with summarisation scores paint an optimistic picture. Extraction and citation accuracy fall much faster. At Q2_K, the model still produces fluent, confident, well-formatted answers — it simply attributes them to the wrong source about four times in ten. For an agent whose entire value proposition is “it cites what it actually read,” that is a disqualifying failure, and it is invisible to anyone eyeballing output quality.

A fluent wrong answer is more expensive than a slow right one. We now gate every quantisation on citation accuracy before we look at throughput at all.

Where quality and memory actually trade

025507510005101520Q2_K 9BQ4_K_M 9BFP16 9Bpeak resident memory (GB)citation accuracy (indexed)
Citation accuracy against peak resident memory for all fourteen configurations. The useful frontier is narrow, and it sits almost entirely in the 5–7 GB band.

Plotting all fourteen configurations makes the shape of the problem clear. There is a steep region below about 4.5 GB where small memory savings cost a great deal of accuracy, and a flat region above about 7 GB where additional memory buys almost nothing. The interesting frontier is narrow. Q4_K_M at 7–9B parameters sits almost exactly at the knee, which is why it is now our default recommendation and the configuration the alpha auto-selects when it detects 16 GB of unified memory.

Method

Each configuration was run 40 times per task class on an otherwise idle machine, with the browser open and five representative tabs loaded, because measuring inference on a quiescent system overstates what a browser agent will actually see. We report medians; the interquartile range was under 8% for every configuration except those that spilled to swap, where it exceeded 60%. Prompt contexts were sampled from real alpha sessions with participant consent, then scrubbed of identifying content and fixed as a static set so every configuration saw identical inputs.

HardwareM3 Pro 18 GB · M4 Max 36 GB · Ryzen AI 9 365 32 GB · i7-11800H + RTX 3060 16 GB
Runtimesllama.cpp b4021 · Ollama 0.5.4 · MLX 0.21 (Apple silicon only)
Evaluation set640 items · 220 summarisation, 240 extraction, 180 citation
ScoringExtraction and citation scored programmatically against ground truth; summarisation scored by three annotators, Krippendorff’s α = 0.79

Limitations

Our evaluation set is English-only, and we expect extraction degradation under quantisation to be worse in languages with richer morphology — we have not measured this and would not want anyone to assume the numbers transfer. The four machines are drawn from our alpha population, which skews toward recent, well-specified hardware; a median consumer laptop is slower than everything reported here. We measured a fixed point in a fast-moving field, and quantisation methods released after March 2026 are not represented.

The evaluation harness and the scrubbed prompt corpus are available on request for reproduction. Write to research@dartbrowser.com. We are particularly interested in results from hardware slower than anything in our sample.

Post-training quantisation for large language models is well characterised in the aggregate. Dettmers et al. [1] established that outlier features dominate degradation at 8-bit, and GPTQ [2] and AWQ [3] both show that careful per-channel treatment recovers most of the loss at 4-bit on general benchmarks. What that literature largely measures is perplexity and multiple-choice accuracy, both of which are aggregate scores over generation. Our contribution is narrower and more specific: we measure a task class — extraction with attribution — where the failure is silent, and we measure it against the latency and memory budget of a foreground browser action rather than an offline batch. On that axis the published picture is optimistic by a wide margin.

Artefacts

Everything below is published or available on request. A number nobody can reproduce is an advertisement, not a result.

harnessdart-quant-benchEvaluation harness · 640-item set · MIT
corpusbrowsing-prompts-scrubbed1,840 real agent prompts, de-identified · on request
dataRaw per-run timingsCSV · 14 configs × 4 machines × 40 runs

References

  1. Dettmers, T., Lewis, M., Belkada, Y., & Zettlemoyer, L. (2022). LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale. NeurIPS.
  2. Frantar, E., Ashkboos, S., Hoefler, T., & Alistarh, D. (2023). GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. ICLR.
  3. Lin, J., Tang, J., Tang, H., et al. (2024). AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration. MLSys.
  4. Dettmers, T., Pagnoni, A., Holtzman, A., & Zettlemoyer, L. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. NeurIPS.
  5. Gerganov, G., et al. (2023–). llama.cpp. Software.
  6. Bhardwaj, M. (2026). Retrieval quality against index size for on-device browsing history. Dart Browser Research, DBR-2026-02.
Cite this work

Bhardwaj, M. (2026). Quantisation trade-offs for on-device browser agents. Dart Browser Research, DBR-2026-05.

Mohit Bhardwaj

Member of Technical Staff · Dart Browser

Mohit works on the inference and retrieval layer of the Dart Agent, where he is responsible for on-device model integration, the semantic index, and the benchmark harness the team uses to decide what ships. He writes up the measurements that changed our minds.