Why city pages exist in the first place

When a Los Angeles customer searches for "roofing company Pasadena," Google wants to serve results that specifically match Pasadena, not generic Los Angeles pages. If you have a dedicated Pasadena roofing page with real Pasadena content, you have a much better shot at ranking than if you rely on your homepage or a broad service page to cover it.

Multiply this across every neighborhood you serve and you have a systematic way to capture searches that would otherwise be invisible to you. This is how businesses systematically dominate local search across a metro. The math works even if each city only sends five or ten visitors a month, because you multiply it by thirty or fifty cities.

What separates a real city page from thin content

The most common mistake with city pages is spinning the same content thirty times with the city name swapped. Google detects that immediately, and even if it does not, users can tell. A real city page has content specific to that city: neighborhoods, landmarks, industry mix, notable characteristics.

Every city page should have at least eight hundred words of unique content, plus common shared elements like your contact info, testimonials, and calls to action. The unique content should include a section on why customers in that specific city choose you, a section on the neighborhoods and areas you serve, a section on relevant case studies or projects in the area, and a section answering common questions from customers in that city.

Structured data every city page needs

Every city page should include LocalBusiness schema pointing to your business, Service schema for the service being offered in that city, and a BreadcrumbList schema. If the page has FAQs, add FAQPage schema too.

The Service and LocalBusiness schemas should specify areaServed as a City with the correct name. This helps Google understand exactly which geographic area the page is targeting. Without this, you are relying purely on on page text to signal geography, and you are leaving a big signal on the table.

URL structure decisions that matter

Flat URL structures rank as well as nested ones for local SEO in 2026. A page at your site slash service dash city works fine, so does a nested structure like your site slash city slash service. Pick one convention and stick with it across your entire program. Consistency helps Google understand the site architecture.

Do not use city query parameters like your site slash service question mark city equals los angeles. Those do not rank as well and complicate tracking. Use real URL paths. If you ever need to change the URL structure, use 301 redirects and update your sitemap immediately.

Internal linking is the multiplier

The city pages that rank best are the ones that are woven into the site's internal link structure, not isolated. Every city page should link back to the main services page, the locations hub, and the specific service page it corresponds to. It should also link to two or three related nearby city pages and to any case studies from that city.

This internal linking passes authority around the site, tells Google how your content is organized, and helps users navigate. Do not stuff links, but do link meaningfully. A city page with no internal links coming in from the rest of the site will always underperform one that is properly connected.

How to scale without getting flagged

The safe way to scale is by building one great city page, then using its structure as the template for the next twenty, thirty, or fifty. But every page needs enough unique content that it stands on its own. The template can be identical; the content in the template cannot.

Start with your five most important cities. Ship those with real unique content. Watch how they rank over ninety days. Then scale to the next fifteen or twenty. Do not launch a hundred pages on day one, especially if you have not established any authority yet. Google will notice a sudden explosion of similar pages and treat it with suspicion.

Common city page mistakes that kill rankings

Duplicate title tags across cities. Every city page needs its own unique title tag with the city name in it. Duplicate H1s. Same content spun for each city. Missing structured data. No internal links. Wrong city name in the schema areaServed. Missing from the sitemap. Not indexed because of a robots directive. Slow load times. All of these are common and all of them are fixable.

The good news is that if you fix these one at a time, you can turn an underperforming city page program into one that reliably ranks in the map pack across dozens of cities. This is what I do for clients on a weekly basis and the results compound over months.

Every city page needs a real reason to exist

A city page that does not actually serve customers in that city is spam, and Google is very good at detecting it. Before publishing a city page, you should be able to answer yes to at least three of the following: do you have real clients there, have you delivered real projects there, do you have real photos from there, do you know the neighborhoods there, do you have a physical presence or serve there regularly.

If the answer is no to all of them, that city page is going to hurt your site's overall trust score more than any traffic it could bring in. Better to publish fewer city pages that are legitimate than fifty pages that are obviously templated garbage. Google's helpful content update in 2022 and its follow-ups since have quietly demolished a lot of these thin location pages.

Internal linking and hub-and-spoke structure

City pages should not live in isolation. Build a hub-and-spoke structure where your locations page links to every city page, every city page links back to the locations hub, and related city pages link to each other. This distributes ranking authority through the site and helps Google understand the geographic coverage you are claiming.

Within each city page, link out to your relevant service pages. And within each service page, link to the city pages where you serve. This creates a matrix of internal links that reinforces both your service authority and your geographic authority at the same time. It is one of the cheapest and highest-impact SEO tactics available.

The template pattern that works

Effective city pages follow a rough template but each one gets customized with real specifics. The template usually has: an H1 combining service and city, a lead paragraph mentioning specific neighborhoods and landmarks, a section on why the service matters in this specific city, a first-ninety-days playbook or service breakdown, a case study or proof block from a real client in the area, a FAQ with locally relevant questions, and a call to action.

The magic is not the template. The magic is the specific facts you add to each page: real neighborhood names, real client stories, real project photos, real pricing benchmarks for the market, and real observations about how customers in that city behave differently from customers in other cities. Templates without those specifics are exactly what Google is trying to filter out.

How many city pages to build

Businesses often ask whether they should build fifty city pages or five. The right answer is however many you can support with real substance. If you serve twenty cities meaningfully, twenty city pages is fine. If you serve two cities and the rest are aspirational, two city pages is fine.

Adding thin city pages beyond what you can support does more harm than good. Google now downgrades entire sites for having too many thin pages, so publishing sixty templated city pages when you only have real clients in five will hurt the rankings of the five real ones. Restraint pays off here.

Refreshing city pages annually

City pages should be treated as living documents. Refresh them at least annually with new case studies, updated photos, current pricing information, new neighborhood mentions, and updated FAQ items reflecting questions that have come up over the year. Google rewards freshness in local content, especially in fast-changing markets.

A page that has not been updated in two years signals to Google that the business may not even be actively serving that area anymore. A page that gets a substantive update every six to twelve months signals ongoing activity and relevance. This is a cheap way to keep rankings from drifting.

Common questions

How many city pages should I have?

As many as you actually serve, plus a bit of expansion for adjacent markets. If you have real customers in twenty cities, build twenty city pages. Do not build fifty just because you want the rankings. Google can tell when you are stretching.

How long should a city page be?

At least eight hundred words of unique content per page. Better city pages run twelve hundred to fifteen hundred words with sections on the city, the service, proof, and FAQ. Longer is not always better, but thin pages will not rank in competitive markets.

Should each city page have its own URL or use a query string?

Its own URL. Always. Query strings for local pages hurt rankings and complicate analytics. Use clean paths and stick to them.

How do I keep city pages fresh?

Update case studies and testimonials from that city as they come in. Update meta descriptions and content sections every six to twelve months. If you notice a page stops ranking, look at what changed. Usually it is a competitor publishing better content, and the fix is upgrading your page.