From 22.5 MB to 0.33 MB: A Yoga Studio Leaves Its Site Builder
A 22.5 MB homepage and a 51-second load: how a yoga studio left its US site builder and got 98.5% lighter with Next.js + Payload CMS.
The homepage of a yoga studio near Cologne weighed 22.5 megabytes and took 51 seconds to load on a mobile connection. Four weeks later, the same page ships 0.33 megabytes and paints its largest image after just over 2 seconds. What happened in between was not an optimization pass but a complete rebuild: out of a US site builder, into a custom web app built on Next.js and Payload CMS. This case study walks through the project and what you can take from it for your own website.
- Starting point: a site-builder website (GoHighLevel) with a 22.5 MB homepage, a 51-second load time, broken legal pages and vendor lock-in without access to code or data
- Solution: a custom build with Next.js 16 + integrated Payload CMS, EU hosting on Hetzner, bookings via Eversports
- Result: 98.5% less page weight, LCP of 2.2 s instead of a 51 s download, PageSpeed 99/100/100, all 17 legacy URLs preserved via 301
- The owner now manages classes, team and events himself – no agency, no builder subscription
The starting point: a website the studio didn't own
The studio runs in-person and online yoga classes focused on pain therapy. Its website ran on GoHighLevel, a US all-in-one site builder, set up by a marketing agency through a white-label account. That setup had three structural problems:
- No ownership: code, content and customer data lived in someone else's account. Switching agencies would have meant losing the entire website.
- No performance: every subpage weighed between 10 and 23 MB because the builder inlined every script, font and stylesheet into every single page. Even the legal notice came to 21.3 MB.
- Ongoing costs: €97 per month for the platform, plus a dependency for every content change.
Downloading the homepage took 51 seconds in our test. Google recommends a Largest Contentful Paint under 2.5 seconds. For a studio whose audience books mostly on their phones, that is not a cosmetic issue but a revenue problem.
What the audit found beyond load time
Before the rebuild we crawled and documented all 17 pages. The list went well beyond performance:
- Broken legal pages: the withdrawal-policy page showed the terms and conditions instead, and the liability page showed the privacy policy. With online sales running, a mandatory consumer disclosure was missing – a concrete legal risk under German law.
- GDPR gaps: the entire website ran on the builder's US servers – including data from contact and booking forms. On top of that, Google Fonts loaded from US servers (a common basis for cease-and-desist letters in Germany since the Munich Regional Court ruling of 2022) and several more US services embedded without any visible consent management.
- Health advertising risk: for therapy-adjacent offers, wording that sounds like a promise of healing is contestable under the German Heilmittelwerbegesetz – the old copy had never been reviewed for it.
- No accessibility: an accessibility audit of the archived site found 72 elements with insufficient color contrast, unlabeled buttons and frames without titles. For a studio whose audience includes older people in pain, that is more than a formality.
- No design system: click-assembled sections with shifting fonts, colors and spacing – every page looked different, none followed defined rules.
- SEO basics missing: no XML sitemap, not a single piece of schema markup, a duplicate H1 on the homepage, www and non-www variants linked interchangeably (duplicate content), four product pages reachable only through cryptic ID URLs.
- Feature limits: features the owner wanted – above all a video library with single purchases and subscriptions – could not be built on the platform.
The decision: custom build instead of the next site builder
The obvious route would have been a migration to WordPress or another builder. We decided against it for one reason that outweighed everything else in this project: the studio plans exactly the features the site builder had already failed at – a video library with single purchases, subscriptions and customer accounts. A plugin stack that covers all of that quickly becomes more fragile and more expensive than a clean custom build. We covered that trade-off in detail in WordPress or Next.js for SMBs.
The stack for this project:
| Component | Role |
|---|---|
| Next.js 16 | Statically pre-rendered pages, server response under 200 ms |
| Payload CMS 3 | Admin panel at /admin – the owner manages classes, team, events and pricing himself |
| PostgreSQL 17 | One database for all content, backed up daily |
| Eversports | Class booking and payments, embedded via click-to-load |
| Brevo | Newsletter with double opt-in, EU data center |
| Hetzner Cloud | Hosting in Nuremberg, GDPR-compliant, with automatic deploys on every code update |
On this base we built a consistent design system: brand colors and typography are defined once, and all 20+ pages are assembled from the same reusable components – down to verified color contrast. That is the difference between designed pages and click-assembled ones.
Separating responsibilities mattered: money flows through Eversports, email through Brevo, content lives in the studio's own database. If one service fails or gets too expensive, it can be swapped out without rebuilding the website. That interchangeability is exactly what the site builder lacked.
The results in numbers
Measured with Lighthouse 12 in the simulated mobile profile (throttled 4G, mid-range phone); the old site was measured from the archived crawl taken in July 2026:
| Metric | Before (builder) | After (custom build) |
|---|---|---|
| Homepage page weight | 22.5 MB | 0.33 MB |
| Mobile loading | 51 s (full download) | 2.2 s (LCP) |
| Lighthouse Performance | not meaningfully measurable | 99 (PageSpeed Insights, live domain) |
| Accessibility | 87 – with 72 contrast failures | 100 |
| Best Practices | – | 100 |
| Structured data (schema) | none | LocalBusiness, Events, breadcrumbs, FAQ |
| Layout shift (CLS) | – | 0 |
| Text page (legal notice) | 21.3 MB | under 0.1 MB |
The difference does not come from a single trick but from the architecture: pages are generated as static HTML at build time, CSS is inlined into the document, and images ship as AVIF at exactly the size needed. Third-party scripts load only after a visitor clicks. How numbers like these translate into rankings and conversions is covered in our breakdown of website costs in 2026 – load time is one of the few line items that converts directly into bookings.
SEO: 17 legacy URLs, zero lost rankings
A relaunch loses rankings in two places: deleted content and changed URLs without redirects. Before the rebuild we crawled and archived the entire old site. All 17 indexed URLs of the old website now 301-redirect to their content successors, from the old about page to the old trial-week landing page. The full process is documented in our relaunch checklist.
On top of that came the basics the old site was missing entirely: proper meta descriptions, structured data (LocalBusiness schema with the studio's actual Google reviews, event and breadcrumb markup – the old site had no schema at all), a sitemap, and contact details kept consistent between the website and the Google Business Profile.
GDPR and health advertising law: from risk to baseline
The new site reverses every legal finding from the audit: fonts are self-hosted, third-party content such as the booking widget loads only after a click (click-to-load), and hosting is EU-only. The legal pages – imprint, privacy policy, terms, withdrawal policy based on the official German template – exist as separate, correct pages and go through a final legal review before launch. And because the studio offers therapy-adjacent classes, all copy was written and reviewed against the Heilmittelwerbegesetz instead of risking healing claims.
What the owner handles himself now
The biggest day-to-day difference is invisible: in the Payload admin panel, the studio owner maintains the schedule, instructor profiles, events and pricing copy without a developer. New content automatically shows up on the right pages, in the sitemap and in the Google schema. Code changes deploy themselves from the Git repository. The website belongs to the studio – code, data and domain. All deliverables and the full stack at a glance: Schmerzhilfe Yoga project page.
Frequently asked questions
How long does a relaunch like this take?
In this project, about four weeks passed between the initial audit and a working staging environment, including design, 20+ pages, CMS setup and hosting. The timeline mostly depends on how quickly content and approvals come out of the business.
What does a website like this cost?
Custom builds of this scope usually land in the mid four-figure to low five-figure range depending on scope. What drives the cost, and where site-builder offers hide follow-up costs, is broken down in what a website costs in 2026.
Does a relaunch lose Google rankings?
Not if every old URL 301-redirects to its successor and the content is preserved. Crawling the old site before shutdown is the insurance policy: it documents which URLs existed and what was on them.
Is leaving a site builder always worth it?
For small brochure sites, often not. It pays off when performance measurably costs revenue, when planned features outgrow the builder, or when depending on a platform and agency becomes a business risk. Our web development page compares the options.
Is your website stuck in a site builder too?
We audit what you have, secure your data and calculate whether a rebuild pays off for you – with numbers instead of gut feeling.
Get in touch