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
| 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. |
example
Speed-optimised summarizer for live previews
// Request a fast model for showing a live summary as the user types
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
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 |