Summarize with built-in AI
Extracto
Distill lengthy articles, complex documents, or even lively chat conversations into concise and insightful summaries.
Resumen
Resumen Principal
El contenido presenta la introducción de la Summarizer API, una nueva capacidad para las extensiones web de Chrome, disponible a partir de la versión 138 estable. Esta API permite a los desarrolladores ofrecer a sus usuarios la habilidad de condensar textos extensos, como artículos o conversaciones, en resúmenes concisos y perspicaces. Alimentada por Gemini Nano y procesada directamente en el dispositivo del usuario, la API es altamente flexible, capaz de generar resúmenes en diferentes formatos (párrafos, listas de viñetas, markdown, texto plano) y tipos (key-points, tldr, teaser, headline), con longitudes configurables. Su implementación representa un paso significativo hacia la integración de inteligencia artificial generativa localmente en el navegador, abriendo un abanico de posibilidades para mejorar la productividad y la experiencia de consumo de contenido web. Es fundamental para los desarrolladores adherirse a la Política de Usos Prohibidos de IA Generativa de Google antes de su uso.
Elementos Clave
- Disponibilidad y Funcionalidad Central: La Summarizer API se integra en Chrome a partir de la versión 138 estable, permitiendo a los desarrolladores ofrecer resúmenes de contenido web. Soporta varios tipos de resumen como
key-points(puntos clave),tldr(demasiado largo; no leí),teaser(extracto atractivo) yheadline(titulares), además de diferentesformatoscomomarkdownoplain-text, ylongitudespersonalizables (corta, media, larga), lo que la hace altamente adaptable a diversas necesidades. - Tecnología Subyacente y Requisitos de Hardware: La API se basa en el modelo Gemini Nano, que se descarga y opera en el dispositivo del usuario, no en la nube. Esto requiere condiciones específicas de hardware para funcionar en Chrome de escritorio (Windows 10/11, macOS 13+, Linux), incluyendo al menos 22 GB de espacio libre, una GPU con más de 4 GB de VRAM y una conexión de red ilimitada. Actualmente, no es compatible con dispositivos móviles (Android, iOS) ni ChromeOS.
- Flujo de Trabajo para Desarrolladores y Gestión del Modelo: Los desarrolladores deben primero detectar la compatibilidad de la API (
'Summarizer' in self). La disponibilidad del modelo Gemini Nano se verifica a través deSummarizer.availability(), que puede indicar estados como "downloadable", "downloading" o "available". Para activar la descarga del modelo y crear el objeto del resumidor, se utilizaSummarizer.create(), con la opción de monitorizar el progreso de la descarga para informar al usuario sobre el tiempo estimado. - Configuración Detallada del Resumidor: La función
create()permite configurar un objeto resumidor con parámetros comosharedContext(contexto adicional),type,formatylength. Una vez configurados, estos parámetros no se pueden cambiar, lo que requiere crear un nuevo objeto resumidor si se necesitan modificaciones. La longitud del resumen varía según el tipo; por ejemplo, un resumenshort key-pointsen Chrome consiste en tres viñetas, mientras que unshort summaryes una sola oración.
Análisis e Implicaciones
Esta API tiene profundas implicaciones para la experiencia del usuario y el desarrollo web, ya que permite una interacción más eficiente con el contenido y democratiza el acceso a funcionalidades de IA directamente en el navegador, priorizando la privacidad y el rendimiento al procesar localmente.
Contexto Adicional
Esta iniciativa se alinea con la estrategia de Google de integrar capacidades de IA directamente en sus productos y servicios, brindando herramientas avanzadas para la manipulación y el análisis de texto en el ecosistema web. Los usuarios pueden verificar el estado del modelo Gemini Nano visitando chrome://on-device-internals.
Contenido
Summarize with built-in AI

Published: November 11, 2024, Last updated: May 20, 2025
| Explainer | Web | Extensions | Chrome Status | Intent |
|---|---|---|---|---|
| MDN | View | Intent to Ship |
You can offer your users the ability to distill lengthy articles, complex documents, or even lively chat conversations into concise and insightful summaries.
The Summarizer API can be used to generate different types of summaries in varied lengths and formats, such as sentences, paragraphs, bullet point lists, and more. We believe this API is useful in the following scenarios:
- Summarizing the key points of an article or a chat conversation.
- Suggesting titles and headings for articles.
- Creating a concise and informative summary of a lengthy text.
- Generating a teaser for a book based on a book review.
Get started
The Summarizer API is available from Chrome 138 stable.
Before you use this API, acknowledge Google's Generative AI Prohibited Uses Policy.
Run feature detection to see if the browser supports the Summarizer API.
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
Review the hardware requirements
The following requirements exist for developers and the users who operate features using these APIs in Chrome. Other browsers may have different operating requirements.
The Language Detector and Translator APIs work in Chrome on desktop. These APIs do not work on mobile devices. The Prompt API, Summarizer API, Writer API, and Rewriter API work in Chrome when the following conditions are met:
- Operating system: Windows 10 or 11; macOS 13+ (Ventura and onwards); or Linux. Chrome for Android, iOS, and ChromeOS are not yet supported by the APIs which use Gemini Nano.
- Storage: At least 22 GB of free space on the volume that contains your Chrome profile.
- GPU: Strictly more than 4 GB of VRAM.
- Network: Unlimited data or an unmetered connection.
Gemini Nano's exact size may vary as the browser updates the model. To determine the current size, visit chrome://on-device-internals and go to
Model status. Open the listed File path to determine the model size.
Model download
The Summarizer API uses a model trained to generate high-quality summaries. The API is built into Chrome, and Gemini Nano is the model downloaded the first time a website uses this API.
To determine if the model is ready to use, call the asynchronous
Summarizer.availability() function. It returns a promise with the
following values.
"unavailable"means that the implementation does not support the requested options."downloadable"means that the implementation supports the requested options, but first, the browser has to download something, such as a model (in Chrome's case, Gemini Nano) or fine-tuning for the model."downloading"means that the implementation supports the requested options, but it has to finish an ongoing download before it can proceed."available"means that the implementation supports the requested options and the summarizer can proceed.
To trigger the model download and create the summarizer, call the asynchronous
Summarizer.create() function. If the response to availability() was
downloadable or downloading, it's best practice to listen for download
progress. This way, you can inform the user and indicate the download
may take time to complete before summarization can occur.
const summarizer = await Summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
API functions
The create() function lets you configure a new summarizer object to your
needs. It takes an optional options object with the following parameters:
sharedContext: Additional shared context that can help the summarizer.type: The type of the summarization, with the allowed valueskey-points(default),tldr,teaser, andheadline. See the following table for details.format: The format of the summarization, with the allowed valuesmarkdown(default) andplain-text.length: The length of the summarization, with the allowed valuesshort,medium(default), andlong. The meanings of these lengths vary depending on thetyperequested. For example, in Chrome's implementation, a short key-points summary consists of three bullet points, and a short summary is one sentence.
Once set, the parameters can't be changed. Create a new summarizer object if you need to make modifications to the parameters.
The following table demonstrates the different types of summaries and their corresponding lengths. The lengths represent the maximum possible value, as sometimes, the results can be shorter.
| Type | Meaning | Length | ||||||
|---|---|---|---|---|---|---|---|---|
"tldr" |
Summary should be short and to the point, providing a quick overview of the input, suitable for a busy reader. |
|
||||||
"teaser" |
Summary should focus on the most interesting or intriguing parts of the input, designed to draw the reader in to read more. |
|
||||||
"key-points" |
Summary should extract the most important points from the input, presented as a bulleted list. |
|
||||||
"headline" |
Summary should effectively contain the main point of the input in a single sentence, in the format of an article headline. |
|
||||||
The following example demonstrates how to initialize the summarizer.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
};
const availability = await Summarizer.availability();
if (availability === 'unavailable') {
// The Summarizer API isn't usable.
return;
}
const summarizer = await Summarizer.create(options);
Run the summarizer
There are two ways to run the summarizer: streaming and batch (non-streaming).
Batch summarization
With batch summarization, the model processes the input as a whole and then produces the output.
To get a batch summary, call the summarize() function. The first
argument is the text that you want to summarize. The second, optional argument
is an object with a context field. This field lets you add background details
that might improve the summarization.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Streaming summarization
Streaming summarization offers results in real-time.
The output updates continuously as the input is added and adjusted. To get a
streaming summary, call summarizeStreaming() instead of summarize().
const longText = document.querySelector('article').innerHTML;
const stream = summarizer.summarizeStreaming(longText, {
context: 'This article is intended for junior developers.',
});
for await (const chunk of stream) {
console.log(chunk);
}
Demo
You can try the Summarizer API in the Summarizer API Playground.
Standardization effort
We're working to standardize the Summarizer API, to ensure cross-browser compatibility.
Our API proposal received community support and has moved to the W3C Web Incubator Community Group for further discussion. The Chrome team requested feedback from the W3C Technical Architecture Group, and asked Mozilla and WebKit for their standards positions.
Participate in the standards effort by joining the Web Incubator Community Group.
We want to see what you're building with the Summarizer API. Share your websites and web applications with us on X, YouTube, and LinkedIn.
For feedback on Chrome's implementation, file a bug report or a feature request.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-05-20 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-05-20 UTC."],[],[]]
Fuente: Chrome for Developers