← 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

The performancePreference option configures the balance between model execution speed and output quality on the Summarizer API:

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; Issue #96. Enum values are an unverified historical claim: no surviving public source carries them (see the disagreement note below); the current draft enum is 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

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

see also