Article
Jun 9, 2026
Service Area Pages That Rank: The Swap Test and the 84% Experiment
Most city pages never index. Here's the swap test, the only published data, and the per-city proof checklist that decides which pages survive

Most local SMBs buy a 50-city-page package, wait six months, and discover Google indexed eleven of them. The pages exist. They just don't earn a place in the index, which means they don't rank, which means they don't drive a single lead. The fix isn't more pages. It's a higher proof bar per page, fewer pages shipped at once, and a 30-second swap test that flags doorway content before it ever goes live.
This piece is the operator's version of service area pages SEO — written for contractors, home-service operators, and local businesses who've been burned by city-page packages that never ranked. We're going to cover what the only published experiment actually showed, the swap test that separates localization from duplication, the proof you need per city, and how fast you can ship without getting filtered.
TL;DR
Sterling Sky's experiment showed pages 84% similar to each other still ranked — except in competitive markets.
RicketyRoo's swap test: if you can change the city name and the page still reads as true, it's a doorway page.
Whitespark's 2026 survey ranks a dedicated page per service as the #1 local organic ranking factor.
Localize with completed jobs, named reviews, geotagged photos, and city-specific pricing notes — not template variables.
For new or low-authority domains, ship 3–5 city pages per month with real proof, not 50 at once.
1. Why most city pages never rank
The failure mode is rarely a ranking problem. It's an indexation problem. You can check this yourself in Google Search Console: pull the Pages report, filter by URL containing /locations/ or /service-areas/, and count how many sit under "Crawled — currently not indexed" or "Discovered — currently not indexed." In our client work, the typical number on a fresh contractor site is somewhere north of 70% of city pages sitting unindexed after 90 days.
Google's crawler reads the pages, decides they're near-duplicates of each other with the city name swapped, and quietly drops them from the index. No penalty. No warning. Just absence.
The pattern shows up most aggressively on what RicketyRoo calls location page spam — pages whose only meaningful variation between cities is the city name in the H1, meta title, and three paragraphs of body copy. RicketyRoo's published test made the diagnostic simple: if you can swap one city for another and the page still reads as true, the page isn't local content. It's a template with a variable.
2. What the data actually says: the 84% experiment
There's exactly one widely-cited published experiment on this, and it's worth reading in full. Sterling Sky's service-area-pages duplicate-content test, published by Joy Hawkins' team, measured what happened when service-area pages were intentionally 84% similar to each other across a set of locations.
The finding was more nuanced than the SEO Twitter version suggests. The pages ranked. They drove leads. Google did not filter them out of the index in most cases. But — and this is the load-bearing caveat — Hawkins' team explicitly noted the approach was "not always effective in competitive markets."
Translated for operators: if you're the third HVAC company targeting a town of 8,000 people in rural Vermont, an 84%-similar page can index and rank. If you're the forty-third HVAC company targeting Phoenix, it won't. The competitive density of the SERP raises the proof bar. The same page that ranks in Brattleboro gets filtered in Phoenix.
That's the calibrated read. Not "duplicate content is fine." Not "every page must be 100% unique." The honest version is: similarity tolerance is inversely proportional to SERP competition, and you have to assess that per city, not per site.
3. The swap test: a 30-second doorway check
Before a city page goes live, run this:
Open the page in a browser.
Use Find & Replace (Cmd+F, replace) to swap every instance of the target city name with a different city you serve.
Read the page top to bottom.
If every claim, photo caption, review, and proof point still reads as true after the swap — kill the page, or rebuild it.
That's the test. RicketyRoo's framing of it is the cleanest in the industry, and it maps directly to how Google's quality systems appear to evaluate near-duplicates. Pages that pass the swap test are doorway pages. Pages that fail the swap test — meaning the swapped version contains false claims about jobs you didn't do, photos that weren't taken there, or reviews from customers who don't exist in the new city — are localized content.
The swap test is the cheapest QA step in local SEO and the one most agencies skip.

The seven-row diagnostic that separates a doorway page from a service-area page that earns its place in the index.
4. What to actually localize
The Whitespark 2026 local search ranking factors survey, summarized by Harmo, ranked "dedicated page for each service" as the #1 local organic ranking factor and the #2 factor for visibility in AI answer engines. Note the wording: each service, not each service × each city. The factor rewards depth, not multiplication.
When a city page does need to exist — because you genuinely serve that city and want to rank in its local pack — here's the proof bar we use for client work:
Completed jobs in that city. At least 2–3 named jobs with the neighborhood, the work performed, the approximate date, and one photo. If you've never worked in a city, don't publish a page for it. Build the page after the third job, not before the first lead.
Reviews from customers in that city. Pulled from your Google Business Profile, Angi, or wherever you collect them, with the reviewer's first name and city of residence. Two to four real reviews per page is enough.
Geotagged photos. Phone photos of actual job sites in that city, with EXIF data intact. The photos don't need to be professional. They need to be real.
City-specific pricing or scope notes. A line like "Most kitchen remodels in Bellingham run longer than our Seattle jobs because of the permit backlog at the city building department" is the kind of detail no template generates. It's also the kind of detail a real operator would actually write.
One local link or mention. Chamber of commerce, a sponsored little-league team, a local supplier's referral page. One inbound signal that says you exist in that geography.
If you can't hit four of those five for a city, don't ship the page. The risk isn't a penalty. The risk is wasted crawl budget and a page that drags down the perceived quality of the pages that do deserve to rank. This is the same logic we covered in the programmatic-SEO-without-getting-penalized piece: proof per page is the ranking variable, not page count.
5. How many pages, and how fast
For a new domain or a low-authority site (DR under ~25, fewer than ~50 referring domains), the batch rule we use is straightforward: ship 3–5 city pages per month, each meeting the proof bar above. Index them one batch at a time. Wait 2–3 weeks between batches to see what indexes and what doesn't.
For an established domain with existing topical authority, you can push to 8–12 pages per month, but the proof bar doesn't move. Volume without proof is the doorway-page failure mode at scale.
The contractors who get burned are almost always the ones who paid an agency $4k for a 50-city-page launch on a 6-month-old domain. The pages get crawled in week three. By month two, Google has decided most of them are near-duplicates. By month four, the contractor is asking why traffic is flat.
If you're in the capture every inbound lead while you build SEO phase, the parallel investment is making sure your phone gets answered — which is what missed-call-text-back actually solves. SEO is the slow channel. Don't starve the fast one while you wait.
6. Linking structure: keeping pages out of doorway territory
The last technical lever is internal linking. Doorway pages tend to share a giveaway pattern: they're linked only from a footer or a sitemap, never from the body of other pages. Legitimate service-area pages get linked the way real content gets linked.
A few rules we apply on contractor sites:
From your main service page (e.g. /services/kitchen-remodeling), link to the 4–6 city pages where you have the strongest portfolio. Use anchor text that names the city and the service together.
From your blog content, link to the relevant city page when a case study or job belongs there. If you wrote about a Bellingham permit nightmare, link to /locations/bellingham from the post body.
From each city page, link out — to a relevant blog post, to the parent service page, and to one or two adjacent city pages you also serve. Pages with zero outbound internal links read as terminal nodes, which is a doorway-page signature.
Skip the footer-link approach. Stuffing 50 city links into the footer is the single loudest signal that the pages aren't meant to be read by humans. For broader site architecture thinking, the same logic applies to vertical builds like the one we walked through in AI for landscaping businesses.
FAQ
How many service area pages should a contractor have?
As many as you have genuine proof for. If you've completed jobs in 8 cities with photos, reviews, and named customers, build 8 pages. If you want to rank in 50 cities but have only worked in 8, build 8 pages and earn the rest before publishing. Page count is downstream of proof, not the other way around.
Is duplicate content across location pages a Google penalty?
No, it's not a manual penalty. The more common outcome is non-indexation: Google's systems decide the pages are near-duplicates and quietly drop them from the index. Sterling Sky's experiment showed 84%-similar pages can still rank in low-competition markets, but the same approach fails in competitive ones.
What's the fastest way to check if my city pages are doorway pages?
Run the swap test. Open each page, replace every instance of the target city with a different city, and read the result. If the swapped page still reads as factually true — same jobs, same reviews, same photos — the original is a doorway page. RicketyRoo's published version of this test is the cleanest formulation.
Should I publish city pages before I've done jobs there?
No. The temptation is to build the page to attract the first lead, but it inverts the proof requirement that makes the page rank. Build the page after your third completed job in a city. Until then, target nearby cities you've already served and expand your service-area radius in your Google Business Profile.
How long does it take new service area pages to rank?
For a new or low-authority domain, expect 3–6 months from publish to meaningful local pack visibility, assuming each page meets the proof bar. Established domains with strong topical authority can see movement in 4–8 weeks. Pages that fail the swap test typically never rank at all, regardless of how long you wait.
What to do this week
Pull your existing service-area pages into a list. Run the swap test on each one. Kill or rebuild every page that passes the swap test. Then pick the 3 cities where you have the strongest portfolio and rebuild those pages first, hitting four of the five proof points above. Ship those three. Wait three weeks. Check indexation in Search Console.
If you want a second set of eyes on the rebuild before you publish, we're around.