Skip to content
SocialTools

Twitter/X Thread Splitter

Split a long update into X/Twitter-sized posts so each tweet stays under the character limit, including emoji weighting.

X (Twitter) ToolsX, BlueskyReviewed 2026-09-11 by SocialTools editorial. How we test

1 post in thread

Post 1 · 0 chars

Runs in your browser. Nothing you enter is uploaded.

Overview

A long piece of writing does not become a thread by being chopped at every 280th character. The break points are the structure - each post has to end somewhere a reader can pause and begin somewhere that still makes sense - and a naive split produces posts that stop mid-clause and open mid-thought.

This splitter respects the boundaries already in your text. It packs whole paragraphs into posts while they fit, and only when a single paragraph is too long does it fall back to splitting on sentence endings. The character limit is adjustable between 100 and 500, defaulting to 280.

Each resulting post is shown with its own character count and its own copy button, because publishing a thread is a sequence of pastes and you want to be able to grab post four without reselecting the whole output.

Where a thread should break, and where this splitter breaks it

The splitter optimises for packing - it fits as much as it can into each post before starting a new one. That is the right default, because it minimises post count, and it is not the same as breaking where a writer would. A human breaks for emphasis: a short punchy post after a long one, a single sentence isolated because it is the point, a deliberate pause before the conclusion.

So read the output as a first pass. The places worth intervening are where a post has ended up at 279 characters and reads as crammed, and where a paragraph you meant as a unit has been split across two posts because it was three characters too long. Both are fixed by editing the source text - shorten a sentence, split a paragraph yourself - and re-running rather than by fighting the tool.

The other structural edit is the first post. Packing means post one is whatever fits, which is rarely the hook the thread needs. A thread lives or dies on whether post one earns the tap, so it is worth writing that post deliberately as a short standalone paragraph and letting the splitter handle everything after it.

  • Insert a blank line yourself wherever you want a guaranteed break.
  • Write post one as its own short paragraph so packing cannot dilute the hook.
  • Rewrite any post that lands within a few characters of the limit.
  • Keep one idea per post even when two would technically fit.

Numbering, hooks, and the last post

The splitter does not add numbering, and whether you should is a genuine trade. Explicit "1/9" markers tell a reader how much they are committing to and make a partially-loaded thread navigable; they also consume characters in every post and signal "long thread" to people who scroll past long threads. If you number, do it after splitting and check that the added characters have not pushed any post over.

The final post is the one most threads waste. It typically restates the thread, which nobody needs, when it should carry the single action you want - follow for more on this specific subject, read the full piece, reply with your own version. One ask, phrased concretely.

It is also worth checking the count before you commit. Nine posts is a thread; twenty-two posts is an article that should have been published as an article and linked. If the splitter returns a number in the twenties, the honest response is usually to cut the source text rather than to publish all of it.

The two-pass split: paragraphs first, then sentences

The text is first divided on runs of blank lines into paragraphs. The splitter then walks those paragraphs, accumulating them into a current post: if the next paragraph would fit alongside what is already there - joined by a blank line - it is added, and if not, the current post is closed and the paragraph starts a new one. Paragraph boundaries you wrote are therefore never broken as long as the paragraph itself fits.

When a single paragraph exceeds the limit on its own, the second pass takes over. That paragraph is matched into sentences by looking for runs of text ending in a full stop, question mark, or exclamation mark, and those sentences are packed by the same accumulate-or-close logic, joined by single spaces. The result is that an over-long paragraph breaks at sentence ends rather than mid-word.

Your limit setting is applied literally to string length, counting every character including spaces and newlines. It accepts values from 100 to 500, which covers X’s 280 for standard accounts and the longer allowances on other platforms, and the split re-runs on every keystroke so changing the limit immediately re-flows the whole thread.

A 620-character paragraph at a 280 limit

Input

One paragraph of 620 characters containing five sentences of roughly 120 characters each, with no blank lines anywhere in the source.

Output

Post 1 · 247 chars - sentences one and two, joined by a space.
Post 2 · 243 chars - sentences three and four.
Post 3 · 122 chars - sentence five alone.

Because there were no paragraph breaks to work with, the second pass did all the work and every break landed at a sentence end. Note post three: the packing algorithm left the last sentence stranded on its own at 122 characters, which happens to read well here but often does not. That short trailing post is the most reliable signal that the source text wants a manual edit - either extend it into a proper closing thought or fold it back by shortening an earlier sentence.

Limitations

  • Posts are numbered nowhere and counted nowhere in the output text. Adding "1/n" markers is manual and will push posts closer to the limit.
  • The character limit is applied to raw string length. Links are not weighted at 23 characters as X counts them, and emoji count by UTF-16 code unit rather than as one character.
  • Sentence detection relies on terminal punctuation, so abbreviations, decimals, and ellipses can create breaks in the wrong place.
  • A paragraph with no sentence-ending punctuation and no blank lines longer than the limit cannot be split cleanly at a sensible boundary.
  • Packing maximises how full each post is, which is not the same as breaking where the argument breaks.
  • Nothing is published or scheduled. The output is text to copy post by post.

When not to use this tool

  • If the text is already within one post’s limit, the character counter tells you that faster and without splitting anything.
  • If a link makes up much of the post, count it with a tool that applies X’s weighted length rather than trusting the raw character figure here.

How to use it

  1. 1

    Draft the full text with blank lines wherever you want a guaranteed break, and write the opening as its own short paragraph.

  2. 2

    Set the character limit to your platform’s cap, or 20 characters below it if you plan to add numbering.

  3. 3

    Read the post count first - if it is above roughly a dozen, cut the source rather than publishing all of it.

  4. 4

    Rewrite any post sitting within a few characters of the limit, then copy the posts one at a time in order as you publish.

Questions

Why does the character count here differ from what X shows?

X applies weighted counting: any URL counts as 23 characters regardless of its real length, and most emoji count as two. This splitter measures raw string length. A post with two long links will look over the limit here and fit comfortably on X, and a post packed with emoji can do the opposite.

What limit should I set for platforms other than X?

Match the platform’s per-post cap, and consider setting it slightly lower than the true maximum. Leaving 20 or 30 characters of headroom means you can add a numbering prefix or fix a typo afterwards without a post suddenly overflowing.

How do I force a break at a specific point?

Put a blank line there in the source text. Paragraph boundaries are honoured first, so a blank line guarantees the splitter will not carry text across that point - provided the paragraph on each side fits within the limit on its own.

Is a thread better than a single long post?

It depends on whether the ideas are sequential. A thread works when each post advances an argument and the reader has a reason to continue; it works badly when it is one idea spread thin, because every additional post is another chance to lose someone. If you cannot say what post four adds, it should not exist.