v148 · web ai · developer trial
Summarizer API performance preference
Extends the built-in Summarizer API with a performancePreference option that lets developers trade quality for speed and resource usage. On low-end or battery-constrained devices the browser can route to a smaller, faster model; on high-end devices the larger model stays available.
chrome://flags/#enable-experimental-web-platform-features.
at a glance
| Status in 148 | In developer trial (behind a flag) |
|---|---|
| Flag | chrome://flags/#enable-experimental-web-platform-features |
| Standards position | Firefox: No signal · Safari: No signal |
| Spec | Writing Assistance APIs §Summarizer |
| Blink component | Blink>AI |
| ChromeStatus | 6309243756085248 — Summarizer API performance preference |
why it exists
The base Summarizer API relies on large on-device language models, which deliver high quality summaries but at the cost of latency, memory, and battery. Some devices (older hardware, battery-saver mode) cannot run the large model within acceptable limits. The performancePreference option gives developers a hint that the browser can use to select a smaller, faster model when appropriate — widening device compatibility without developers needing to detect hardware themselves.
the option
The performancePreference option configures the balance between model execution speed and output quality on the Summarizer API:
| Option | Value | Meaning |
|---|---|---|
performancePreference | "quality" | Prefer the best available model. May be slower or unavailable on low-end devices. |
"balanced" | Browser chooses a model that balances quality and speed (default). | |
"speed" | Prefer a faster, lighter model. Quality may be lower. |
preference: "auto"/"speed"/"capability".
The sources disagree and the page reports both: the options table above lists performancePreference with "quality"/"balanced"/"speed" as an unverified claim that Chrome 148 developer-trial builds accepted them — these values are unverified against any surviving public source (no spec revision back to Jan 2025, no chromestatus record, no MDN entry carries them; checked 2026-10-07), while the current Writing Assistance APIs draft defines the member as preference with "auto"/"speed"/"capability" (§Summarizer, marked EXPERIMENTAL, fetched 2026-10-07; the rename is under discussion in issue #96, and the chromestatus record for this feature describes the preference proposal). Where they disagree, test in the browser and expect the implementation to converge on the spec over time.
example
Configure performance preference to trade latency for output quality during summarizer creation:
// Request a fast model for showing a live summary as the user types.
// "speed" is one of the unverified historical performancePreference values (see the
// disagreement note); the current draft takes preference: "auto"/"speed"/"capability".
const summarizer = await Summarizer.create({
performancePreference: "speed",
type: "tl;dr",
length: "short",
});
inputArea.addEventListener("input", async () => {
const text = inputArea.value;
if (text.length < 100) return;
preview.textContent = await summarizer.summarize(text);
});
Quality-optimised summarizer for final output
// Use the best available model for the final one-shot summary.
// "quality" is an unverified historical performancePreference value (see the
// disagreement note); test against your build's actual accepted enum.
const summarizer = await Summarizer.create({
performancePreference: "quality",
type: "key-points",
length: "medium",
});
submitButton.addEventListener("click", async () => {
const text = document.getElementById("article").textContent;
const summary = await summarizer.summarize(text);
sendToServer(summary);
});
browser support
| Chrome | 148 — developer trial (flag required) |
|---|---|
| Edge | Tracking Chromium |
| Firefox | No signal |
| Safari | No signal |
see also
- Writing Assistance APIs spec
- webmachinelearning/writing-assistance-apis repo
- chromestatus: Summarizer API (base feature)
- chromestatus: Summarizer API performance preference
- chromestatus: API record 6309243756085248
- chromestatus: milestone=148 listing
- Chromium Issue 486970516
- chrome-platform-showcase: demos