2
pages competing for the same title as the homepage
3
separate live pages on "reformer pilates equipment"
0
LocalBusiness / review schema, despite a 5.0★, 96-review widget
48
/100 Lighthouse performance score, desktop (mobile: 63–69)
High priority
fix first — actively splitting rankings today
Verified by comparing live title tags, the XML sitemap, and real Google search results for your own site — not estimates.
Homepage title doesn't cover your main service, and duplicates another page
✓ Resolved 2026-09-06
- Evidence
- Homepage
<title> was "Yoga in Muswell Hill | Yogaloom" — nearly word-for-word the title and meta description of the separate page /yoga-in-muswell-hill/. Neither mentioned "Pilates," although the H1 leads with "Personalised Reformer Pilates/Yoga Classes."
- Impact
- Google had to pick one of two near-identical pages to rank for the brand + location search — splitting the authority either page could hold alone, and under-selling Pilates, the higher-value service.
What was done: Homepage title changed to Reformer Pilates & Yoga Studio in Muswell Hill | Yogaloom, meta description rewritten to lead with Pilates + location. Verified live. /yoga-in-muswell-hill/ — see below, resolved separately.
Three pages compete for "reformer pilates equipment" — and the wrong one is winning
Cannibalization
- Evidence
/reformer-pilates/, /reformer-equipment-pilates/ and /private-equipment-reformer-pilates/ are all live. In a live search for "reformer pilates Muswell Hill," your /reformer-equipment-pilates/ page outranked your flagship /reformer-pilates/ page — while competitor Reform Room took 4 of the top 10 results.
- Impact
- Your best-optimized page (well-written title, covers "Pilates North London," "Muswell Hill," "Yoga & Pilates Studio London") isn't the one showing up — a weaker page is absorbing its clicks.
- Fix
- Pick
/reformer-pilates/ as canonical for the core keyword, 301-redirect the other two into it (or re-scope them narrowly, e.g. equipment-buying only, and link to the main page from within them). Still pending — the 3 pages listed here are unchanged.
Related fix already done: investigating this finding turned up a 4th, unlisted page cannibalizing the same keyword — /yoga-in-muswell-hill/, titled "yoga" but its actual content (H1: "Strengthening Reformer Pilates in Muswell Hill") was Reformer Pilates, a leftover mistake from a previous SEO agency. 301-redirected into /reformer-pilates/ and its now-redundant nav menu entry removed. Verified live. The 3 pages above are a separate, still-open piece of this same problem.
Old "-2" duplicate pages are still live, indexed, and competing with the real ones
Duplicate content
- Evidence
/about-us-2/, /time-table-2/ and /all-offers-2/ all return 200 OK. /time-table-2/'s title tag reads "Contact Us" — it doesn't even describe its own URL, a leftover from a page rebuild.
- Impact
- Real, indexed pages quietly diluting whichever page (Timetable, in particular) should be the one Google trusts.
- Fix
/time-table-2/ still needs a 301 redirect to /timetable/ — pending.
Correction: on closer check, /about-us-2/ and /all-offers-2/ turned out not to be duplicates — each is the only (and actively linked, in-menu) version of its page, just with an awkward leftover slug. No action needed on those two; downgraded from this finding.
No LocalBusiness or review schema, despite a 5.0★/96-review widget on the homepage
Missed rich result
- Evidence
- The site's structured data (Yoast-generated) only defines
WebPage, WebSite, Organization and an empty BreadcrumbList — no LocalBusiness/ExerciseGym type, no address, no AggregateRating, even though the homepage displays a 5.0-star, 96-review Google Reviews widget.
- Impact
- That star rating can't appear directly in Google search results without matching schema — a proven click-through lift for local, reviews-driven businesses like a studio.
- Fix
- Add
LocalBusiness schema with name, address (50 Hillfield Park Mews), phone, and an AggregateRating block (5.0 / 96) — most SEO plugins, including Yoast, support this via a Local SEO add-on or a manual schema snippet.
Mobile pages take up to 24 seconds to become interactive
Performance
- Evidence
- A real Lighthouse audit run directly against the live site (Google's PageSpeed API had zero unauthenticated quota) scored mobile performance 63–69/100 across two clean runs — Time to Interactive 16–18s, Speed Index 12.2s. A third run scored just 28/100 when the server briefly took 2.6s to respond to the first request (vs. ~700ms normally), pushing Time to Interactive to 23.7s — so response time itself is inconsistent. Desktop scored 48/100, dragged down by a layout-shift score of 0.617 (anything over 0.1 counts as poor) that mobile doesn't show. The homepage ships 4.9 MB (mobile) / 6.3 MB (desktop) across ~206–211 requests, including 404–573 KiB of JavaScript that's downloaded but never executed.
- Impact
- Core Web Vitals are a direct Google ranking factor, and mobile is where most local "near me" searches happen — a visitor waiting 16+ seconds to interact has usually already left.
- Fix
- Same root cause as the plugin-stack findings below — trimming the three overlapping page builders is the highest-leverage single fix. Separately worth investigating: the server's occasional slow response, and what's causing the desktop layout shift (a slider/carousel or the reviews widget reflowing in after load are the likely suspects).
Medium priority
meaningful, less urgent
An unedited page-builder placeholder is live on the homepage
On-page
- Evidence
- One of the homepage's H2 headings literally reads "Add Your Heading Text Here" — Elementor's default placeholder, never replaced.
- Impact
- A wasted heading tag Google could otherwise use for a keyword, and a visible sign of an unfinished page to any visitor who scrolls past it.
- Fix
- Open that section in Elementor and write a real heading for it.
Three overlapping page-builder plugins are all loaded at once
Performance
- Evidence
- The homepage loads assets from Elementor core and ElementsKit Lite and Qi Addons for Elementor and Essential Addons for Elementor Lite — four page-builder libraries, each shipping its own CSS/JS, for what's normally a one-library job.
- Impact
- Redundant CSS/JS on every single page load — the single biggest lever on how heavy this site feels to load.
- Fix
- Audit which widgets from each add-on pack are actually used on the live site, standardize on one, and deactivate the rest.
The reviews widget alone loads 19 separate files
Performance
- Evidence
- Of ~164 script/stylesheet requests referenced on the homepage, 19 come from a single plugin:
widget-google-reviews — just to render the review carousel.
- Impact
- One decorative widget accounts for roughly one in eight requests on the page.
- Fix
- Check the plugin for an asset-combining or lazy-load setting (load it only once the widget scrolls into view), or replace it with a lighter reviews embed.
Most homepage images skip lazy-loading and size hints
Performance
- Evidence
- 21 of 35
<img> tags have no loading="lazy", and 15 have no explicit width/height.
- Impact
- Images below the fold load before they're needed, and images without dimensions can cause the page to visibly jump as it loads (layout shift).
- Fix
- Turn on lazy-loading site-wide in the theme/media settings, and make sure every image upload keeps its width/height attributes.
The XML sitemap includes plugin templates, not just real pages
Crawl budget
- Evidence
sitemap_index.xml lists e-floating-buttons-sitemap.xml, elementskit_template-sitemap.xml, thsn-service-category-sitemap.xml and thsn-team-group-sitemap.xml alongside the real page-sitemap.xml — these are page-builder component types, not content.
- Impact
- Google spends part of its crawl budget on internal template fragments instead of your real pages.
- Fix
- In Yoast SEO → Search Appearance, turn off "Show X in search results" for those custom post types.