A coffee shop chain with two branches, one in Tehran and one in Mashhad, once asked us why they rank second for "cozy cafe to work from" in Tehran but don't show up in the top ten at all for the same phrase in Mashhad. The answer is simple, yet most people don't know it: for many searches, Google personalizes results by the searcher's geographic location, not by who they are, but by which city they're in.
Why does location affect ranking?
When a query has local intent, "cafe," "repair shop," "dentist," Google assumes the user wants something nearby, even if they never typed the city name. That's why results for the exact same phrase can look completely different in Tehran versus Mashhad: each city has its own set of local competitors.
This isn't personalization; it's location targeting
Here's the key distinction: this ranking shift isn't based on the searcher's personal identity (their history, their interests), it's based purely on their city or geographic coordinates. That means anyone searching from Mashhad sees roughly the same results; results aren't personalized between Mashhad users, they only differ between cities.
Which businesses feel this the most?
Businesses with a physical presence or regional services, restaurants, clinics, technical services, local shops, feel the biggest impact. Fully online businesses whose services are nationwide (like digital sales or software services) are less affected by city-to-city differences, simply because the search intent behind them isn't local either.
How do you check rankings city by city?
Manually checking through a VPN or by changing your browser's location setting is slow and unreliable. A more practical approach is a tool that lets you pick your target city directly. RGB Rank Tracker supports this for over thirty cities across Iran, meaning you can track exactly what your Tehran customer and your Mashhad customer each see, separately.
A common local SEO mistake
Many businesses build just one nationwide page and hope it ranks everywhere. If you genuinely have an audience across multiple cities, dedicated pages, or at least dedicated content sections, per city usually perform better, because both Google and the user see a clearer local signal.
The role of your Google Business Profile
For businesses with a physical address, keeping your Google Business Profile complete and current, business hours, exact address, correct category, is one of the strongest local signals you can send, sometimes more important than the site content itself. This profile directly determines whether your business shows up in the Local Pack, the map-based results shown alongside regular search results.
How to optimize a single page for multiple cities
If your service spans several cities, there are two common approaches: build separate pages for each city with genuinely different content (not just swapping the city name into an identical template), or build one unified page that clearly names every city you cover and dedicates at least one real paragraph to each. The first approach works better when there's a genuine difference between locations (pricing, services, hours); the second is enough when the service is identical across cities.
How the two-branch cafe story ended
Back to the example at the start: for the Mashhad branch, we wrote an independent page with genuine content about that specific space, its menu, and its particular features, not a copy of the Tehran page with the city name swapped. Within a few weeks, that local phrase entered the first page of results for the Mashhad branch. The key was that the content was genuinely written for the Mashhad audience, not just for Google.
Tracking each city separately: why an average is misleading
When you average rankings across several cities, the final number can look "acceptable" while you actually have almost no presence in one or two important cities. Tracking each target city separately is the only way to expose these blind spots, exactly what the cafe example demonstrated.
Local language and dialect in content: a subtle detail
Sometimes the ranking gap between cities has nothing to do with Google and everything to do with the content itself: a phrase common in one city might be worded differently in another. Paying attention to these subtle wording differences in each branch's content can create a stronger local signal than identical, un-adapted content used across every city.
A short local SEO checklist
Before anything else, confirm these basics: your Google Business Profile is complete and current, your address and phone number are consistent and accurate across every page, each target city has genuinely dedicated content, and each city's ranking is tracked separately rather than averaged together. These four items are the foundation to get right before attempting anything more advanced.
Technical infrastructure and site speed also affect local SEO
One point rarely mentioned in local SEO discussions: if your site loads slower for users in a particular city, because of server distance or regional internet quality, this can indirectly affect local rankings too, since Google factors in real user experience. For businesses operating across several cities or even countries, a content delivery network (CDN) can reduce this experience gap.
This means local SEO isn't purely a content exercise; technical infrastructure is part of the same equation. Before investing heavily in city-specific content, make sure your baseline site speed is acceptable across all your target regions.
Machine translation and the risk of losing local signal
When you build one city's content by simply swapping the city name into another city's content, or worse, running it through machine translation from another version, both Google and users can detect that duplication. This not only fails to build a genuine local signal, it can also trigger the same keyword cannibalization problem due to duplicate content across your own pages. Genuinely investing in independent content for each city always pays off better in the long run.
A simple reminder for single-city businesses
If you only operate in one city, much of this concern doesn't apply to you as directly, but it's still worth knowing exactly who your competitors are in that one city, rather than imagining nationwide competitors who might not even be present in your local market.
A simple question before starting local expansion
Before investing in multi-city content, ask yourself: is there a meaningful difference in how you deliver the service across these cities, or does only the city name change? If there's a real difference (pricing, hours, local features), investing in independent content per city is fully justified. If there isn't, a single page that honestly introduces each city might be enough to start with.
Over time, as you gather ranking data per city, you can decide which cities deserve further investment in dedicated content.
Summary
The ranking gap between cities isn't a bug or a strange glitch; it's a natural part of how Google handles locally intended searches. If your business covers more than one city, tracking each city separately, not relying on one misleading average, is the only way to see the real picture.
Finally, local SEO isn't a one-time project; local competitors keep changing too, so periodically revisiting this strategy for each city matters just as much as the initial setup.
One more example: a dental clinic with branches in Karaj and Isfahan, after separating its content and tracking each city individually, discovered that competition in Karaj was far more intense than in Isfahan, an insight a single nationwide average would never have revealed, and it directly shaped how they allocated advertising budget between the two branches.
In the end, if there's only one takeaway to keep from this article, let it be this: in Google's eyes, Tehran and Mashhad are two different markets, even when the business behind both is the same.
One-line summary: if you cover more than one city, never judge your ranking by a single average number.
And one last reminder to close on: before making any budget decision between branches, first make sure the data you're looking at is genuinely city by city, not an average number that's hiding the real differences.
Comments & Questions
Have a question about this article? Ask, we'll answer.
No comments yet; be the first.