Checker ยท Google Ads Editor
Google Ads Editor CSV checker
Check an Editor import file before Editor sees it. Editor skips some rows without an error message (a fourth enabled ad in an ad group, an identical ad, a column with a duplicate name), so the safe moment to catch them is before you import.
Runs entirely in your browser. No cookies, no tracking, and nothing you type or upload leaves your device.
Your file
OPTIONS
old text=>new text. The strongest check: it confirms that the match rows carry the old text and not the new.
Result
Choose a file or try the sample. The check runs here, in your browser, and the file is never uploaded.
What it checks
- File format: a .csv extension, UTF-16 LE with a byte order mark, tab as separator and LF line endings. That's Editor's own export format, and a comma-separated file is what produces "Missing CSV header".
- Duplicate column names. Editor uses the first one and ignores the rest without saying so.
- Character limits: headlines 30, descriptions 90 and paths 15,1 sitelink text 252 and callouts 25.3 Sitelink description lines 35, campaign names 128 and ad group names 255 are limits from my own playbook, not confirmed on Google's help pages.
- Ad rows without an explicit Ad type, Path 2 without Path 1, and responsive search ads without a Final URL.
- Dynamic search ads with headlines or a Final URL (both must be blank).
- Structured snippets separated by semicolons instead of line breaks, and headers that aren't on Google's predefined list (English, Danish, Swedish and Dutch).
- Shopping product groups written with
==instead of=. - A file that mixes comma and point as decimal separator, which can leave a bid or a budget off by a factor of 10 or 100.
- New campaigns that aren't Paused, budgets set to Total, and an empty EU political ads field.
- More than three enabled responsive search ads in one ad group, and identical ad text twice in the same ad group. Editor imports the first ones and skips the rest quietly.
- Filled-in ID or Ad ID columns on ad rows. Editor doesn't export the ad ID, so the column matches nothing.
- Match rows: when the file should change existing ads, it needs rows with the old text and Status Paused or Removed, and with your replacement pairs it checks that those rows carry the old text.
Why match rows matter
Editor matches an existing ad on its content, not on an ID. A file that only contains the corrected text can't match anything, so every row comes in as Added, and you end up with the old ad and the new one running side by side.
What works is two rows per ad: first the old text, unchanged, with Status Paused (Editor answers Updated), then the corrected text with its normal status (Editor answers Added). The old ad keeps its old text and is paused, which is the right end state, because the text of an existing ad can't be overwritten through a CSV.
Afterwards: compare Editor's three numbers
After an import, Editor reports Added, Updated and Skipped. The checker gives you the accounting to hold them against: Updated plus Skipped should equal the number of match rows, and Added should equal the number of new rows. If Updated plus Skipped comes out lower, some match rows missed and were added as duplicates.
Not checked
- Double-width characters (Chinese, Japanese, Korean), where Google's limits are lower.
- Anything that depends on what's already in your account. The checker can't see your existing ads, so the three-ad cap is counted on the file alone.
- Policy, landing pages, and whether the ads are any good.
Sources
- Google Ads Help: About responsive search ads
- Google Ads Help: About sitelink assets
- Google Ads Help: About callout assets
Google's pages were read on 5 October 2026.
