0

Tweet Thread Splitter

Paste a long post and split it into a real X/Twitter thread using the actual weighted character-counting rules — every URL counts as a fixed 23 characters and astral-plane emoji count correctly — with smart paragraph/sentence/word boundaries and thread numbering that reserves its own space.

This tool splits against the standard 280-character limit that applies to everyone's timeline by default. X Premium/Blue subscribers can post much longer "long-form" posts (up to roughly 25,000 characters) that don't need splitting at all — but a thread built with the standard limit is readable by every account, so it stays the honest default here. Switch to a custom limit above if you specifically want to target a different cap.

Buy Me a Coffee at ko-fi.com
Processing... 0%
Counting weighted characters
Finding smart split points
Numbering thread
Done

Result

A tweet's 280-character limit is not a simple `text.length` check, and most naive character counters get this wrong in ways that matter. This tool implements the real X/Twitter weighted-length algorithm: every code point is looked up against the same weighted-range table the platform's own twitter-text library uses, where most Latin, Cyrillic, Greek and common-punctuation characters count as 1 character but everything outside those ranges — CJK ideographs, most emoji, many symbols — counts as 2. Just as importantly, iterating the text by real Unicode code point (not raw UTF-16 units) means an astral-plane emoji like a surrogate-pair face or flag is correctly counted once, not accidentally double-counted the way a naive `.length` check would.

The other easy-to-miss real rule this tool implements honestly: every http(s):// or www. URL in your text is counted as exactly 23 characters, regardless of whether the literal link is 20 characters or 200. That is the real t.co-shortened length X substitutes for any link, and it means a tweet packed with a long tracking URL has far more room left for actual words than a naive character count would suggest — the splitter accounts for this when deciding where a tweet ends.

Splitting a long post into a thread is more than just cutting every 280 characters. This tool works through three tiers of boundaries in order of preference: it first tries to keep whole paragraphs together, falls back to a real sentence-boundary heuristic when a paragraph is too long (a regex-based splitter that knows the difference between a sentence-ending period and one inside an abbreviation like "Dr." or "e.g." or a decimal number like "3.14"), and only breaks on individual words as a last resort when even a single sentence overflows the limit — at every tier, a URL is treated as one indivisible token and is never split in the middle.

Thread numbering ("1/7", "2/7"...) has a genuinely easy-to-miss edge case: the numbering text itself uses up characters in the tweet it's attached to, and the width of that numbering depends on the total tweet count, which you don't know until splitting is done. This tool resolves that by re-splitting iteratively, reserving the numbering's real weighted length before each pass, until the reserved budget matches the actual resulting tweet count. The standard 280-character limit is used by default with an honest note that X Premium subscribers get a much higher long-form limit (up to roughly 25,000 characters) for posts that don't need to work as a public thread — a toggle lets you switch to a custom limit if that's what you're targeting.