PostHog Replay Broken: Missing CSS, Fonts or Blank Screen

Workaround available Web Updated October 21, 2026

Quick answer

When a replay shows unstyled pages, missing fonts or a blank start, PostHog couldn't fetch your stylesheets or the first full snapshot arrived late. Allow PostHog in CORS, add crossorigin to stylesheet links, and check for blocked uploads.

Most likely fix: Allow PostHog to load your assets.

Symptoms

Replays play without styling, fonts or images, start with a warning banner or blank frames, or show iframes as empty boxes.

Why it happens

  • CORS blocking PostHog from loading your CSS and fonts at playback
  • Stylesheet link elements without crossorigin
  • Signed or expired asset URLs
  • Initial snapshot lost due to network interruption, early tab close or ad blocker
  • Assets hosted on an intranet that viewers can't reach
  • Third-party iframes (Stripe, YouTube, Typeform) cannot be recorded

How to fix it

Try these in order — the most common fix is first.

  1. 1. Allow PostHog to load your assets

    1. Add us.posthog.com or eu.posthog.com to your server's CORS allowed origins
    2. Add crossorigin="anonymous" to stylesheet link tags
    3. For SvelteKit SSR, set paths.relative to false
  2. 2. Handle expiring assets

    1. Serve a fallback placeholder for signed image or video URLs that expire before playback
  3. 3. Fix late or missing first snapshots

    1. Route PostHog through a reverse proxy so the first batch isn't blocked
    2. Update posthog-js to the latest version
  4. 4. Reduce throttled elements

    1. Add the ph-no-capture class to heavy animated SVG or Lottie elements
    2. In Angular, run session replay outside the Angular zone

This guide also covers

  • posthog replay no css
  • posthog session replay blank
  • posthog recording missing styles
  • posthog replay fonts missing

Still not working?

If PostHog keeps failing, you're not alone. See every PostHog problem users report or the alternatives people switch to.

Other PostHog errors