Ad Copy Length Checker
Paste your headlines and descriptions — see every cell checked against the real platform limits.
…or drop a CSV / TSV file here
Your ad copy is counted inside this browser. Nothing is uploaded, and the text itself is never saved — only your platform and column choices are remembered.
Why a plain character count gets this wrong
Paste a Google Ads sheet into Excel's LEN() and every character reads as one unit. Google Ads does not count that way: it bills each Korean, Japanese or Chinese character as two units, so a headline that "measures" short in a spreadsheet can still be over the real limit. The headline "이번 주 무료배송 이벤트" is 13 characters by string length, but 23 units against Google's 30-unit headline ceiling — the gap that causes silent rejections on rows that "looked fine" locally.
It matters most at scale: a sheet of 40 ad groups with up to 15 headlines and 4 descriptions each is hundreds of cells, and Google, Microsoft, Meta, Naver and Kakao each enforce a different ceiling with a different counting rule. This tool runs that arithmetic once, consistently, on the whole sheet, before it reaches the platform's own uploader.
Checking a sheet end to end
- Pick a platform first — the limit and the counting rule both change per platform.
- Switch to "Whole sheet" and paste from Ads Editor or a spreadsheet with the header row included, so columns auto-map to Headline 1, Description 2, Path 1, and so on.
- Fix any wrong guess — a Callout read as a Headline, say — from the dropdown above that column. Only the mapping is remembered locally, never the ad text.
- Read the colors: red is over the hard limit, amber is near the limit or (Meta only) will be truncated, darker amber is under the minimum, green is clear.
- Filter to "Only rows with issues," fix them, then copy as TSV or download as CSV.
The rule behind the double-width count
Every Unicode character carries an East Asian Width property, originally defined for East Asian typesetting. Two of its six categories render at roughly twice the width of a Latin letter — Wide (Hangul syllables, CJK ideographs, hiragana, katakana) and Fullwidth (full-width Latin letters/digits such as A, plus CJK punctuation) — and ad platforms bill both as two characters. The other four — Halfwidth, Narrow, Ambiguous and Neutral, covering ASCII, half-width kana, and most symbols — bill as one. This checker sums that per-character weight rather than guessing from the sentence's language as a whole, so a Korean sentence with an embedded English brand name or a percent sign still counts every part correctly.
Worked examples
LEN() formula would wave through.Unicode width categories this tool weighs
| Category | Examples | Weight |
|---|---|---|
| Wide (W) | Hangul syllables, CJK ideographs, hiragana, katakana | 2 |
| Fullwidth (F) | Full-width Latin letters/digits (A B C), CJK punctuation | 2 |
| Halfwidth (H) | Half-width katakana, half-width symbols | 1 |
| Narrow (Na) | Standard ASCII letters, digits, punctuation | 1 |
| Ambiguous (A) | Greek/Cyrillic letters, symbols such as ± § © | 1 |
| Neutral (N) | Most other punctuation and symbols | 1 |
Common mistakes
- Trusting a spreadsheet's
LEN(), which reports raw characters, not the doubled weight Google and Microsoft bill — a cell that looks fine at 25 characters can still be 41, as above. - Missing the minimum, not just the maximum: an RSA needs at least 3 headlines and 2 descriptions to serve, even if each is inside the limit. The per-group summary here counts how many of each a group has.
- Assuming every platform rounds the same way — Naver's floor, where a short description is rejected rather than just discouraged, catches teams that only check for "too long."
- Dismissing Meta's amber truncation warning because it isn't red — the ad still runs, but the sentence a user sees may end mid-thought.
- Pasting text copy-edited in Word or a PDF first: smart quotes and non-breaking spaces count like any other character and can push a cell over its limit invisibly.
What this checker does not do
It measures length only — not whether a headline uses a restricted term, whether a phrase might trigger a policy review, or how an ad performs once the platform's serving algorithm decides which headlines and descriptions to combine. A fully green sheet means the copy will not be rejected for length, not that it is otherwise compliant. All of this runs locally: nothing you paste is uploaded, and only your platform and column choices are remembered.
Sources & further reading
Frequently asked questions
Why is my Korean headline rejected at 15 characters?
Because Google counts it as 30. Google Ads states that each character in a double-width language — Korean, Japanese or Chinese — counts as two characters. So a 30-character headline limit is really 15 Korean characters, a 90-character description is 45, and a 25-character callout is only 12 (Google spells that one out itself). Most ad copy length checkers use a plain string length and tell you 15 is fine, which is why the rejection only shows up at upload. This checker measures every character by its Unicode East Asian Width, so full-width characters — including full-width letters like A — count as two, exactly the way the platform counts them.
What are the Google Ads RSA character limits?
For a responsive search ad: headline 30, description 90, each display path 15, callout 25 and sitelink text 25 — in double-width languages, halve those (15 / 45 / 7 / 12 / 12). A responsive search ad also needs at least 3 headlines and 2 descriptions to run, so this tool flags rows that are short on either. Microsoft Ads uses the same 30 / 90 / 15 limits, and Performance Max splits headlines into short (30) and long (90).
Why are Naver and Kakao different?
Korean search platforms count Korean characters as one, not two — but they add a floor. Naver Powerlink allows a title of 15 characters and a description of 20 to 45, and a description under 20 characters is rejected at registration, so being short is a failure too, not just being long. Kakao keyword ads use 15 and 45. This tool shows those as "below minimum" in a separate colour from "over the limit", because they are two different rejection reasons.
Meta: why "will be truncated" instead of "over the limit"?
Because Meta will accept the ad either way. Primary text is recommended at 125 characters but accepts up to 500; a headline is recommended at 40 but accepts up to 255. Past the recommendation your copy is not rejected, it is cut off with an ellipsis on most placements. Flagging that in red like a hard limit would be a false alarm, so it is shown in orange as a truncation warning — and only a genuine hard limit is shown as an error.
How are spaces, emoji and keyword insertion counted?
Spaces and punctuation are counted, because the platforms count them. Emoji are counted as one grapheme each — including multi-codepoint ones — but Google Ads does not allow emoji in search ads at all, so they are flagged. Keyword insertion like {KeyWord:Running Shoes} is measured on the default text you supplied, since that is what shows when the keyword does not fit; the cell is badged so you know. If a placeholder has no default, the length genuinely varies at serving time and the tool says so rather than guessing. And none of this leaves your browser: the counting runs locally, your ad copy is never uploaded and never saved.