Opening the spec sheet after the copy is written is already too late. Cutting a thirty-seven character line down to thirty is not editing, it's rewriting — and because nobody budgets time for a rewrite, it gets treated as editing, and what ships is a sentence with its knees taken out.
This guide collects the limits in one place, then covers the part the spec sheets never mention: how to write to a number instead of checking against it afterwards.
The limit is a writing constraint, not a QA step
The usual order of operations is: pick the angle, write the copy, count the characters. That order produces the same artifact every time — a long sentence's remains.
A line written without a limit has a subject, adjectives stacked in front of its nouns, and every article and preposition intact. Squeezing that into thirty characters means deleting one of those things, and whichever you delete, the sentence limps. What survives isn't the thing you meant to say; it's a *summary* of the thing you meant to say. Summaries don't persuade.
Short fields have to be written short from the first draft. A thirteen-character Kakao Bizboard line is not a trimmed sentence — it's a complete line in its own right, and writing one means knowing the number before you start typing.
It helps to sort fields into two buckets:
- Roomy fields — Meta primary text at 125, Google RSA descriptions at 90, TikTok in-feed text at 100. Draft freely, cut later. The sentence survives the cut.
- Tight fields — Bizboard at 13 and 19, GFA headlines at 15, brand name at 10. These cannot be reached by cutting. Write at that length or don't write at all.
The character limit tables
Meta (Facebook and Instagram)
| Field | Chars | What it looks like in the placement |
|---|---|---|
| Feed primary text | 125 | Body copy above the image; collapses to two or three lines behind "See more" |
| Feed headline | 40 | The bold line under the image |
| Feed description | 30 | Grey supporting line under the headline, hidden entirely in some placements |
| Stories primary text | 72 | Short overlay text on a full-screen creative |
Even with 125 characters available, the appeal has to appear in the first two lines. Anyone who taps "See more" is already interested; the person you need to convince decides before the fold.
| Field | Chars | What it looks like in the placement |
|---|---|---|
| RSA headline | 30 | Top of the search result; several headlines are assembled together |
| RSA description | 90 | Body text under the headlines, up to two of them shown |
Responsive search ads differ from every other channel in one way that matters for writing: you don't know what order the headlines will appear in. Each headline has to make sense in any position, which rules out splitting one sentence across two of them.
TikTok
| Field | Chars | What it looks like in the placement |
|---|---|---|
| In-feed ad text | 100 | Lower left of the video, beneath the account name |
The allowance is 100 but only the opening is visible without a tap. If the video already carries the appeal, shorter text almost always performs better than longer.
Kakao Moment
Worth keeping on your radar even if you're not based in Korea — Kakao Talk's chat tab is the single highest-reach ad placement in the market, and any brand running Korean campaigns will hit these fields on day one.
| Field | Chars | What it looks like in the placement |
|---|---|---|
| Bizboard primary copy | 13 | The bold first line of the banner pinned at the top of the chat tab |
| Bizboard secondary copy | 19 | One line under it, in noticeably smaller type |
| Display profile name | 20 | Brand label at the top of the creative |
| Display title | 25 | The creative's main line |
| Display body text | 45 | Supporting text under the title; dropped in some placements |
| Display call to action | 10 | Button label |
Design the 13 and the 19 as one unit. Written as two complete sentences they repeat each other; written as one sentence broken across two lines, the primary copy is meaningless whenever the secondary gets dropped. The safe shape is a primary line that stands alone and a secondary line that reinforces it.
Naver GFA
| Field | Chars | What it looks like in the placement |
|---|---|---|
| Native headline | 15 | First line of an ad sitting inline among feed content |
| Native description | 45 | Body under the headline; frequently truncated on mobile |
| Smart Channel headline | 15 | Main line of the banner strip at the top of Naver services |
| Smart Channel description | 20 | Supporting line beside or below the headline |
| Brand name | 10 | Advertiser label, always shown |
The 10-character brand name catches more teams than you'd expect. If your legal entity or product name is longer than that, agree on one abbreviation and reuse it — shortening it differently on every creative fragments recognition.
Korean counts differently from English
This is the section worth the read if you localise.
Most channels count in characters, and a Korean syllable block is one character. 할 and 인 are two characters. But a Korean syllable carries roughly the information of a short English word, so the same number means two entirely different sizes depending on the language.
| Korean | English | |
|---|---|---|
| What fits in 13 characters | A short complete sentence | Roughly two words |
| Example | 오늘만 5천원 할인 (10) | Free shipping (13) |
| The same idea in the other language | 무료배송 (4) | 5,000 won off today only (24) |
Spaces normally count, in both languages. In Korean that's cheap — the units between spaces are short. In English, two spaces inside a thirteen-character field leave you eleven characters of actual words.
The practical consequence is a rule, not a guideline:
Korean into English
Source, Bizboard primary copy, limit 13: 오늘만 5천원 할인 — 10 characters, carrying both the discount amount and the deadline.
Literal translation: 5,000 won off today only — 24 characters. Nearly double the field.
Rewritten: ₩5,000 off — 10 characters. It fits, but "today only" is gone. English can't hold amount and urgency in this field, so you choose which one is the appeal and push the other into a different field or into the image.
English into Korean
Source, Meta headline, limit 40: Track every ad appeal in one place — 34 characters, using most of the field.
Literal translation: 모든 광고 소구를 한곳에서 추적하세요 — 19 characters. Half the field sits empty.
Rewritten: 소구부터 소재 성과까지 한 줄로 남습니다 — 21 characters, and it says more than the English did. Matching the English sentence exactly would have thrown away room you were entitled to use.
Korean has the advantage in tight fields; English has it in long ones. Run the same campaign in both and the channel mix itself should differ, not just the wording.
Writing to a 13-character field
Once a field drops under about twenty characters, ordinary sentence writing stops working. Four moves cover most of it.
1. Drop the subject. In an ad the subject is almost always the brand, and the brand is already on the creative.
| Copy | Chars | |
|---|---|---|
| Before | We offer free shipping today | 28 |
| After | Free shipping today | 19 |
2. Lead with the noun that carries the appeal. If the line gets cut, the noun survives.
| Copy | Chars | |
|---|---|---|
| Before | A dial that shifts as the light moves | 37 |
| After | Nacre dial, lit from any angle | 30 |
3. Cut modifiers a number already implies.
| Copy | Chars | |
|---|---|---|
| Before | Incredibly light 990g laptop | 28 |
| After | 990g laptop | 11 |
Incredibly light is a claim; 990g is the proof of that claim. Running both says the thing twice, which reads as saying it weakly.
4. Drop articles and connective words the reader supplies for free.
| Copy | Chars | |
|---|---|---|
| Before | Only 3 of the units are left | 28 |
| After | Only 3 left | 11 |
And one rule that overrides all four: never let a word straddle the truncation point. Free returns within 30 days, no fee is 34 characters. In a 30-character field it renders as Free returns within 30 days, n — the offer ends in a stray letter. Free returns, no fee, 30 days is 29 and survives intact. Truncation always eats the end, so put what you can afford to lose at the front.
Truncation and safe length
Filling a field to its stated maximum causes problems in the live placement for three reasons.
- Ellipses get added. Some placements append
…when text meets its container, and that glyph occupies space of its own. - Placements render at different sizes. The same creative truncates earlier on a small device, in dark mode, or in a compressed slot.
- Preview is not delivery. The preview pane in an ads manager shows one representative size, not the smallest one your ad will actually appear in.
So write to roughly 90% of the limit.
| Field | Limit | Safe target |
|---|---|---|
| Bizboard primary copy | 13 | 11 |
| Naver GFA native headline | 15 | 13 |
| Bizboard secondary copy | 19 | 17 |
| Kakao display title | 25 | 22 |
| Google RSA headline | 30 | 27 |
| Meta feed headline | 40 | 36 |
| Naver GFA native description | 45 | 40 |
| Google RSA description | 90 | 81 |
| TikTok in-feed text | 100 | 90 |
| Meta feed primary text | 125 | 112 |
Very short fields are the exception. Applying 90% to a 10-character call to action leaves nine, which isn't a usable budget. For those, use the full limit but make sure it ends on a whole word.
One appeal, many lengths
Here's the common failure. Someone writes the shortest version first — the 13-character Bizboard line — and then expands it for every other channel. The result is that every channel now carries a thirteen-character idea, padded out to fill a field that could have held ten times as much.
Reverse it.
- Settle the appeal as one sentence, with no length constraint at all.
- Write one master line that states that appeal as precisely as you can. This is the source.
- Derive each channel version from the master line, never from the shortest version.
| Stage | Limit | Line |
|---|---|---|
| Appeal | — | Material · detail: the dial's grain changes with the angle |
| Master line | — | The nacre dial changes grain as the light moves |
| Meta feed headline | 40 | When the light moves, the dial moves |
| Meta feed description | 30 | Grain shifts as you turn it |
| Google RSA headline | 30 | Nacre dial, any angle |
| Kakao Bizboard primary | 13 | 자개 다이얼, 빛에 반응 |
Six different sentences, one appeal. Grouped this way, "Bizboard underperformed" becomes a question you can answer: was it the appeal, or was it that the appeal doesn't survive thirteen characters? Managing ad copy covers how to keep copy filed under the appeal it belongs to.
Checking without a spreadsheet
Plenty of teams count characters with LEN() in a shared sheet. That works right up until a platform changes a limit, because the sheet doesn't know and nobody updates it.
- For a single line, quickly, use the free character counter. No sign-in, and everything runs in your browser.
- For copy you're actually managing, copy hound checks each line against your own per-channel specs — the channels, fields, limits and field order are all editable and reorderable. When a platform changes a spec you change one number, and every line written afterwards is checked against the new one.
The pass where copy, image and spec all get looked at together before anything ships is covered in the creative review workflow.
FAQ
Do spaces count toward the character limit?
On most channels, yes — and so do line breaks. Emoji count too, and on some platforms a single emoji costs two characters or more. If you're unsure how a particular field counts, drop your safe target a little below the usual 90%.
What happens if I go over?
It depends on the field. Some block the upload outright, which is annoying but honest. Others accept the copy and truncate it at delivery with an ellipsis — that's the dangerous one, because the ad passes review, looks fine in preview, and breaks only in the live placement where nobody sees it until the report comes back.
Can I reuse translated copy in the same field?
Usually not. A ten-character Korean line becomes twenty to twenty-five characters in English, and forcing the translation down to size leaves you with words rather than an argument. Take the appeal, not the sentence, and write fresh in the target language.
How do I keep up when platforms change their limits?
Keep the numbers in exactly one place. When specs are spread across three spreadsheets and two people's memory, nobody notices a change until a creative gets rejected. A single editable spec table — whether that's one maintained sheet or copy hound's per-channel specs — means the update happens once and applies to everything written after it.
Read next
How to manage ad copy: a five-step system built on appeals
Ad copy doesn't go missing — the reason it was written and what it did when it ran does. Here is a five-step system that files copy under appeals instead of campaigns, splits the idea from its channel versions, and closes every line with a dated verdict.
A three-state creative review: stop, keep, scale
Creatives pile up because nobody ever formally kills one, and spend quietly drifts to whatever the algorithm likes. Here is a three-state review — stop, keep, scale — with when to judge, what to judge on, and how to keep the decision on record.
Somewhere to actually run this
copy hound builds your appeals up as assets, keeps an improvement trail through derived appeals, and rolls per-channel creative performance back up to the appeal. Runs in the browser — nothing to install.
Start free