All case studies

// Culted (RAD Media Group)

Rebuilding a fashion brand with 95M monthly reach on Astro, Payload and Cloudflare

WordPress replaced with an edge-cached Astro + Payload platform — zero client-framework JavaScript, strict CSP, and ad infrastructure serving campaigns for the biggest fashion brands in the world.

Visit the live site

// summary

Culted is a youth-culture brand with a monthly reach of 95 million across its site and social, with brand partners from Prada and Gucci to Nike and Spotify. I rebuilt the entire site from the ground up in just over a month — Astro 6 on Cloudflare Workers with Payload CMS — and built the advertising and analytics infrastructure behind it.

What the site is

Culted is a global fashion, art and culture brand — “where youth culture starts” — with a monthly reach of 95 million across its website and social channels, including 1.8M TikTok followers and sponsored editorial for Guinness, Mercedes-Benz, HOKA and Jameson alongside brand partnerships spanning Prada, Gucci, Diesel, Nike, Bottega Veneta and OMEGA. It sits inside the RAD Media Group with sister title XO and creative agency Rad Studio.

The history

I took over the site around 2020/2021 from a previous developer and spent years as Culted’s technical partner on the WordPress platform: Google Ad Manager setup and direct campaign delivery for Nike, New Balance, Chanel, Celine, G-Shock and Marc Jacobs, GDPR-compliant cookie infrastructure across multiple ad platforms, performance, security and email. That work is what earned the bigger brief.

Culted is a video-first brand — the TikTok, Instagram and wider digital output is the engine — and the team kept hitting the front-end design limitations of WordPress. The site needed to move at the speed of the brand.

The rebuild

In 2026 the whole platform was redesigned and rebuilt from the ground up — the turnaround from first commit to launch was just over a month. WordPress and SiteGround are gone; the new stack is an Astro 6 front end on Cloudflare Workers with Payload CMS running headless on its own subdomain, backed by Cloudflare’s D1 database and R2 media storage.

A 5,000-article, 120GB migration. The entire WordPress archive — five thousand articles and, between the database and (mostly) the uploads folder, roughly 120 gigabytes — was exported, stripped of unused files, backed up, optimised and re-imported into Payload, with redirects preserving every URL that had ever earned a ranking. The editorial team was walked through the new CMS before launch and publishes on it daily.

120GB down to under 10. Most of that old weight was WordPress itself: it generates multiple resized copies of every uploaded image, and on a news archive this size that compounds into a monster. On the new platform, Cloudflare optimises images on the fly — one uploaded original per image, resized and compressed per device automatically. The site now sits under 10GB, publishers can upload any file size without thinking about it, and readers still get a fast site.

Zero client-framework JavaScript. The public site ships no React, no islands — just static HTML with a handful of small vanilla modules. On a site publishing at this pace, that discipline is the performance strategy.

A custom edge-cache layer. Pages serve as cache hits from Cloudflare’s edge, versioned per deploy, with stale-if-error fallback — so an origin problem doesn’t take the site down, and a publish invalidates exactly what changed.

An end-to-end image pipeline. Payload media flows through Cloudflare Image Resizing into seven-step responsive srcsets with preloaded, fetchpriority="high" LCP images. The same pipeline generates every OG image.

Advertising architecture without layout shift. Named, size-mapped ad-slot components — billboard, leaderboard, MPU, half-page, mobile banner — reserve their exact dimensions in CSS for Google Ad Manager direct campaigns with zero CLS. I built and set up the Ad Manager infrastructure; the in-house team runs the campaigns day to day, and they consult me often.

Analytics that actually work. Google Analytics was giving Culted junk numbers — Safari blocks its beacons, and a large share of the audience is on Mac and iOS, so read time (the metric a news brand lives on) was fiction. I built a cookieless analytics system from the ground up that records to a Cloudflare database instead: accurate read times, far better usage tracking, no consent banner debt.

Security headers most publishers don’t attempt. A stock WordPress install ships with no security headers at all, and most publishers never add them. Culted got a strict Content-Security-Policy — default-src 'self', with per-provider embed allowlisting for TikTok, YouTube, Spotify and the rest — which shuts down cross-site-scripting attacks by refusing to run any script the site didn’t ship itself. Permissions-Policy locks browser features (camera, microphone, location) so no rogue script can request them. HSTS forces every connection onto HTTPS so nothing can downgrade a reader to an interceptable connection. All of it on an ad-funded, embed-heavy media site, where this is genuinely hard to pull off.

A custom consent manager. No third-party CMP. Granular categories wired to Google Consent Mode v2, gating GA4 and the Meta and TikTok pixels, with a geo-targeted non-personalised ads tier.

Publisher SEO plumbing. Server-rendered search on the Worker, category-sharded sitemap index, NewsArticle / Person / BreadcrumbList structured data, RSS with per-item authors, and native cross-document view transitions instead of a JavaScript router.

Editorial systems, not just a website. On the old WordPress site, putting an image slider in an article was a manual build every single time — create a slider object, add the images, resize them, slot it in. In Payload it’s a gallery field: upload the images, done, and the front end renders a polished slider. For fast-moving culture news, that’s the difference between publishing now and publishing later. Add a restructured category system with the archive re-tagged to match, a custom TikTok embed system, and post-launch server optimisation that cut compute time — and with it, the Cloudflare bill. The unglamorous work that keeps a newsroom publishing.

Why it matters

This is the hardest kind of website there is: high traffic, constant publishing, revenue riding on the ad stack, and a Gen-Z audience that leaves if anything takes longer than a second. The rebuild proves the architecture I now lead with for every project — static-first Astro on Cloudflare — holds up at a scale most agencies would call a platform-team job. One developer, kept fast, kept compliant.

// next step

Got a project? Let's talk.

A free call to talk through what you need and whether I can help. No follow-up sales pressure if it isn’t a fit.