SEO & Performance Audit

yogaloom.com

Reformer Pilates & Yoga studio, Muswell Hill — findings ranked by expected impact on organic visibility.
Audited 2026-09-06 41 pages crawled WordPress · Elementor · Yoast SEO
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.

Lower priority

worth doing, no rush

No blog or article content

Growth
Evidence
No post-sitemap exists at all — the site has pages but no articles.
Impact
A studio with retreats, gong baths and Ayurvedic treatments has plenty of long-tail search queries ("reformer pilates for lower back pain," "what is a gong bath") going uncaptured.
Fix
Not urgent — worth a slow-and-steady content plan once the fixes above are shipped.

A leftover analytics plugin sits unconfigured

Housekeeping
Evidence
MonsterInsights is installed but its own homepage comment says "not currently configured." Analytics is fine — Google Analytics 4 is actually firing via Site Kit — this plugin is just dead weight.
Impact
Negligible on its own, but it's extra plugin surface for no benefit.
Fix
Either configure it properly or remove it — don't run two analytics plugins side by side.

What's already working

  • Brotli compression is enabled site-wide, and static assets carry sensible cache headers.
  • robots.txt is clean — nothing blocked, sitemap correctly referenced.
  • Yoast SEO is active and generating valid Organization/WebSite schema plus XML sitemaps automatically.
  • Google Analytics 4 is correctly firing via Site Kit — you do have real traffic data to work from.
  • /reformer-pilates/ itself is well-optimized: keyword-rich title and description covering Pilates, North London and Muswell Hill.
  • Already ranking #1–#2 for general "yoga pilates studio Muswell Hill" searches, ahead of established local competitors.
  • 96 five-star Google reviews — a strong trust signal, once schema lets Google display it (see High priority).
  • Layout shift is a non-issue on mobile (CLS 0.002–0.003) — the shift problem found is specifically a desktop one.
Methodology: Google's public PageSpeed Insights API has zero unauthenticated quota from this environment (a permanent 429, not a transient limit), so performance was measured with a real Lighthouse audit run directly against the live site instead. Mobile scores varied run-to-run (63, 69, and one anomalous 28 during a slow server response) — normal for a single-run lab test, and a reminder that this is a snapshot, not a trend. A Chrome/Lighthouse trace-compatibility issue also blocked pinpointing the exact element behind the desktop layout shift. For your own ongoing tracking, pagespeed.web.dev also draws on Google's real-user Chrome data (CrUX), which this one-off audit can't see.

Suggested order

  1. Rewrite the homepage title/meta and resolve the /yoga-in-muswell-hill/ duplicate. Done 2026-09-06 — title/meta rewritten, and /yoga-in-muswell-hill/ redirected + removed from the nav menu.
  2. Decide a canonical page in each duplicate pair and 301-redirect the rest. Still open: /time-table-2//timetable/, and the 3-way reformer/equipment split. (about-us-2 / all-offers-2 turned out not to need this — see report above.)
  3. Add LocalBusiness + AggregateRating schema. One-time setup, unlocks the star-rating snippet in search.
  4. Clean up the plugin stack: fix the placeholder heading, drop two of the three overlapping Elementor add-ons, check the reviews widget's asset settings. Directly fixes the 63–69/100 mobile performance score — the biggest win available.
  5. Pass on images and the sitemap: lazy-load + dimensions, exclude template post types from Yoast's sitemap. Smaller wins, quick to batch together.
  6. Longer term: a blog content plan. Once the above is shipped, start capturing long-tail search demand.