Mellow HubPricing

BLOG

Why ChatGPT can’t count characters, and the loop that fits captions to every network

On 10 October 2026 ChatGPT wrote 1,981 characters when asked for under 1,500. How we fit captions instead: a model writes, code counts, it retries.

← All updates

Mellow Hub’s free character counter on 8 November 2026 with an example caption about this test: 413 characters; 372 of 280 on X, where the link counts 23; 413 of 300 graphemes on Bluesky; 416 of 500 on Threads, where the emoji counts 4

Key facts

  • On 10 October 2026, asked for a permanent instruction under 1,500 characters, ChatGPT’s free plan returned 1,981 characters and said it was under the limit.
  • In the same test on 10 October 2026, two “shorten it” follow-ups gave 1,690 and 1,530 characters, and “at most 180 words” gave 221 words.
  • A limit given as a shape worked: “one opening line, then 10 rules, each one line of 12 words at most” gave 833 characters in English and 818 in Russian.
  • Since 13 October 2026 Mellow Hub’s composer has a model rewrite an over-limit caption while Hub’s own code counts the result, asking again up to three times.
  • In the 13 October 2026 production test, seven captions in Russian, English and Spanish for X, Threads, Bluesky and Pinterest all came back within the limit, none cut.
  • Hub counts the way each network does: X weighs a link as 23 characters and an emoji as two, Bluesky counts graphemes, and Threads counts an emoji by its size in bytes.

Listen to the key facts1:30AI voice

Every network has its own ceiling for a caption: 280 characters on X, 300 on Bluesky, 500 on Threads, 2,200 on Instagram. Mellow Hub sends one post to many of them, so a caption that suits one is often too long for another. The obvious fix is to ask a language model to “shorten it to 280 characters”. We relied on that twice, in two different places, and it failed both times. This is what happened, with the numbers, and the loop that replaced it.

The situation: a limit the reader has to hit

On 10 October 2026 we were preparing a reel whose viewers could ask, by direct message, for a ready-made permanent instruction for ChatGPT. The field that instruction goes into on ChatGPT’s free plan took at most 1,500 characters, so whatever we sent had to work there on the first paste. A viewer who pastes our text and gets an error does not come back.

Three days later, on 13 October, our founder asked for the same thing inside Hub’s composer: whenever a caption is over a network’s limit, Hub should show it and offer, at one press of a button, to rephrase it so that it fits that limit exactly. Of the price he said: let’s make it free.

What we measured in ChatGPT

We ran the request in ChatGPT’s free plan, where the app named its models GPT-6 and GPT-6 mini that day:

  1. “Write one permanent instruction, under 1,500 characters.” ChatGPT returned 1,981 characters and said the text was under 1,500.
  2. “Shorten it.” 1,690 characters.
  3. “Shorten it” again. 1,530 characters, still over.
  4. “At most 180 words.” 221 words.
  5. “One opening line, then 10 rules, each one line of 12 words at most.” 833 characters in English and 818 in Russian, well inside 1,500.

The usual explanation is that a language model reads and writes in tokens, pieces of words, rather than letters, so a character total is something it estimates, not something it sees. Whatever the cause, the pattern in our test was plain: the model followed a shape (ten lines, twelve words each) far better than a number. Since then every prompt we hand out that has to fit a limit is written as a shape, and run once end to end in a real chat before it ships.

What we built into Hub: the model writes, the code counts

A shape is enough for a prompt. A caption has to fit an exact count, and each network counts differently: X weighs a link as 23 characters and an emoji as two, Threads counts an emoji as its size in UTF-8 bytes, and Bluesky counts graphemes, so an emoji is one. The counting therefore stays in code, in the same function Hub’s validator uses before anything is published.

Mellow Hub’s free post checker on 8 November 2026 with the same example caption: X 372 of 280 and Bluesky 413 of 300, each with the fix, a shorter caption for that network with perChannel
The count comes from code, the network’s way: the same example caption checked on 8 November 2026, with the limit and the fix for each network, as an agent gets them from validate_post.

The first version of Rephrase went live on 13 October at 16:11 UTC. A Russian caption of 609 characters, for Threads’ 500, came back over the limit twice, and the composer offered Hub’s own cut instead, which lost the call to action and the link. Looking at why: each request had started again from the original caption and named only a total.

Ten minutes later, at 16:21 UTC, the second version changed three things:

  • The model shortens its own previous attempt, not the original again.
  • It is told how many characters to take off, as a number and as a share.
  • It may be asked up to three times. If nothing fits after that, Hub cuts the model’s shortest text at the end of a sentence, and the sheet says it did.

The new text becomes that network’s own caption; the main caption is not touched. The task is free: no plan and no AI credits, with hourly and daily ceilings so it cannot be run without end.

Results, 13 October 2026

On production we asked for seven captions written for this test, in three languages:

CaptionNetwork and limitBefore → afterRequests
RussianThreads, 500609 → 4591
English with a linkX, 280460 → 2781
EnglishX, 280293 → 2382
English with emojiThreads, 500546 → 4321
English, longX, 2801,382 → 2781
SpanishPinterest, 500730 → 3833
RussianBluesky, 300609 → 2852

All seven were rephrased within the limit and none had to be cut; each kept its language, its link and its call to action. An eighth caption, already within its limit, was answered “already fits” without asking the model at all.

The same idea runs through Hub’s MCP server. On 2 October 2026, in our test of ChatGPT as a client, ChatGPT tried to post a 365-character text to Bluesky; Hub’s validate_post counted it, refused it before anything was sent, and ChatGPT offered a shorter version or two posts. The count came from Hub, not from ChatGPT.

What did not work, and what is still unproven

  • Asking for a total failed both times we relied on it: in ChatGPT on 10 October, and in Hub’s first version on 13 October.
  • “Shorten it” moved the text in the right direction but never far enough on its own.
  • Starting each retry from the original threw away the model’s progress; that is why the second version hands it its own last attempt.
  • We did not open the finished block in a browser on production with a real account: that needs a connected account and a long caption typed into somebody’s own composer. We read the deployed script and checked the block on a test stand, at phone and desktop sizes, in both themes and in Russian, English and Arabic.

How to do it yourself

  1. Never trust a model’s own count. Count the result in code, the way the network counts it.
  2. For a prompt that people will paste, give a shape instead of a number: a count of lines or items, and a maximum of words per line.
  3. When a text is over the limit, hand the model its own last version and say how much to remove, for example “remove 130 characters, about a quarter”.
  4. Allow two or three rounds, then cut at a sentence end as the last resort, and tell the person you did.
  5. Keep the main caption and give the shorter text to that one network only.
  6. In Mellow Hub the composer’s Network captions block does steps 3 to 5 with Rephrase; an agent gets the measured length and the limit from validate_post and can send its own shorter caption for that channel. Without Hub, our character counter counts the way each network does, and the post checker runs the checks validate_post runs.

Numbers at a glance

TestAsked forGot
ChatGPT, 10 October 2026Under 1,500 characters1,981, reported as under
Two “shorten it”Under 1,5001,690, then 1,530
Word limitAt most 180 words221 words
Shape1 line + 10 rules of ≤12 words833 (English), 818 (Russian)
Hub, 13 October 20267 captions over their limit7 within it, 0 cut

Questions

Can ChatGPT count characters accurately?

Not reliably in our test on 10 October 2026: asked for under 1,500 characters, it wrote 1,981 and said the text fit. Count the result with a tool, or ask for a shape such as ten lines of at most twelve words.

How do I get ChatGPT to write a post under 280 characters for X?

Ask for a shape, such as two sentences of at most 20 words, then count the result yourself; X weighs a link as 23 characters and an emoji as two. If it is over, give ChatGPT its own text back and say how many characters to remove.

Why does ChatGPT get word and character counts wrong?

The usual explanation is that language models read and write in tokens, pieces of words, rather than letters, so a length is something they estimate. In our test, “at most 180 words” returned 221 words.

Does Mellow Hub shorten captions that are too long?

Yes. Since 13 October 2026 the composer shows each over-limit network with its count and a free Rephrase button; Hub measures the model’s text with the network’s own count and, after three misses, cuts at a sentence end and says so.

Where to go next

More updates

All updates · Published October 13, 2026

Write to Hub's founder

Every message is read by the founder himself, so you are talking to him directly. Questions, bugs, a feature you miss: write about anything. We are glad to keep making Hub better.

What is it about?

We attach this page's address so we can see what you saw.