← Chrome 148 reference

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.

Developer trial / behind a flag This extension to the Summarizer API is in developer trial in Chrome 148. The option name and enum values may change before general availability. Enable via chrome://flags/#enable-experimental-web-platform-features.

at a glance

Status in 148In developer trial (behind a flag)
Flagchrome://flags/#enable-experimental-web-platform-features
Standards positionFirefox: No signal  ·  Safari: No signal
SpecWriting Assistance APIs §Summarizer
Blink componentBlink>AI
ChromeStatus6309243756085248 — 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.

Source: chromestatus summary + Writing Assistance APIs spec.

the option

OptionValueMeaning
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.
Source: Writing Assistance APIs §Summarizer. Enum values paraphrased.

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

Chrome148 — developer trial (flag required)
EdgeTracking Chromium
FirefoxNo signal
SafariNo signal
Source: chromestatus browser views, May 2026.

see also