Google’s spam policies define doorway pages qualitatively, not by a word count or a percentage-unique-content formula: they’re pages created to rank for specific geo or keyword variations that funnel users to the same underlying result with no genuinely distinct value per page. Avoiding that classification requires each city page to contain real, locally-specific substance, actual local information, not just a city name swapped into an otherwise identical template, and to serve a genuinely distinct user need for that location rather than existing purely as a ranking-capture mechanism. There is no published numeric threshold that makes a page “safe”; the bar is whether a user landing on that specific page gets something they couldn’t get from any other city variant.
Why doorway classification is a value judgment, not a word count
Google’s documented spam policies describe doorway pages as pages, or sets of pages, constructed to rank for specific, often geographically or keyword-varied searches, that lead users to a page (or a small number of pages) without adding meaningfully different value for each of those search variations. The defining characteristic isn’t the mechanism (templated generation) itself, many perfectly legitimate large-scale local pages are template-driven, it’s whether the output of that template, for each specific instance, provides real, distinct value to someone searching for that specific city.
A page that swaps “Austin” for “Dallas” in a headline and body copy while leaving every substantive claim, every piece of information, and every internal structure otherwise identical is the clearest form of the pattern Google’s guidance targets: multiple pages that are functionally the same page wearing a different city name, existing to capture geo-modified search volume rather than to serve city-specific user needs. This matters because Google’s classification of thin/doorway content is fundamentally a quality/value judgment applied by systems (and previously, human quality raters informing those systems) evaluating whether the content justifies its own existence as a distinct page, not a text-similarity check a duplicate-content detector would run.
Genuinely differentiated local pages, by contrast, contain information that could only be true for that specific location: real local service area details, region-specific pricing or regulatory notes where applicable, genuine local case studies or examples, actual location-specific logistics (service radius, local team members, local landmarks/neighborhoods served), or region-specific data. The differentiator isn’t “more words,” a longer page built from padded, still-generic content doesn’t solve the underlying problem; it’s substantively different, locally-grounded information per page.
It’s worth being precise about what “doorway” actually targets, because the term gets used loosely in the industry to mean almost any large-scale local page program. Google’s policy is specifically concerned with pages built to capture search variations while routing users toward the same ultimate destination or experience, historically this pattern is most associated with sites that funnel visitors from many geo-targeted landing pages toward a single central conversion path, a single phone number, or a single form, regardless of which city page the user actually landed on. A city-page program where each page genuinely serves that city’s users on its own terms (its own service details, its own local proof points, its own reason to exist) is a fundamentally different pattern than one where the city pages exist only as SEO capture mechanisms feeding a single undifferentiated back end. Both can look similar in a site crawl (many pages, similar template, city name in the H1), which is exactly why Google’s own framing focuses on user value rather than structural markers a crawler could mechanically detect.
A common misdiagnosis worth ruling out before assuming a rankings problem is doorway-related: thin local pages can also underperform simply due to normal competitive or relevance factors unrelated to any spam classification at all, weak backlink profile, poor on-page targeting, a new page without enough indexing signal, or genuine competition from stronger local incumbents. Not every city page that fails to rank is a doorway-policy casualty, and treating every local ranking shortfall as a doorway problem can lead a team to over-invest in differentiation work when the actual gap is authority or relevance signals that differentiation alone won’t fix. Checking Search Console for manual actions or notable ranking volatility tied specifically to the local page set is a more reliable diagnostic starting point than assuming spam classification by default.
How to build genuinely differentiated city landing pages
Before scaling a city-page template, define what genuinely varies by city for your specific business, service area boundaries, local pricing or regulatory differences, local team/staff presence, local case studies or client examples, neighborhood-level detail, and build the template around surfacing that real variation, not around a fixed word count target with the city name swapped in.
Audit existing city pages by sampling a handful and asking directly: if you removed the city name from this page, could you tell which city it’s about from the remaining content alone? If the answer is no, the content isn’t actually differentiated regardless of its length, and that’s the practical version of the test Google’s doorway-page policy is getting at.
Hypothetically, consider a regional pest-control company, “Redbrook Pest Solutions,” operating city pages for a dozen metro-area suburbs. Suppose its “Redbrook Pest Solutions of Millbrook” page and its “Redbrook Pest Solutions of Fairhaven” page are identical except for the swapped city name and phone number, both funneling to the same generic contact form regardless of which suburb the visitor landed from. Running the removed-city-name test on either page would leave no way to tell them apart. If Redbrook instead rebuilds each page to include that suburb’s actual service radius, a note about which local neighborhoods or landmarks its technicians commonly service, and any region-specific pricing or scheduling detail, the Millbrook and Fairhaven pages become genuinely distinguishable from each other, which is the substantive difference Google’s doorway-page policy is actually evaluating.
Avoid treating “unique content percentage” or a specific word-count minimum as the safety threshold, since Google’s own guidance frames this as a qualitative genuine-value judgment, not a numeric formula; a page that hits any arbitrary word count while remaining substantively generic doesn’t escape the doorway-page classification risk, and a shorter page with real, city-specific substance is in a genuinely stronger position than a padded one.
Where a location genuinely doesn’t have enough distinct substance to justify its own page (a service area with no real local variation worth documenting), consider whether that location needs a dedicated landing page at all, versus being served adequately by a broader regional page, since forcing a thin page into existence for every possible geo-variant is itself the pattern the doorway-page policy exists to discourage.
When auditing an existing large-scale city-page program, look past the individual page and check the aggregate pattern too: pull a sample of pages across several cities and compare not just body copy but internal linking structure, calls to action, and conversion paths. If every page, regardless of city, ultimately funnels the user toward the identical phone number, form, or generic “contact us” flow with zero city-specific handling downstream, that’s a structural signal reinforcing the doorway pattern even if the on-page copy itself has been reasonably well differentiated. Genuine local relevance usually shows up in more than just the visible text, it shows up in how the page is set up to actually serve that specific market once a user takes action.
It also helps to think about differentiation as a spectrum rather than a binary you either pass or fail. A page with a unique service-area map, a couple of locally-relevant FAQ entries, and an accurate local team reference is meaningfully better differentiated than a pure template swap, even if it isn’t as deeply localized as a page with genuine local case studies and region-specific pricing. Prioritizing incremental, real improvements to the highest-traffic or highest-value city pages first, rather than treating differentiation as an all-or-nothing project that has to be solved identically across hundreds of pages at once, is usually the more realistic path for a large local-page footprint, and it lets you validate whether the added substance actually changes performance before committing to the same investment across the entire set.