Text Splitter
Split a long text or UTF-8 file into numbered chunks by character count, byte budget, word count, whole lines or a delimiter. Choose a size and optional overlap, then select any chunk to copy or save as TXT. Words are whitespace-separated; they are not model tokens. With overlap off, joining the chunks in order restores the text shown in the input. Character and byte modes keep complete Unicode graphemes, including emoji; an explicit delimiter cuts exactly at the marker you choose.
The quick brown fox jumps over the lazy dog. Every chunk here ends on a character boundary, so n...
13 chunks of up to 4,000 characters, no overlap. The last one is 120 characters.
Characters as a reader counts them: an emoji is one, an accented letter is one. Copy and Save work on chunk-01.txt, the chunk selected in the list.
- 13 chunks, the last is 120 characters
- 26 bytes in the first chunk, not 40: the emoji stays whole
- 13 chunks, each repeating the previous 200 characters
Up to 2,000,000 characters in one pass and up to 2,000 chunks, read and split here in your browser with nothing uploaded and no account. A delimiter may be typed with the usual escapes, so a blank line is \n\n and a tab is \t. The mode, the size, the overlap, the delimiter and the draft are kept in this browser alone, drafts up to 200,000 characters, and the Start over button above the tool forgets them.
Common questions
- How do I split a text file into smaller files?
- Open the file with the Open file button or drop it on the panel, choose what to count, type a chunk size, and the pieces are listed in the chunks pane as you go. Each piece is a file in waiting: chunk-01.txt, chunk-02.txt and so on, numbered to the width of the count so they stay in order in any file list, and named after your file once you open one. Pick a piece in the list and Copy puts it on the clipboard or Save writes it out as a .txt file. There is no zip download, so the files come out one at a time, which is the trade for never uploading anything.
- Will splitting break my emoji or accented characters?
- Character, byte and word modes group complete Unicode graphemes, so a family emoji or a letter with its combining accent stays whole. Byte chunks stop short when the next complete grapheme will not fit. Line mode keeps CRLF pairs together. Delimiter mode follows your literal marker exactly, so a delimiter placed inside a grapheme can split it.
- What is the overlap for?
- It repeats the end of each chunk at the start of the next one, which is what you want when the chunks are going into something that reads them separately: a sentence cut in two is then readable in both pieces, and a retrieval index does not lose the join. On the sample here, 4,000 characters with an overlap of 200 gives 13 chunks, each one repeating the previous 200 characters. The overlap has to be smaller than the chunk, because an overlap as large as the chunk would never reach the end of the text, and the tool refuses it and says so rather than looping. With the overlap off, and only then, the chunks rejoin into the original.
- Can I split by bytes instead of characters?
- Yes. Byte mode counts the UTF-8 bytes a chunk encodes to, which is what matters when the limit comes from a field size, a protocol or an upload boundary. A chunk never exceeds the byte budget you set: it takes whole characters while they fit and stops, so a chunk can come back a few bytes short. If one single character needs more bytes than the whole chunk, a 25 byte family emoji in an 8 byte chunk for example, the tool says so and names the size to raise it to, rather than cutting the character up to make the number work.
- Do the chunks really join back into the original?
- Yes, in all five modes when overlap is zero. Lines retain their original endings, words retain spacing and punctuation, and delimiters stay at the end of the pieces they close. Concatenate the chunk text directly, without adding separators. File import validates UTF-8 and preserves a leading BOM; it refuses malformed byte sequences instead of replacing them.
- How do I split at a blank line or at my own marker?
- Choose Delimiter and type the marker, for example three dashes for a screenplay or a chapter break. The field takes the usual escapes, so a blank line is \n\n, a tab is \t and a carriage return is \r, and a backslash followed by anything else is left exactly as you typed it. Pieces per chunk decides how many of the resulting pieces go into each file, so 1 gives one file per section and 5 groups five sections together. If the marker does not appear in the text at all, the page says so instead of quietly handing back one chunk.
- How much text can it split at once?
- Up to 2,000,000 grapheme characters and 2,000 chunks in one pass. Larger requests are refused without truncation. Files must contain valid UTF-8 text; convert another encoding in a text editor first. Each saved file is UTF-8 text. Plain splitting does not guarantee that chunks of CSV, JSON, Markdown or subtitles are independently valid documents.
- Is my text uploaded anywhere?
- No. The splitting happens in your own browser, which is the point when the text is a client call transcript or an unpublished manuscript. There is no account, no sign-up and no upload, and the page makes no network request of its own. Your draft is remembered on this device alone so it is still there when you come back, up to 200,000 characters of it, a longer paste still splits in full but is not stored, and the Start over button above the tool forgets the draft along with the mode, the size, the overlap and the delimiter.
- How do I split text by word count?
- Choose Words, enter Words per chunk and set overlap to zero for separate chunks. A word is a run of non-whitespace graphemes; adjacent punctuation stays attached, and the original spaces and line endings are retained. Text without separating whitespace remains one word. This is not linguistic tokenisation or a model tokenizer.
- Can I split a text file by lines?
- Choose Lines and enter how many existing lines belong in each chunk. Open a UTF-8 file or paste text. CRLF, LF and CR endings are kept with their lines; the selected chunk can be copied or saved. The line mode does not wrap a long sentence into new lines or understand quoted multiline CSV records.
- Is this a ChatGPT, Discord or Twitter text splitter?
- It prepares chunks for manual copying with a size you choose. It does not send messages or enforce a service’s live limits. Character mode counts graphemes, which can differ from a service’s UTF-16, weighted-character or token count. Check the destination’s limit and consider the related Token Counter when preparing model input.
- Does it implement recursive or semantic splitting?
- No. The modes count characters, bytes, words, existing lines or literal delimiter pieces. They do not choose paragraph or sentence boundaries by meaning, run embeddings, implement LangChain or LlamaIndex algorithms, or parse HTML and Markdown structure.
- Can it split text into spreadsheet columns or an exact number of equal parts?
- It creates text chunks, not a table, spreadsheet formula or column layout. It accepts a chunk size rather than a requested number of equal parts. Text-to-columns formulas, document layout and equal-part balancing are separate workflows.
- Can I use it on Windows or Mac?
- Use a browser with the Open file button and save individual TXT chunks. There is no native installer, command-line program, ZIP download or multi-file merger.
Splitting is exact and reversible: join the chunks back in order with the overlap off and you get the original text back character for character, in every mode. Where this tool picks the boundary, by characters, by bytes or by lines or by words, the cut falls on a Unicode grapheme cluster edge (UAX#29), so it never lands inside an emoji, a combining mark or a surrogate pair, and a chunk stops short of a byte budget rather than breaking a character; a cut at a delimiter falls exactly where you put it, and an overlap must be smaller than the chunk or it is refused. The text is read and split in your browser.