---
title: Summarize
description: Condense long text on-device
---

Condense long text into a short summary with a model that runs in your browser, so the text never leaves your device.

## What it does

Summarize runs the **Text** through a summarization model such as *DistilBART CNN (summarize)*, aiming for the size set by **Length**. It handles long text for you: text over about 2,500 characters is split into pieces at sentence ends, each piece is summarized in turn, and if the joined summaries are still long they are summarized once more.

There is no cost per run and no API key.

## When to use it

* Get the gist of an article, a long email thread or meeting notes before you store or forward it.
* Shorten scraped page text before passing it to another step.

To summarize with a chat model and your own instructions, use [Summarization](/nodes/builtin/ai/aiagents/summarizationchainnode/) instead.

## Inputs and settings

Lengths count tokens, roughly one per word in English. Use **Min tokens (advanced)** and **Max tokens (advanced)** only when the presets do not fit; if the minimum is larger than the maximum, the maximum wins. On very long text the length applies to each piece, then to the final pass.

## Outputs

Each output item has these fields:

```json title="Shape of an output item"
{
  "summary": "…",
  "words": 0
}
```

`summary` is the summary text. Use it as `{{ $input.summary }}` in the next node.

## Dependencies and credentials

None. This node needs no connection and has no slots for other nodes.

The **Model** picker lists your installed summarization models first, then ones that download on first use. Manage them on the [Local AI](/app/local-models/) page.

## Example workflow

Get a short summary of the page you are reading:

1. [Get All Text](/nodes/extension/getalltext/) with **Output field name** `pageText` and **Visible text only** on.
2. Summarize with **Text** `{{ $input.pageText }}`, **Length** **Short** and **Model** *DistilBART CNN (summarize)*.
3. [Show Notification](/nodes/extension/shownotification/) with **Title** `Summary` and **Message** `{{ $input.summary }}`.

## Common issues

* **"Choose a summarization model."** **Model** is empty. Pick one.
* **"Provide some text to summarize."** **Text** is empty after expressions run. Check the field name in your expression.
* **It takes a long time on very long text.** Each piece is a separate model run, one after another. Pass only the part you need, for example with a **DOM Selector** on Get All Text.
* **The summary is too short or too long.** Change **Length**, or set **Min tokens (advanced)** and **Max tokens (advanced)**.

## Related nodes

* [Summarization](/nodes/builtin/ai/aiagents/summarizationchainnode/): summarize with a chat model.
* [Translate](/nodes/builtin/ai/localai/translate/): translate the summary on-device.
* [Classify Text](/nodes/builtin/ai/localai/classify-text/): sort the text into your own labels.
* [Get All Text](/nodes/extension/getalltext/): read the text of the current page.