Check a responsive search ad draft
Paste your headlines and descriptions. Every line is measured the way Google measures it — double-width characters count as two — and checked for the causes that get copy rejected.
Runs entirely in your browser. Nothing you enter is sent anywhere.
What are the character limits for responsive search ads?
Google counts display width, not characters. A full-width glyph takes two of the thirty.
A responsive search ad holds up to 15 headlines at 30 characters wide each, up to 4 descriptions at 90 characters wide each, and two display paths you write yourself at 15 each. The word that catches people out is wide. Google measures how much room the text takes in the ad, so a full-width CJK character, a full-width punctuation mark or a wide symbol costs two of the thirty, not one. Fifteen Chinese characters is already a full headline.
| Field | Slots | Limit | How it is measured |
|---|---|---|---|
| Headline | 15 | 30 | Display width; double-width characters count as 2 |
| Description | 4 | 90 | Display width; double-width characters count as 2 |
| Path 1 | 1 | 15 | Plain characters, appended to the display URL |
| Path 2 | 1 | 15 | Plain characters, appended after path 1 |
Character count and display width agree for plain English. They stop agreeing the moment you mix scripts, paste full-width punctuation from a word processor, or put a wide symbol in a headline. Copying from a document is the usual culprit: curly quotes, full-width commas and double-width forms arrive with the text. The per-line counter under your draft shows width against 30 for headlines and 90 for descriptions, and marks the exact line that is over, so you are not guessing which of fifteen lines cost you the rejection.
Widths are measured with the same function the validator enforces, so the counter and the error list never disagree. selftest: rsa_validator
Why do ads get disapproved for punctuation, capitals or phone numbers?
The editorial rules are about how the ad reads, not what it sells.
What the validator flags
- ALL-CAPS. A headline written entirely in capitals reads as shouting. The check flags the line; capitalising a brand name is a different thing from capitalising a sentence. selftest: rsa_validator
- Punctuation. Stacked exclamation marks, asterisks and decorative symbols are the standard editorial rejection. Repeated letters ("Freeeee", "cheeeap") get flagged for the same reason. selftest: rsa_validator
- Phone numbers. A number written into ad text is a common rejection and is not tappable on mobile anyway. The check flags it so you can move the number into a call asset. selftest: rsa_validator
- Unsubstantiated superlatives. "Best", "#1", "cheapest" without anything behind them. Either support the claim on the landing page or drop the word. selftest: rsa_validator
- Banned phrases. Your own list — competitor names, claims you cannot make, expired offers — passed to the validator with the draft. selftest: rsa_validator
- Missing call to action. A draft where no headline and no description asks for the click comes back as a warning, not an error. selftest: rsa_validator
What usually passes
- Sentence case. Capitalise the first word and proper nouns. "Same-day plumbing repair in Tampa" passes where "SAME-DAY PLUMBING REPAIR" does not.
- Ordinary punctuation. Commas, full stops, a single exclamation mark, a hyphen in "same-day". Nothing stacked, nothing decorative.
- Specific claims. "Licensed in Florida", "24-hour callout", "Free written quote" give the reader something checkable instead of a superlative.
- Numbers that belong in the ad. Prices, years and response times are fine. Phone numbers are not ad copy.
- One clear ask. "Call now", "Book online", "Get a quote" — a call to action in at least one headline and one description.
None of these checks decide whether Google approves the ad — a human or a classifier still reviews it. What the validator does is remove the mechanical causes that account for most rejections before the draft ever reaches the account, which is cheaper than a disapproval and a resubmission.
How many headlines should an RSA have?
Fill the slots, but not with fifteen versions of one sentence.
Fifteen is the cap and each distinct headline adds a combination Google can test. Stopping at six leaves the machine less to work with. The failure mode is not the count, it is the sameness: fifteen rewrites of "Tampa plumber" give the ad one idea in fifteen costumes, and Google cannot learn much from that.
The validator flags exact duplicates and near-duplicates, so variations that differ by a word or two are surfaced rather than silently counted as coverage. selftest: rsa_validator A working split for a local service looks like this:
Service
Three or four headlines naming what you do, in the words people search: emergency plumber, drain repair, leak detection.
Location
Two or three with the city or district. Location is what separates a local ad from a national template.
Proof
Licensed, insured, years in business, review count. Specific beats superlative.
Offer and urgency
Free quote, same-day callout, no callout fee. Two slots is plenty.
Call to action
One headline and one description that ask for the click. The validator warns when both are missing.
Descriptions work the same way at a different size: four slots of 90 characters wide, one for the promise, one for the proof, one for the offer, one for the ask.
How should I use pinning?
Every pin buys certainty and pays for it in combinations.
Pinning fixes a headline or description to a position so it always shows there. It exists for text that must appear in a fixed place: a legal disclaimer, a regulated price, a brand name your team will not let rotate. It is not a way to control quality. Pinning a headline to position 1 removes rotation from that slot for every impression, and the combinations Google can assemble drop accordingly. A draft with three pinned headlines and one pinned description is a much smaller ad than the fifteen-by-four it looks like.
A workable rule: pin at most one asset per position, and pin a description only when a compliance line has to be present. If you pin a headline to position 1, accept that the other fourteen rotate around it — make that pinned line carry the keyword you most want seen, not your favourite phrasing. Review pins whenever you refresh the copy; pins outlive the reason they were set. The validator checks pin rules and reports the ones that break them. selftest: rsa_validator
The form on this page submits plain lines without pin positions. When your draft carries pins, run the same check through the adsops_rsa_validate MCP tool, which accepts the full ad object.
What does a run look like on a real draft?
A plumber's draft, six headlines, two descriptions, three problems.
Take a Tampa plumbing ad: headlines "Emergency Plumber in Tampa" (26/30), "Same-Day Plumbing Repair" (24/30), "Licensed Tampa Plumbers" (23/30), "TAMPA PLUMBING EXPERTS" (22/30), "Call 813-555-0143 Today" (23/30) and one description at 94 characters wide. The run comes back with two errors and one warning.
| Check | Result | Why |
|---|---|---|
| Headline width | Pass | Widest line is 26 of 30; four to spare |
| Description width | Error | One line is 94 of 90; over by four characters |
| Phone number in ad text | Error | "Call 813-555-0143 Today" puts the number in the headline |
| ALL-CAPS | Warning | "TAMPA PLUMBING EXPERTS" is shouting case |
| Call to action | Pass | "Call now" appears in a description |
| Duplicates | Pass | No two headlines say the same thing |
The fixes are small. Cut the description to 90 wide, move the phone number into a call asset, and rewrite the caps line as "Tampa Plumbing Experts". The verdict flips to a pass with a note, and nobody discovers any of it through a disapproval three days later.
What the checker does not do
A text check removes mechanical rejections. It does not promise approval or performance.
What it covers
- Google's length limits. Headline and description widths, with double-width characters counted as two. selftest: rsa_validator
- Editorial causes. Pin rules, duplicates and near-duplicates, ALL-CAPS, punctuation, phone numbers, repeated letters, unsubstantiated superlatives, banned phrases, a missing call to action. selftest: rsa_validator
- A verdict per run. Errors that must be fixed and warnings worth reading, separated, with the field each one points at. selftest: rsa_validator
What it cannot tell you
- Whether Google will approve it. A pass means the mechanical causes are gone. Review is still review.
- Whether it will perform. No click-through forecast, no quality-score prediction.
- Whether the landing page holds up. The final URL check is not a page audit; for that, run the landing-page diagnose tool.
- Anything about your account. There is no account connection here at all — the draft in, the report out.
Can an agent run the same check before writing to Google Ads?
adsops_rsa_validate is a pure check: no account access, no writes, same rules.
The browser tool on this page and the adsops_rsa_validate MCP tool apply the same rules: Google length limits with double-width characters counted as two, pin rules, duplicates and near-duplicates, ALL-CAPS, punctuation, phone numbers, repeated letters, unsubstantiated superlatives, banned phrases and a missing call to action. The tool version returns errors, warnings and stats in a shape an agent can act on, and it needs no credentials because it reads nothing. selftest: rsa_validator
That matters because of where copy sits in the workflow. Everything that changes an account goes through the one door: a committed desired-state file, adsops_plan, adsops_apply with validate-only first, then a single-use plan_id. Copy validation belongs before all of that — an agent that checks the headlines first does not burn a plan on a description that is four characters too wide. The validator has no side effect by design, so running it twice, ten times or after every edit is free.
The same tool is part of a set of read-only diagnostics that answer questions before anything is committed: conversion-tracking audit, wasted-spend diagnostics, keyword ideas with intent labels, and the landing-page check for the URL the ad points at. All of it runs locally, on your machine, with your credentials — an open-source MCP server under Apache-2.0, not a hosted proxy. Source is at github.com/antonioac1/adrails.
Straight answers.
What are the character limits for a responsive search ad?
Fifteen headlines at 30 characters wide, four descriptions at 90 characters wide, and two display paths at 15 characters each. Google measures display width, not characters: a full-width CJK glyph or full-width punctuation mark costs two of the thirty. The per-line counter on this page shows width against the limit for every line you paste.
Why do Google Ads get disapproved for capitals, punctuation or phone numbers?
Editorial review rejects ads that read as gimmicks or move the click away from the ad. A headline in ALL-CAPS reads as shouting, stacked exclamation marks and repeated letters read as spam, phone numbers written into ad text are a frequent rejection, and superlatives like "best" or "#1" need support. The validator flags each of these before you submit.
How many headlines should an RSA have?
Fill the slots. Fifteen is the cap, and each distinct headline adds a combination Google can test. The usual mistake is fifteen rewrites of one idea: the validator flags duplicates and near-duplicates, so variations of "Tampa plumber" count as one asset, not five. Split the slots across service, location, proof, price and a call to action instead.
How should I use pinning in a responsive search ad?
Pin only what must appear in a fixed spot: a legal line, a brand name, a price your compliance team requires. Every pin removes rotation from that position and cuts the combinations Google can serve. The validator checks pin rules, but the form on this page sends plain lines, so use the same check through the MCP tool when your draft carries pins.
Does the checker need access to my Google Ads account?
No. It is a pure text check: the draft goes in, the errors and warnings come out. Everything on this page runs in your browser and nothing you type is sent anywhere. The equivalent MCP tool, adsops_rsa_validate, is also a pure check with no account access, so an agent can run it before any call that touches the account.
Can an agent validate ad copy before writing it?
Yes. adsops_rsa_validate runs the same checks — Google length limits with double-width characters counted as two, pin rules, duplicates and near-duplicates, ALL-CAPS, punctuation, phone numbers, repeated letters, unsubstantiated superlatives, banned phrases and a missing call to action — and returns errors, warnings and stats. It reads nothing from the account and writes nothing.