{
  "slug": "tweet-thread-splitter",
  "name": "gizza-ai/tweet-thread-splitter",
  "version": "0.1.0",
  "title": "Tweet Thread Splitter — Split Text into Numbered Tweets — gizza.ai",
  "description": "Split long text into a numbered tweet thread that never breaks mid-word — custom character limit, (i/N) counters, sentence-aware breaks. Free, in your browser.",
  "tags": [
    "tweet thread",
    "twitter thread",
    "x thread",
    "thread maker",
    "tweet splitter",
    "280 characters",
    "character counter",
    "split text",
    "thread numbering"
  ],
  "category": "text",
  "urls": {
    "page": "https://gizza.ai/tools/tweet-thread-splitter/",
    "markdown": "https://gizza.ai/tools/tweet-thread-splitter/index.md",
    "descriptor": "https://gizza.ai/tools/tweet-thread-splitter/tool.json",
    "deep_link_example": "https://gizza.ai/tools/tweet-thread-splitter/?text=Paste%20the%20long%20post%20you%20want%20to%20turn%20into%20a%20thread%E2%80%A6&limit=280&numbering=parens&count=chars&prefer_sentences=true"
  },
  "cli": "gizza tool tweet-thread-splitter \"Paste the long post you want to turn into a thread…\"",
  "tool": {
    "description": "Split a long piece of text into a numbered Twitter/X thread of character-limit-safe tweets that never break a word in half. Set limit to the per-tweet character cap (default 280; the counter counts toward it). numbering chooses the thread-counter style: 'parens' (default) ' (i/N)', 'slash' ' i/N', 'dotted' 'i. ' prefix, or 'none'. count='chars' (default) measures length in Unicode characters; count='utf16' measures UTF-16 code units (matching how X and most JS clients weigh emoji). prefer_sentences=true (default) starts a new tweet on sentence boundaries so tweets rarely end mid-thought. Words longer than a whole tweet (e.g. a long URL) are hard-split so nothing is lost. Returns the tweets separated by blank lines.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "count": {
          "default": "chars",
          "description": "How tweet length is measured. 'chars' (default) counts Unicode characters; 'utf16' counts UTF-16 code units, matching how X and most JavaScript clients weigh emoji and astral characters (each as 2).",
          "enum": [
            "chars",
            "utf16"
          ],
          "type": "string"
        },
        "limit": {
          "default": 280,
          "description": "Maximum characters per tweet, 10-25000. Default 280 (X/Twitter's standard limit). The numbering counter counts toward this, so each tweet stays at or under the limit.",
          "maximum": 25000,
          "minimum": 10,
          "type": "integer"
        },
        "numbering": {
          "default": "parens",
          "description": "Thread-counter style. 'parens' (default) appends ' (i/N)'; 'slash' appends ' i/N'; 'dotted' prepends 'i. ' (numbered-list style); 'none' adds no counter.",
          "enum": [
            "parens",
            "slash",
            "dotted",
            "none"
          ],
          "type": "string"
        },
        "prefer_sentences": {
          "default": true,
          "description": "When true (default), start a new tweet on a sentence boundary ('. ! ?') where possible so a tweet rarely ends mid-thought; a sentence longer than the limit still falls back to word-packing. A word is never broken.",
          "type": "boolean"
        },
        "text": {
          "description": "The long text to split into a tweet thread.",
          "type": "string"
        }
      },
      "required": [
        "text"
      ],
      "type": "object"
    }
  }
}