---
title: Character Text Splitter
description: Breaks down text into smaller parts.
---

Tell the Indexer how to cut long text into chunks at one separator of your choice.

## What it does

Character Text Splitter is not a step on its own: it has no output port and never runs by itself. You plug it into the **Text Splitter** slot of the [Indexer](/nodes/builtin/ai/aiagents/indexernode/), which uses it to cut its **Input** into chunks before saving them to a knowledge base.

It cuts the text wherever **Separator** appears, then joins the pieces back up into chunks of at most about **Chunk Size** characters, repeating **Chunk Overlap** characters between neighbouring chunks. When **Separator** is empty, it splits at spaces, so chunks break between words.

A single piece longer than **Chunk Size** (no separator inside it) is kept whole, as a chunk larger than the limit.

## When to use it

* Your text has a clear marker between entries, such as `---` between notes or `;` between records.
* You want simple, predictable chunks of a fixed size, cut between words.
* For prose, Markdown or code, [Recursive Character Text Splitter](/nodes/builtin/ai/aidependencies/textsplitter/recursivecharactertextsplitter/) usually gives better chunks.

## Inputs and settings

* **Chunk Size** and **Chunk Overlap** count characters. Keep the overlap smaller than the chunk size. A value of `0` in either field is replaced by its default (1000 and 200).
* **Separator** is matched as plain text, not as a pattern. It is removed from the chunks.

## Outputs

This node has no output port. It plugs into a slot on another node instead of passing items along.

* **Text Splitter** slot of [Indexer](/nodes/builtin/ai/aiagents/indexernode/)

The chunks are counted in the Indexer's output (`chunks`) and stored in the knowledge base connected to it.

## Dependencies and credentials

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

## Example workflow

1. [Local File Read](/nodes/builtin/datatransformation/localfileread/) with **Read as** `Text` and **Accepted file types** `.txt` opens a text file of meeting notes separated by `---`.
2. [Indexer](/nodes/builtin/ai/aiagents/indexernode/) with **Input** `{{ $input.content }}` and **Source name** `{{ $input.name }}`. Connect [Local Knowledge](/nodes/builtin/ai/aidependencies/vectorstore/localknowledge/) to its **Knowledge** slot.
3. Character Text Splitter connected to the Indexer's **Text Splitter** slot, with **Separator** `---`, **Chunk Size** `1500` and **Chunk Overlap** `1`.

Each note becomes its own chunk unless notes are short enough to be joined.

## Common issues

* **"Cannot have chunkOverlap >= chunkSize".** **Chunk Overlap** is as large as **Chunk Size** or larger. Lower the overlap.
* **Chunks are much bigger than Chunk Size.** The separator does not appear in the text, so nothing was cut. Check **Separator**, or leave it empty to split at spaces.
* **You cannot turn overlap off.** `0` falls back to 200. Use `1` for almost no overlap.

## Related nodes

* [Indexer](/nodes/builtin/ai/aiagents/indexernode/): the node this splitter plugs into.
* [Recursive Character Text Splitter](/nodes/builtin/ai/aidependencies/textsplitter/recursivecharactertextsplitter/): tries several separators, better for prose.
* [Local Knowledge](/nodes/builtin/ai/aidependencies/vectorstore/localknowledge/): the knowledge base the chunks go to.