Ads for Breakfast
← All posts

Essay Google Ads · 8 min read

Google Ads RSA errors: 238 fixes, 13 categories

I counted every correction my own launch tool has logged since May. The top defect isn't a typo, and it isn't what I expected either.

48%

of fixes were cut-off lines

Originally written in German — read it on visnakovs.de.

Every time I correct an ad’s copy before it goes live, my launch tool logs a line: which slot, which error class, what it said before, what it says after. It was never meant to be a data set, just a log. After 263 entries, I counted it for the first time.

The result beat my own expectations. I’d have guessed spelling, maybe overlong text. What’s actually by far the most common defect in real, live ads is not a typo, it’s a line that lost its ending when it got trimmed to fit the character limit: 114 of 238 corrections, or 48%. Spelling sits at 7%.

Below is the full table, followed by what each large category actually is, why it happens mechanically, and a freshly written before/after for each one. There are no client texts in this article. From the log I’m publishing class names and counts; every example here is rewritten from scratch for a made-up furniture store.

The errors, ranked by frequency

Error classCorrectionsShareof which distinct textsChecked in the tool
Line ends mid-thought11448%97Error checker
Promo copy has expired3816%8Error checker
Capitalization is wrong2410%18None
Text cut off at the character limit177%10Character counter
Spelling mistake167%10None
Superlative with no evidence125%6Error checker
Legally risky claim73%5Error checker
Swiss-specific spelling (ß instead of ss)42%3Error checker
Leftover template placeholder21%2Error checker
Grammar: mismatched reference21%2None
Wrong number or price1< 1%1None
Word order1< 1%1None

238 corrections across 126 live ads from 4 accounts, spread across 13 classes. The table shows 12 rows, because the two Swiss orthography classes in the underlying log are merged into one, with just two cases each they’d otherwise point at a single account.

Split by field, 135 corrections sit in headlines and 103 in descriptions. So this isn’t really a headline problem, even though the 30-character limit is where it hurts most.

6 of these 12 rows are now caught automatically by the error checker built into the ad preview tool (in German), in exactly this order: the checks there aren’t sorted by how hard they were to build, they’re sorted by this table. Overlong text gets caught by the character counter while you type; spelling and grammar are deliberately left out.

1. The ending got lost when trimming to the limit

48% of all corrections. The text ends on a word that clearly needs something after it: an article, a preposition, a comma, half a compound word. In the search results it looks like Google cut it off. It was actually cut before that, so the line would fit the field.

Here’s how that happens in practice: the copy doesn’t get written inside the account, it gets written somewhere else, a spreadsheet, a document, a client approval thread. There’s no character counter next to it there, so the lines grow as long as the thought needs. When they get copied into the account or the editor, they don’t fit, and they get cut, right where the limit hits, not where the sentence actually ends.

Headline · The title ends on a function word

Before: “Solid oak dining tables from” (28 of 30 characters) After: “Shop solid oak dining tables” (28 of 30 characters)

Mechanism: German compound words are long, 30 characters is short. Trim a sentence at the limit while typing, and you stop exactly where the last word that still fit was standing, and that’s disproportionately often an article or a preposition.

Description · The description runs into the limit

Before: “Dining tables, chairs and sideboards in solid oak, locally built in our own workshop in” (87 of 90 characters) After: “Dining tables and sideboards in solid oak, crafted with care in our own workshop.” (81 of 90 characters)

Mechanism: at 90 characters, the sentence doesn’t feel tight while you’re writing it, so it gets composed in one go and hard-cut at the end. The list at the front eats the space the clause at the back would have needed.

Both examples sit under the limit. That’s the whole point: the text wasn’t cut by Google, it was cut while it was being written. Four mechanisms produce this, and none of them has anything to do with carelessness.

The limit is tighter in German than in English. 30 characters for a headline wasn’t designed for a language where “Massivholz-Esstisch” alone eats 19 of them. Hit the limit while typing, and you stop right where the next word no longer fits, and that last word is conspicuously often a short function word.

The text gets written elsewhere and pasted in here. A line from a spreadsheet moves into the field via copy-paste, the field only accepts as many characters as fit, and what’s left over looks complete at a glance. Skim the list afterwards in the editor, and you read it line by line, and a single line that’s too short simply doesn’t stand out in a list of thirty.

Pinning breaks up the order. The moment you pin headlines to position 1, 2 or 3, you’re no longer writing one ad, you’re writing building blocks that Google combines with other building blocks. A headline that was mentally the first half of a sentence suddenly lands as the third block behind two unrelated ones, and reads there like a cut-off.

Assets get copied from templates. The fourth path is the least dramatic: an ad group gets copied as a template for the next one, the copy gets adjusted, and one line stays half-rewritten. Behind the 114 corrections in this class in my log sit 97 distinct texts, the rest are the same lines that were sitting in several ad groups at once.

The error checker catches the mechanical part of this: if the text ends on a function word, a comma, a colon or an open hyphen, it flags the line. How far that actually gets you is an open question, more on that below.

2. The promo has expired

16% of corrections. A discount, a season, a deadline, a year, written into the ad copy and left there after the promo ended.

Description · The promo is long over

Before: “Winter Sale 2025: 20% off all upholstered furniture, ends on 31 Jan, 2025.” (74 of 90 characters, description field) After: “20% off all upholstered furniture, from sofas to armchairs, while supplies last.” (80 of 90 characters)

Mechanism: a date in the ad copy doesn’t expire by itself. Put the discount into a promotion asset with an end date instead, and you get exactly that for free: the asset stops running on its own, the ad copy stays valid.

This class is the most honest lesson in the whole log, and it comes down to one number that puts the share in perspective: the 38 corrections here trace back to only 8 distinct texts. At the core it was one outdated discount rate that had been copied across many ad groups. As a share across accounts, that isn’t “16% of all errors,” it’s this: a single promo text that never got rolled back produces dozens of broken ads, because it had already been duplicated everywhere.

That’s why the fix here is structural, not editorial: discounts belong in the promotion asset with an end date, not in the ad copy. An asset stops running on its own. A headline doesn’t, it keeps running until someone finds it.

That’s exactly why a weekly monitor has been running across all my accounts for months, checking for seasonal words, past years and expired deadlines. The check in the error tool is the same logic, just client-side and for a single ad instead of a whole account.

That monitor is now available to take with you: the stale copy watchdog (in German) is the same detection logic as a Google Ads Script for your own account. The full code is on the page, read-only, it reports the findings and changes nothing.

3. Superlatives nobody can back up

5% of corrections carry the class “superlative with no evidence,” another 3% are claims I rewrote for legal risk reasons. Together, the third-largest group.

Headline · The superlative nobody can prove

Before: “Best furniture store in region” (30 of 30 characters) After: “4.8 stars based on 312 reviews” (30 of 30 characters)

Mechanism: superlatives happen under space pressure, they’re short and sound like an argument. The evidence-backed version is almost always the same length, just countable instead.

Both variants are exactly the same length. That’s not a coincidence, it’s why the swap works so often: a superlative takes up the same space as the number that could replace it, and the number is the stronger claim. The checker knows a word list and flags hits with the note “back it up or drop it.” It’s not legal advice and doesn’t claim to judge anything, whether a claim holds up in an individual case isn’t decided by a word list.

4. The small classes: spelling, placeholders, all caps

Together they add up to only a handful of cases, but they cost disproportionate trust once they go live.

Headline · The ß in a Swiss ad

Before: “Große Auswahl an Esstischen” (German spelling: “wide selection of dining tables,” using ß) After: “Grosse Auswahl an Esstischen” (Swiss German drops the ß and spells it with ss instead)

Mechanism: the copy gets written once for Germany and copied for the Swiss campaign. Nobody on the team notices, the readers in Switzerland do.

Headline · The placeholder got left in

Before: “{KeyWord:Dining Tables} on sale” After: “Dining tables on sale”

Mechanism: keyword insertion is a legitimate Google feature, but the fallback text after the colon is what most people actually see. Copy the bracket from a template without touching the fallback text, and you’re advertising the placeholder itself.

Headline · The all-caps

Before: “SOFAS JETZT 20% GÜNSTIGER” After: “Sofas jetzt 20% günstiger”

Mechanism: capital letters are the cheapest way to sound louder in the search results. Google allows them for abbreviations and brand names, not as a stylistic device, and the rejection only comes after the upload.

The all-caps check is the only one in the tool that doesn’t map to its own class in my log. It checks a Google policy, not my own error statistics, which is why it sits at the very bottom of the checker and is flagged here openly as an extra. The 24 corrections in the “capitalization” class are something else: German noun and sentence-start capitalization cases, not shouted words.

The checks run live in the ad preview tool (in German): type in headlines and descriptions, and the error checker marks the spot and says why it stands out. All in the browser, nothing gets uploaded.

What the checker catches, and what it doesn’t

Counting an error class is easy. Finding it automatically is a different matter, and that gap belongs in the same article as the table.

I ran the shipped rules against my own correction history:

  • Cut-off endings: the rule catches 37 of 114 real cases. The rest don’t end on a function word, they break off in meaning, a complete clause missing its second half. To this day only a human reading the line out loud catches that.
  • Superlatives: 17 of 19. Word lists are strong here because the phrasing repeats.
  • Swiss spelling: 4 of 4. A ß is a ß.
  • False positives: on the already-corrected versions of the same texts, the cut-off rule fires 7 times, out of 238 texts checked. So every hit is a prompt to reread, not a verdict.

Two classes the tool deliberately doesn’t check: spelling and grammar. Better tools than a handful of regular expressions exist for that, and a half-working spell checker would be worse than none.

Methodology

  • Source: the launch log of my own RSA tool. It’s tied to uploads, not to an analysis: every uploaded or edited ad logs a line, and every line carries the corrections that were needed before the upload.
  • Scope: 263 lines. 126 of them carry corrections, 238 individual corrections in total, across 13 classes.
  • Timeframe: the log has been running since May 8, 2026 (last entry: August 26, 2026). The corrections themselves come from a systematic pass through the ads running at the time.
  • How they were applied: 61 of the 126 ads were edited in place, 65 were re-uploaded with the old version paused. The difference isn’t cosmetic: an in-place edit keeps the ad ID, the pins and the learning phase, a re-upload doesn’t.
  • Duplicates: the 238 corrections apply to 162 distinct texts. The same text often sat in several ad groups, which is why the table above has its own column for that. It’s the more honest of the two numbers if you want to know how often an error happens, rather than how often it’s live.
  • No client texts: what’s published is class names and counts. Every example in this article was rewritten from scratch for a made-up furniture store; they double as the test fixtures for the error checker itself.

Limits

This isn’t a market report. 4 accounts, one editor, my own standards.

What that means in practice: I decided what counts as an error. A different account manager would have left some lines alone and touched others. The classes are my own grouping, not Google’s. And because the corrections come from one pass, the distribution is a cross-section of what existed at the time, not a statement about how often these errors get created per month.

Two distortions I’d rather name myself. First, the copied texts pull up the share of individual classes, the distinct-text column is the correction for that. Second, these are accounts I manage: the crudest problems are long gone there, and what’s conspicuously missing, wildly overlong text, completely empty fields, is probably missing for exactly that reason.

Even so, this ranking changes something about the day-to-day work. Anyone checking ad copy instinctively looks for typos. After these numbers, a different question is worth asking first: is every headline and every description a finished thought?

In practice, that means

  • Read every line out loud, on its own. The most common error is audible, not visible.
  • Discounts into the promotion asset, not the headline. The asset expires on its own.
  • When pinning, remember every line has to stand on its own since it gets combined with unrelated blocks.
  • Swap superlatives for numbers. They’re usually the same length and always more credible.
  • Run copy through the error checker (in German) before uploading. It doesn’t replace proofreading, but it takes care of the mechanical half.

Once the copy is set, the next question is whether the new version really outperforms the old one. That’s what the A/B test calculator (in German) is for, using the same rule I use to pause ads in live accounts. And how I approach building whole ad groups without breaking a live account is covered in the Google Ads editor.

If you’d like your own account’s ads checked, write to me.