Free tool · Google Maps & Business SEO

Local SEO · Google Maps & Google Business Profile Audit

Find issues that hurt Google Maps and Google Business Profile visibility: NAP consistency, LocalBusiness schema, and local SEO signals. Add your listing details for a NAP comparison.

Local SEO signals checked: NAP, Schema, GBP, hreflang LocalBusiness NAP Schema GBP Lang

Heuristic checks — not the Google Business API · Optional GBP NAP comparison · No login required

Usually your homepage or contact / location page.

Google Business Profile details (recommended for NAP match)

Most local pack issues involve name, address, or phone drift — paste what the public sees on Google to compare with your page.

Paste a full maps.google.com/…/place/… link to pre-fill the business name. Short goo.gl links and address/phone still need manual paste — we never call the Google API.

8 free checks left today

Simple process

How the Local SEO Checker works

  1. Paste a page URL

    Your homepage or a location/contact page usually carries the clearest NAP and LocalBusiness signals. No account or install required.

  2. Add your GBP details (optional but recommended)

    Paste a full Google Maps place URL to pre-fill the business name, then add the public address and phone. Short maps.app.goo.gl links cannot be expanded here — open them and copy the full place URL, or paste NAP text by hand. Without GBP fields, the tool cannot verify NAP against the local-pack listing.

  3. We fetch and parse the page

    A server-side, SSRF-safe fetch (the same infrastructure the AEO Readiness Checker uses) pulls the live HTML, then extracts LocalBusiness/Organization JSON-LD, microdata, tel: links, hreflang alternates, and plain-text phone numbers and address-like blocks from footer and contact regions, even when they carry no markup at all.

  4. Read the findings and fix what is flagged

    Each check lists a severity, what was found, and why it matters. If no GBP details were provided, the score is explicitly capped and labelled unverified rather than presenting a misleadingly high number.

Why Google Business Profile and your website must tell the same story

NAP consistency is an important local trust and entity-resolution signal that businesses can verify directly.

Definition

NAP consistency means a business name, address, and phone number remain consistent across its public website, Google Business Profile, and structured data such as LocalBusiness JSON-LD. Consistent details help search and AI systems associate a page with the correct real-world entity, while also reducing customer confusion; they do not guarantee local rankings.

Drift happens quietly. A business moves office and updates the GBP listing, but a footer template still shows the old suite number. A phone number gets ported to a new provider and the JSON-LD is never touched. A regional franchise page inherits the parent company's address by copy-paste. None of these show up as a broken link or a 404 — they only show up as inconsistency between two sources that both look correct in isolation.

That inconsistency has two costs. First, ranking: Google's local algorithm treats consistent NAP across the web as a trust signal, and a mismatch between your own site and your own listing is the easiest inconsistency to fix — and the easiest one to be penalized for ignoring. Second, conversion: a visitor who calls the number in your footer and reaches a disconnected line, or drives to the address in your JSON-LD and finds a different suite, does not come back.

This free checker catches the technical half of that problem in seconds. For the ongoing half — rollout across multiple locations, structured-data audits, and monitoring after every template change — see our technical SEO and local schema work.

How the Local SEO score works

A rules-based 0–100 summary of measurable page, schema, language, and submitted NAP-alignment signals—not a Google ranking or local-pack forecast.

The score rewards complete LocalBusiness data, visible contact details, consistent submitted Google Business Profile information, and usable language signals. If you skip all GBP fields, the default score ceiling is 84 because listing alignment was not verified; the remaining technical findings are still valid.

85–100

A — Strong local signals

70–84

B — Good — minor fixes

55–69

C — Mixed — NAP or schema gaps

40–54

D — Weak local consistency

0–39

F — Critical local or language issues

What the Local SEO Checker checks

Four signal groups, from raw markup to a real GBP comparison — and an honest list of what it deliberately does not claim to do.

NAP & structured data

  • LocalBusiness / Organization JSON-LD presence and completeness
  • PostalAddress and telephone properties, not just a bare name
  • tel: links and microdata itemprop attributes
  • Plain-text phone numbers and address blocks in footers with no markup

GBP comparison

  • Fuzzy name / address / phone match against what you pasted from GBP
  • Exact last-10-digit phone comparison (avoids false matches on shared local exchanges)
  • Explicit "score capped — unverified" flag when no GBP details are provided

Multilingual & hreflang

  • html[lang] attribute presence and value
  • rel="alternate" hreflang link elements, including x-default
  • Whether language and locale signals stay consistent with your primary market

What it does not do

  • Does not call the official Google Business Profile API
  • Does not check review count, star rating, or map-pin proximity
  • Does not guarantee a local-pack ranking position

Automated check vs. comparing GBP by eye

Eyeballing two browser tabs misses the sources that do not render visually — JSON-LD, microdata, and hreflang.

Most teams "check" NAP consistency by opening the website and the Google Business Profile side by side and reading them. That catches obvious visible typos, but it cannot see what a browser does not render: a stale phone number inside LocalBusiness JSON-LD, a missing hreflang tag on the German version of the page, or an address baked into structured data that no longer matches the footer text next to it. This tool reads exactly what search engines and AI crawlers read.

Comparison of manual GBP comparison and the Local SEO Checker
Checking by eye Local SEO Checker
What you compare Your memory of what the listing says The exact GBP text you paste, matched against your live page
What it reads on your site Whatever is visible in your browser JSON-LD, microdata, tel: links, and plain-text footer/contact copy
Multilingual sites Easy to miss a missing hreflang tag on one locale Flags html[lang] and hreflang presence directly
Speed Several minutes per page, per locale Seconds, repeatable after every edit

Multilingual and multi-region sites

Local SEO gets harder, not easier, once a second language or region enters the picture — each locale needs its own consistent NAP story, and mixed signals across locales confuse both classic local packs and AI answer engines about which entity (and which physical location) you mean.

  1. Each major locale should have a stable URL and consistent html[lang] markup — do not let one locale silently fall back to the default language attribute.
  2. Use hreflang (and x-default where appropriate) so Google can match users to the right language version — especially important when AI answer engines pull cross-language snippets into a single response.
  3. Align the GBP primary category, business description, and on-page copy with the same target market per locale; a page in Turkish describing a market the GBP listing does not serve is a mismatch of its own.
  4. If you run separate GBP listings per branch or region, re-run this checker against each corresponding page — a single pass on the homepage will not catch a location-specific mismatch on a branch page.

Methodology & limitations

  1. Server-side fetch only: bot blocks, geo restrictions, or heavy client-side rendering may show different content than what a signed-in browser sees.
  2. Scores and severities are rules-based on measurable page signals; the tool does not read your GBP dashboard, verify live ranking positions, or call any Google API.
  3. Plain-text phone and address extraction is heuristic — it looks inside footer, address, and contact-labelled regions for number- and text-shaped candidates, and is intentionally conservative to avoid false positives from unrelated page content.
  4. Always confirm business-critical changes against Google Search Central guidelines and your own legal/communications policy before publishing.

References

Official and independent documentation (not endorsements of this tool):

Frequently asked questions

Does a perfect score guarantee a top local pack ranking?
No. Competition, reviews, proximity, and query intent still dominate. This tool highlights technical and consistency gaps that often correlate with missed opportunities.
Why compare the website to GBP at all?
Users and assistants cross-check both. Mismatched phone numbers or addresses erode trust and can suppress rich results eligibility.
Is my data stored?
We do not store the URL or Google Business fields you enter. Only a short-lived rate-limit hash of your IP is kept on our servers (see this site’s privacy policy for details). Do not paste secrets or personal data into optional fields.
What happens if I skip the Google Business Profile fields?
The tool still runs the technical checks — schema, hreflang, and plain-text NAP extraction — but the overall score is explicitly capped and labelled as not verified against your listing. NAP-to-GBP alignment is an important local consistency signal this tool measures, so a score without it cannot represent a complete comparison.
Does the tool detect a phone number that has no markup at all?
Yes. Beyond tel: links and schema.org microdata, the checker scans footer, address, and contact-labelled regions of the page for plain, unmarked-up phone-number-shaped text and address-like blocks, so a number just sitting in a footer as regular text is still picked up.
Why does an address partially match but not score 100%?
Address matching is fuzzy on purpose — formatting differences (abbreviated "St." vs "Street", suite numbers, line breaks) should not register as a full mismatch. The default similarity floor is intentionally strict enough to reject half-matched street text; a high-but-not-perfect score usually means the core address matches with minor formatting drift.
Why does phone matching look only at the last 10 digits?
Comparing full national numbers (not an arbitrary short suffix) avoids a false "match" between two genuinely different numbers that happen to share the same local exchange or extension. It also means country-code or leading-zero formatting differences between your page and your GBP listing will not cause a false mismatch.
Should I use LocalBusiness or Organization schema?
If customers can visit a physical location, use LocalBusiness or a more specific subtype (Store, ProfessionalService, FoodEstablishment, and so on) with a PostalAddress — not a bare Organization. A more specific subtype gives search engines and AI systems more precise entity information than the generic type.
Does this tool work for multi-location or multi-language businesses?
Yes, but run it once per page: each location or locale should have its own consistent NAP and hreflang signals, and a single check against your homepage will not catch a mismatch that only exists on a branch or translated page.
How is this different from Google Search Console?
Search Console reports how Google already sees your indexed pages and structured data errors after the fact. This tool checks NAP consistency and hreflang signals against a live fetch and — optionally — your actual GBP text, before you wait for Google to notice a mismatch.

Why trust this local SEO tool?

Same SSRF-safe fetch infrastructure as the AEO checker, built for production sites, not a generic template.

The Local SEO Checker is built and maintained by Maksut — the same WordPress engineering and technical AEO practice behind the AEO Readiness Checker. Every check reflects a real signal we have seen affect local-pack visibility on production client sites: schema gaps, hreflang omissions, and NAP drift that only became obvious once someone compared the listing to the live page.

This is not the official Google Business Profile API and does not read data from your GBP dashboard — you decide what to paste, and nothing you paste is stored (see this site's privacy policy). Do not paste secrets or personal data you would not want logged. Results are heuristic checks, not a substitute for Search Console or a guarantee of ranking position.