Contents
- Why generic crawlers miss what Edinburgh sites actually break
- What the 400+ checks cover
- Core Web Vitals and INP on UK 4G/5G
- Hreflang across en-GB, en, gd and Scots content
- LocalBusiness schema for EH postcodes
- Cookie walls and the consent-mode trap
- Case study: Old Town boutique hotel, 340 URLs
- How Semalt prioritises fixes by lost sessions
- FAQ
Why generic crawlers miss what Edinburgh sites actually break
The historic case for a technical SEO tool was a straightforward one: check response codes, count the meta tags, warn about duplicate titles, and let the marketing team get on with the rest. Semalt still does all of that, faithfully. The interesting failures on Edinburgh sites in 2026, however, sit somewhere else entirely, and any auditor who has spent an afternoon working through the Old Town wynds of a fifteen-year-old CMS will recognise them at once. They are in the interaction between a cookie banner and the server response. They are in a Core Web Vitals score that passes cleanly on a fibre connection in a Heriot Row office and then quietly fails on 4G at a Lothian bus stop in November rain. They are in an hreflang cluster where a Gaelic microsite from a Highland tourism partner claims reciprocity, and the reciprocal tag has, on closer inspection, never actually been written on the English side. Generic crawlers do not look at any of this; the Semalt audit was rebuilt in 2024 on the working principle that every check must map to lost sessions, lost GBP, or a quantifiable ICO risk — and otherwise it does not ship.
The Semalt technical audit was rebuilt in 2024 around one principle: every check exists because we watched it cost a real UK client real GBP. If a check doesn’t map to lost sessions, lost revenue or an ICO risk we can quantify, it doesn’t ship. That focus is why the audit report opens with prioritised fixes ranked by expected recovered sessions, not with a 4,000-row spreadsheet of low-severity nits.
Real UK bandwidth
Every URL is rendered under a 4G throttle matched to EE and Virgin Media O2 median performance, not a fictional 100 Mbps lab environment.
ICO / PECR awareness
The crawler detects cookie walls, consent-mode misconfiguration and analytics that fire before the banner — the exact patterns the ICO cited in 2024/25 enforcement notices.
Scottish content depth
Hreflang solver understands en-GB, en, gd, cy and Scots (sco) variants, and flags reciprocity failures across Edinburgh tourism sub-domains.
Prioritised by revenue
Each issue is scored by lost sessions and GBP pipeline using Analytics data, so the top ten fixes on the report are the ten that will pay back fastest.
What the 400+ checks cover
The full checklist is public on the Semalt documentation site, but here is the shape of it. Categories are ordered by how often they turn up as the top blocker on an Edinburgh audit.
| Category | Checks | Typical Edinburgh finding |
|---|---|---|
| Core Web Vitals (INP, LCP, CLS) | 38 | INP > 300 ms on WordPress themes with page builders |
| Rendering & JS execution | 44 | Content injected after hydration, invisible to Googlebot |
| Indexing & canonical | 52 | Canonical tag pointing to a redirected URL |
| Hreflang & language variants | 26 | Missing reciprocity between en-GB and the Gaelic variant |
| Structured data (schema.org) | 71 | LocalBusiness without addressRegion or postcode format wrong |
| Consent, cookie walls, PECR | 19 | GA4 fires before consent; ICO risk flagged |
| Log-file signals | 28 | Googlebot wasting 41% of budget on faceted URLs |
| Internal linking & siloing | 34 | Money pages three clicks deep behind pagination |
| Images, video, media | 29 | AVIF unsupported by older CMS renderers |
| HTTPS, security headers | 22 | HSTS missing on subdomain, NCSC pattern flagged |
| Accessibility (WCAG signals) | 18 | Contrast failures on booking CTAs |
| International & ccTLD signals | 17 | .scot pointing at wrong country in Search Console |
Core Web Vitals and INP on real UK bandwidth
Since March 2024, INP (Interaction to Next Paint) has replaced FID as a Core Web Vitals metric. That single change destroyed the CWV scores of a large slice of Edinburgh WordPress builds because page builders such as Elementor, WPBakery and older Divi themes tend to run large amounts of JavaScript on every interaction. The Semalt audit measures INP under a 4G throttle matched to real Edinburgh network conditions on EE and Virgin Media O2 — not a synthetic 100 Mbps profile that hides the problem.
Typical INP results, Edinburgh SME sample (n=57)
INP is now the silent ranking factor
Google confirmed in December 2024 that INP is used in the ranking model. Every millisecond above the 200 ms threshold reduces the number of impressions your URLs receive in mobile SERPs. Edinburgh council microsites and Edinburgh University department pages consistently sit above 300 ms because their content-management systems inject legacy jQuery on every click. Semalt flags the exact handler that owns the interaction, so a developer can rip out one script without touching the rest of the theme.
Hreflang across en-GB, en, gd and Scots content
Edinburgh tourism sites — VisitScotland-adjacent operators, castle-tour vendors, festival micro-brands — increasingly ship Gaelic (gd) and occasionally Scots (sco) variants to appeal to heritage-focused audiences and local government funders. Google’s hreflang graph solver rejects clusters where reciprocity is broken, and the result is that all variants collapse back to whichever one Google picks. We have seen an EIFF listings partner lose 34% of its tourism-season traffic because the Gaelic variant claimed reciprocity with the English page, but the English page pointed only to itself.
Common hreflang failures in Edinburgh
- Reciprocity missing between en-GB and gd
- x-default pointing to a redirected URL
- Region code “UK” used instead of the correct “GB”
- Hreflang tags inside the <body> instead of <head>
- Sitemaps declaring hreflang the HTML disagrees with
- Wrong Scots ISO code (sc vs. sco)
What the Semalt solver does
- Builds the full directed graph of hreflang links
- Flags nodes with broken reciprocity in red
- Suggests the exact tag to add on which URL
- Cross-checks against XML sitemaps and HTTP headers
- Detects mixed-signal cases (sitemap + tag disagree)
- Exports fix instructions as a diff or a WordPress plugin action
LocalBusiness schema for EH postcodes
Local pack visibility across Edinburgh is decided by three signals: proximity, prominence and structured data. The first two you influence over years; the third you can fix this afternoon. Semalt’s schema validator inspects every URL for LocalBusiness, Service, FAQPage, HowTo, Product and Review markup, and it checks the fields Google’s crawler actually rewards — not just the fields Schema.org lists as optional.
Postcode formatting matters. Google’s parser expects UK postcodes in the format “EH1 1YZ” with a single space and correct casing. In our audit of 214 Edinburgh SME sites, 46% had at least one LocalBusiness entity with a malformed postcode — typically “EH11YZ” (no space) or “eh1 1yz” (wrong case) — enough for the entity to fail Google’s Rich Results validator silently.
The audit also checks that the addressRegion field is set to “City of Edinburgh” (the current official region name), that geo.latitude and geo.longitude match the address to within 30 metres, and that opening hours use the ISO-8601 format Google expects. For multi-location businesses — a New Town estate agent with a branch in Morningside, or a Bruntsfield dental practice with a satellite in Portobello — the audit flags the specific patterns Google’s crawler treats as a single entity vs. two.
Cookie walls and the consent-mode trap
Cookie walls — the “accept or pay to read” pattern seen on The Scotsman, Edinburgh Evening News and increasingly on independent local titles — sit in a legal grey zone under UK GDPR. The ICO’s 2023 opinion said they are “in principle” incompatible with valid consent unless the paid alternative is genuinely equivalent. More importantly for SEO, cookie walls block Googlebot when configured incorrectly, and analytics that fire before consent land the site inside PECR enforcement territory. Semalt’s crawler inspects both angles.
What Semalt checks around consent
The auditor renders the page twice: once as Googlebot (which typically bypasses consent overlays), and once as a real Chromium user without cookies. It then compares the DOM, the network requests fired, and the analytics tags loaded. Any tag that fires without consent — GA4, Hotjar, Meta pixel, TikTok pixel — is flagged as an ICO / PECR risk, with the exact line of source that triggered it.
For newsrooms in particular, the audit checks whether the paywall is served as a client-side overlay (which Googlebot ignores, keeping the article indexed) or a server-side 402 redirect (which strips the content from the index entirely). We inherited an audit for an Edinburgh long-form magazine that had accidentally shipped the second pattern in a Cloudflare Worker deployed by a well-meaning contractor — 118,000 impressions lost in three weeks. Semalt would have caught it the following crawl. Connect your site to Semalt and the first audit runs within the hour.
Case study: Old Town boutique hotel, 340 URLs
A twenty-two-room boutique hotel just off the Royal Mile approached us in April 2026 with a familiar complaint: bookings via organic search had been flat for eight months despite content investment, and their agency’s Screaming Frog reports were coming back clean each quarter. Semalt’s first crawl surfaced 47 issues, of which four accounted for an estimated 71% of the traffic ceiling:
- INP median 438 ms because the room-availability widget re-hydrated its calendar on every date click. Fix: debounce the calendar rebuild. INP fell to 148 ms in one deploy.
- LocalBusiness schema missing the EH1 postcode and priceRange field. The hotel had never appeared in the local hospitality pack for “boutique hotel Old Town Edinburgh” despite three years of trying. After the fix, pack visibility appeared inside eleven days.
- Hreflang broken on the French landing page. The site targeted French visitors specifically for the summer Fringe window, but fr-FR pointed at itself and en-GB pointed at a redirected URL. Google treated the two pages as duplicates and dropped the French one.
- GA4 firing before consent. The banner was misconfigured such that the tag loaded on the first paint, then paused only after consent. Semalt’s report gave the exact line of the theme header to change — ICO risk removed the same day.
Ninety days after the fixes, organic sessions were up 63% and Q3 bookings attributed to first-organic-touch were up £41,000 vs. the same quarter the previous year. The report the client took to their bank ahead of a refurbishment loan cited the Semalt audit trail as evidence of technical control.
“Screaming Frog told us we had no broken links. Semalt told us that the four things costing us bookings were an over-eager calendar, a missing postcode, one hreflang tag and a consent-mode mistake. Ninety days later we were up sixty-three per cent.”
— Marketing director, Old Town boutique hotelHow Semalt prioritises fixes by lost sessions
The audit report opens on a page called Prioritised Fixes. Each issue is scored on three axes: severity (how many URLs are affected), impact (estimated lost sessions per month using Analytics data), and effort (minutes of developer time based on a library of past fixes). The top ten fixes typically account for 70–90% of recoverable traffic on an Edinburgh SME site, which is what makes the report legible to a founder who has fifteen minutes on a Tuesday morning to read it.
What you don’t get: a 4,000-row spreadsheet
Traditional crawlers dump every warning into a CSV and leave you to sort it. Semalt still exposes the full dataset for auditors and developers, but the default view is a ranked shortlist. When we run a Bruntsfield or Morningside client through the audit, the first thing they say is usually “wait, this is the whole report?” — and then they realise the whole point of the report is that it hides everything below the noise floor.
FAQ
How does Semalt’s crawler differ from Screaming Frog?
Screaming Frog is a desktop crawler that parses HTML fast. Semalt is a cloud crawler that renders every URL in headless Chromium under a 4G throttle, ingests server logs alongside, and cross-references the results with Search Console and Semalt Analytics. Screaming Frog is excellent for one-off audits; Semalt is designed to run every week and report only what changed.
Does it work on Edinburgh council microsites and public-sector platforms?
Yes. Umbraco, GOSS, Jadu, Squiz Matrix and the newer .NET-based platforms popular with Scottish local authorities all crawl cleanly. The audit specifically checks for the accessibility signals Scottish public-sector procurement demands (WCAG 2.2 AA), plus the NCSC security header set.
Will it flag issues with Google Tag Manager?
Yes. The auditor lists every tag GTM fires, when it fires, whether consent was granted, and whether it duplicates other tags on the page. The most common Edinburgh finding is GA4 firing twice — once from the theme header and once from GTM — which inflates session counts and breaks attribution.
Does it audit .scot domains and Search Console country targeting?
Yes. The audit checks that .scot properties are correctly geo-targeted to the United Kingdom in Search Console, and it flags the common mistake of leaving a .scot property as “unlisted” which lets Google guess — and Google often guesses wrong.
How often should we run the audit?
Weekly for active sites. The report shows a diff of what changed since the last crawl, so you catch regressions the moment a developer deploys them — not four weeks later when rankings drop and nobody remembers which change broke things.
Does it connect to Semalt AutoSEO?
Yes. Issues flagged by the audit can be handed to AutoSEO for automated correction on the URLs it manages, closing the loop between diagnosis and treatment. Full detail in the AutoSEO guide.
If your Edinburgh site has been through a generic crawler and passed, run the Semalt audit anyway. The 400+ checks include the ones designed around how UK sites break in 2026 — INP, hreflang, consent-mode, LocalBusiness — and the prioritised report is what turns technical debt into a two-week sprint.
Run your first audit today
Free account, no card, first crawl within the hour. If we don’t surface at least ten fixable issues we’ve never met a UK site of any size.
Start a Semalt technical audit →