Built on advanced on-device AI and hardware acceleration to deliver professional-grade performance with uncompromising privacy.On-device AI — professional-grade, fully private.
Text Splitting Tool
Split text by delimiter, size or count — nothing uploaded.
- Runs on your device
- Never cuts a word in half
- One file free · 100 with Pro
Drop a text file here
Up to 10.0 MB · .txt · .md · .markdown · .csv · .tsv
Turn this off to treat every backslash as itself.
Type the exact text to split on. Escape sequences: \n newline, \t tab, \r return, \s any whitespace.
Applied to every part after the split.
Escape sequences work here too: \n is a line break, \t a tab. Leave it empty to join with nothing.
Adds text around every part — useful when pasting into a model one part at a time.
Free: 10.0 MB of text, 1 file at a time, 50,000 parts.
What this text splitter does
It takes one block of text and turns it into a set of parts you can use separately. Paste it, or open a .txt, .csv, .log, .md, .json or .srt file — it all runs on your device, not our servers, and the file is read, split and written back where it already is.
Split text into parts by delimiter, length, or line count, then take the parts one at a time. Each part gets its own card showing its position, its length, a copy button and a download button, so you can lift the one you actually wanted instead of hunting for it inside a wall of divider lines. The old version of this page put the whole result into a single read-only box separated by --- markers; if a part happened to contain --- itself, there was no way to tell where it ended.
- Seven modes — delimiter, regular expression, lines, words, characters, fixed-size chunks, and a set number of equal parts.
- Five output formats — joined with your own separator, one per line, numbered, JSON array, or a CSV row.
- Per-part delivery — copy or download a single part, or take every part as its own file in one archive.
- Live statistics — how many parts, and the longest, shortest and average length — the numbers that tell you a size is wrong.
- Nothing uploaded — the split runs on your device and no file data is sent over the network.
The seven split modes
Three of the modes split on something you type, three split on the text's own structure, and one divides the text into a number of parts you choose. Picking the right one is usually the difference between one setting and a lot of fiddling.
| Mode | Cuts on | Reach for it when |
|---|---|---|
| By delimiter | a literal string you type | the text uses a separator — a comma, a pipe, a tab, or a word like END |
| By regular expression | a pattern, with flags | the separator varies: any digit, either of two symbols, a repeated run |
| By lines | every line break | each row is a record — a log, a list, an export |
| By words | runs of whitespace | you want the vocabulary, not the layout |
| By characters | every character | you need each letter, digit or emoji on its own |
| Into chunks | a size you set | something downstream has a length limit |
| Into equal parts | a count you set | you need exactly four files, or ten, and the size can follow |
Splitting on something you type
Delimiter mode is a plain substring search, so what you type is what it looks for — no pattern syntax to escape, and a full stop stays a full stop. Regular expression mode is the opposite: everything is a pattern, flags are yours to set, and capture groups can be kept as parts of their own rather than discarded.
Splitting on the text's own structure
Lines mode treats a Windows line ending as one break rather than two, so parts do not come back with an invisible carriage return stuck on the end. Words mode returns the runs of non-whitespace, so there are no empty parts to clean up. Characters mode works in whole characters, so an emoji stays one part instead of arriving as two broken halves.
Chunking without cutting a word in half
Every splitter can cut text every N characters. The problem is what that does to the text: the cut lands wherever the arithmetic puts it, usually in the middle of a word, and each part arrives as a fragment. This tool lets you say where a cut is allowed to land.
- Exact — cut at the size you set, wherever it falls. Use it when the parts are data rather than prose, and when they have to reassemble byte for byte.
- Word — back the cut up to the nearest space, so every part contains whole words. A single word longer than the limit is still cut, because the alternative is ignoring the limit.
- Sentence — back it up to the nearest full stop, question mark or exclamation mark. Each part reads as finished prose; if there is no sentence end in range it falls back to a word boundary, then to an exact cut.
The size you set still holds
Word and sentence cuts stay inside the size you asked for — they only ever move the cut earlier, never later — so a 2,000-character limit is still a 2,000-character limit. The whitespace at the cut is consumed the way a delimiter is, so no part starts with the space left over from the one before it.
Splitting for a model's context limit
This is the reason most people arrive at a text splitter now. Set the unit to characters, the size to whatever the model accepts, and the boundary to sentence, and each part ends on a complete thought instead of half a word. With Pro you can also switch on part headers: every part is wrapped in [START PART n/N] and [END PART n/N] markers with a short priming line at the top, so the model waits for the whole set before it answers. The tools built specifically for this hard-cut at the character count and do not offer a boundary at all.
Delimiters, escape sequences and patterns
A delimiter box is a text input, so the characters people most need — tab, newline, carriage return — are the exact ones they cannot type into it. Escape sequences are the way in, and they work anywhere in the box rather than only when the box holds nothing else.
| Type | Means | Note |
|---|---|---|
| \n | a newline | combine it: ,\n splits on a comma followed by a line break |
| \t | a tab | the separator in a .tsv export |
| \r | a carriage return | rarely needed on its own — By lines already handles \r\n |
| \s | any whitespace character | a set rather than a character, so the whole delimiter is matched as a pattern |
| \xHH | a byte by hex code | \x1f for a unit separator |
| \uXXXX | any character by code point | \u00b7 for a middle dot |
An escape the tool does not recognise is kept exactly as typed, backslash included, so a Windows path like C:\Users\me is split on literally rather than quietly turned into C:Usersme. Turn off Read escape sequences to treat every backslash as itself.
When to reach for a regular expression
Use a pattern when the separator varies rather than repeats: [;=] for a config line that uses both, \d+ to split around numbers, \s{2,} to split on runs of two or more spaces but not single ones. Flags are yours — i for case-insensitive, m for multiline, u for full Unicode. Keep capture groups turns the matched separators into parts of their own, so nothing from the original text is thrown away.
An empty delimiter is not a split
Clearing the delimiter box used to split the text into individual characters, because that is what an empty string does to a string split. On a large paste that is millions of parts built at once, one keystroke away, and the page would stop responding. An empty box is now refused and points at By characters, which is the mode that actually means that.
Output formats and how parts are delivered
The split decides which parts exist; the output format decides what they look like when you take them. Every format below is available on the free plan.
| Format | Looks like | Good for |
|---|---|---|
| Joined | part, separator, part, separator… | reading the result, with a separator you choose — including an empty one |
| One per line | one part on each line | pasting into a spreadsheet column or a shell loop |
| Numbered | 1. part | review, QA and anything you have to talk about by position |
| JSON array | ["part", "part"] | a script or an API payload — quotes and newlines are escaped correctly |
| CSV row | part,part,"part, with comma" | one row of a spreadsheet; fields are quoted only when they need to be |
Taking one part, or all of them
Each part has its own copy and download button, so you can take the third one without touching the rest. Copy all and Download put the whole set together in the format you picked. With Pro, Download parts as ZIP writes every part as its own numbered file inside one archive — the delivery no comparable tool offers — and a Pro batch of several files comes back as one archive with a file per document.
Reading the statistics
Five numbers sit above the parts, and they are the fastest way to tell that a setting is wrong before you read a single part.
- Parts — how many the split produced. A number far larger than you expected usually means the delimiter appears inside the data as well as between it.
- Longest and shortest — the spread. A shortest of 0 means empty parts; a longest equal to the whole input means the delimiter never matched.
- Average — the useful sanity check for chunking — with a word or sentence boundary it sits a little under the size you set, which is the boundary doing its job.
- Requested — shown only when equal-part mode could not produce the number you asked for, because a word or sentence boundary ran out of text first. Fewer real parts beats padding the set with empty ones.
Three mistakes the numbers catch
A comma delimiter on a CSV with quoted fields will over-split, and the part count says so immediately — that is a job for a CSV-aware tool, not a text splitter. A shortest of 0 with Keep empty parts still on means adjacent delimiters. And a chunk size larger than the whole document produces exactly one part; the size slider now refuses to offer sizes the text cannot use, so that one is difficult to reach at all.
When to use it, and when not to
A text splitter is the right tool when the boundary is in the text. When the boundary is in a format, use a tool that understands that format.
Ideal use cases
- Length limits — cut a long document into parts a model, a message field or an import job will accept, without breaking words.
- Lists into records — turn a comma- or pipe-separated list into one part per entry, then take them one at a time.
- Logs and exports — split by lines, then hand the parts to the deduplicator or the sorter.
- Fixed batches — divide a file into exactly ten parts for ten people, and let the size follow.
- Subtitles and transcripts — open a .srt or .vtt and split on blank lines or timecodes with a pattern.
When not to use it
- Quoted CSV — if a comma can appear inside a field, a text split will cut it. Use the CSV tools, which understand quoting.
- Structured documents — Word, PDF, Excel and PowerPoint files are not text — convert them first, and the tool will point you at the right converter if you drop one here.
- Anything a database defines — if the record boundary is a schema rather than a character, split it where the schema is.
Limits, privacy and compatibility
The free plan handles 10 MB of text and up to 50,000 parts from one file at a time. Both numbers are set where the heaviest setting the tool offers still finishes comfortably on a mid-range phone, so a first attempt succeeds rather than failing half way.
- Free — 10 MB, one file at a time, 50,000 parts. Every mode, every output format, every boundary, per-part copy and download.
- Pro — no imposed size or part ceiling — up to what your device can handle — plus up to 100 files at once, the per-part archive, the batch archive, per-part prefixes and suffixes, and the part headers.
- Privacy — your text is never uploaded. It is read, split and written back on your device, and no file data is sent over the network.
- Offline — once the page has loaded it keeps working without a connection.
- Formats — plain-text files only — .txt, .md, .markdown, .csv, .tsv, .log, .json, .ndjson, .jsonl, .xml, .yaml, .yml, .sql, .env, .ini, .srt and .vtt.
Ten megabytes splits in well under a tenth of a second on a mid-range laptop, and the parts are counted rather than copied — so a document that produces ten million parts still opens instantly.
Frequently asked questions
How does the text splitter work?
Paste your text or open a file, pick a split mode, and press Split. Delimiter mode cuts wherever a string you type appears, Lines mode cuts on every line break, Chunks caps how big each part may be, and Equal parts fixes how many parts there are. The result is shown as separate parts, each with its own length, copy button and download button, and everything happens on your device.
What split modes are available?
Seven. By delimiter splits on a literal string. By regular expression splits on a pattern. By lines makes each row its own part. By words and By characters break the text down to its smallest units. Into chunks caps the size of each part in characters, words or lines. Into equal parts divides the text into a number of parts you choose.
Can I split text without cutting a word in half?
Yes, and this is the setting most chunking tools do not have. In chunk and equal-part modes, the boundary control offers Exact, Word and Sentence. Exact cuts at the size you set, wherever that lands. Word backs the cut up to the nearest space so every part contains whole words. Sentence backs it up to the nearest full stop, question mark or exclamation mark, so each part reads as complete prose. Both stay within the size you asked for; only a single word longer than the limit is ever cut.
How do I split text for ChatGPT or another model with a context limit?
Use Into chunks, set the unit to characters and the size to whatever the model accepts, then set the boundary to Sentence so no part ends mid-thought. With Pro you can also switch on part headers, which wraps each part in [START PART n/N] and [END PART n/N] markers and adds a short priming line at the top, so the model knows more is coming before it answers.
Can I use a tab, a newline or a regular expression as the delimiter?
Yes. The delimiter box understands escape sequences: \n for a newline, \t for a tab, \r for a carriage return, \s for any whitespace character, and \xHH or \uXXXX for anything else. An unrecognised escape is kept exactly as typed, so a Windows path like C:\Users survives. Switch to By regular expression for full patterns, with flags, and an option to keep capture groups as parts of their own.
How is the output formatted, and can I export JSON?
Five ways. Joined puts the parts in one block with a separator you choose — including an empty one, which joins them with nothing at all. One per line, Numbered, JSON array and CSV row cover the rest. Every format is available on the free plan. You can copy or download the whole set, take any single part on its own, or with Pro download every part as its own file inside one archive.
Why am I getting empty parts, and is my text private?
Empty parts appear when two delimiters sit next to each other, or when the text begins or ends with one. Turn off Keep empty parts to drop them, and turn on Trim each part to strip surrounding whitespace first. Your text is never uploaded: the file is read, split and written back on your device, and nothing is sent anywhere.
Is there a size limit, and does it work offline and on mobile?
The free plan handles 10 MB of text and up to 50,000 parts from one file at a time, which covers essentially every real document. Pro removes both ceilings, adds up to 100 files at once, and adds the archive downloads. It works on phones, tablets and desktops, and once the page has loaded you can keep splitting without an internet connection.
from 170 ratings
Rate this tool
Tap a star — it takes a second