Landing Pages Fail When They Look Good But Load Slow

Slow pages don’t just annoy people. They change their minds.

A landing page isn’t a gallery. It’s a decision surface with a clock running in the background. Every extra 200ms is a chance for doubt to creep in, for a tab to steal attention, for a calendar reminder to win.

Speed is UX. Treat it like a feature with a budget, not a line item for “engineering to optimize later.”


The $12K Landing Page That Converted at 1.9%

B2B SaaS company. Marketing automation platform. 35 employees. Just closed Series A. Hired an agency to design their new landing page.

Agency delivered: Beautiful. Clean layouts. Smooth animations. Parallax hero. Video background. Custom illustrations. Lottie animations. The works.

Launch day. Traffic hits. Metrics roll in.

Week one numbers:

  • Desktop load time: 3.2 seconds (LCP)
  • Mobile load time: 4.8 seconds (LCP)
  • Mobile bounce rate: 52%
  • Conversion rate (demo requests): 1.9%
  • Average page weight: 3.7MB

Founder called me: “Our new landing page looks incredible but nobody’s converting. What’s wrong with our copy?”

I loaded it on my phone. Stared at blank screen for 3 seconds. Then a skeleton. Then broken layout shift. Then another shift. Finally content appeared. Took 4.8 seconds on 4G.

“Your copy’s fine,” I said. “Your page is just too slow for anyone to read it.”


What Actually Happened (The Performance Autopsy)

I ran the page through diagnostics. Here’s what the agency shipped:

The Killers:

  • Hero video background: 2.1MB, autoplay
  • 8 custom fonts loaded (different weights for “brand consistency”)
  • Parallax scroll library: 87KB of JavaScript
  • Lottie animation files: 650KB total
  • Chat widget: 340KB, loads immediately
  • Uncompressed hero image: 890KB PNG
  • Analytics + heatmap + session replay: 3 separate scripts
  • Every icon as individual PNG files

The Symptoms:

  • Time to First Byte: 420ms (slow server)
  • Largest Contentful Paint: 4.8s mobile
  • Cumulative Layout Shift: 0.34 (brutal)
  • Interaction to Next Paint: 380ms
  • First Load: 3.7MB total

Beautiful landing page. Terrible performance. Classic mistake when doing website design without performance constraints.

I told them: “We can keep it pretty or we can make it convert. Pick one.”

They picked convert.


The Performance Budget (What Actually Ships)

Here’s what I established before touching any design:

Hard Limits:

  • TTFB < 200ms (moved to edge CDN)
  • LCP < 2.5s on mobile
  • INP < 200ms, CLS < 0.1
  • Critical above-the-fold ≤ 150KB (HTML + CSS + JS + hero)
  • Total JS ≤ 160KB gzipped
  • Fonts: ONE family, max two weights, subsetted

The Rule: Any design choice that blows the budget must prove measurable lift. Otherwise: defer or delete.

This isn’t optional decoration. This is product design work — making trade-offs between aesthetics and outcomes.


The Defer or Delete Test

Every element on that landing page had to justify its existence:

DELETED (killed completely):

  • Parallax scroll effects (87KB JS, murdered INP)
  • Video background (2.1MB, replaced with optimized still image)
  • 6 of 8 font weights (kept regular + bold only)
  • Chat widget (340KB, replaced with “Book 15-min demo” link)
  • Lottie animations (650KB, replaced with CSS transitions)
  • Session replay script (only needed during active testing)
  • Individual icon PNGs (replaced with inline SVG sprite)

DEFERRED (moved below fold or lazy-loaded):

  • Customer logo grid (loads after hero visible)
  • Testimonial videos (poster frame + click-to-load)
  • Feature comparison table (below fold, lazy images)
  • Secondary animations (removed from initial bundle)

KEPT (but optimized):

  • Hero image (890KB PNG → 95KB AVIF with WebP fallback)
  • One font family (variable font, subsetted to Latin only)
  • Analytics (one script, consent-aware)
  • Form (native HTML, no third-party embed)

Total cuts: 2.8MB removed from first load.


What Changed in One Week

Timeline: 5 days of focused work
Cost: $4,200 (versus $12K original agency build)

Before:

  • Mobile LCP: 4.8s
  • Bounce rate (mobile): 52%
  • Conversion rate: 1.9%
  • Page weight: 3.7MB

After:

  • Mobile LCP: 1.7s
  • Bounce rate (mobile): 31%
  • Conversion rate: 3.2%
  • Page weight: 480KB

Business impact:

  • Conversion lift: 68% (1.9% → 3.2%)
  • Mobile bounce down 40%
  • Demo requests increased 1.7x with same traffic
  • Support tickets about “page not loading” dropped to zero

They spent less money, got faster results, and converted better. Because we optimized for outcomes, not awards.

That’s what proper SaaS product design for landing pages looks like: speed as a feature, not an afterthought.


Why Speed is UX (Not Just Engineering)

Momentum is trust. Fast pages feel competent. Slow pages feel risky. Users won’t say this aloud — your bounce rate says it for them.

Latency creates micro-decisions.
Every pause is a chance to reconsider. Remove pauses, remove exits.

Perception beats perfection.
Skeletons beat spinners. Progressive reveal beats “loading…”. Optimistic UI feels kinder than anxious UI.

Stop the thinking tax.
Fewer fonts, fewer motion gizmos, fewer layout jumps. Simpler is easier to parse and faster to ship.

Truthful motion.
Animation should explain change, not conceal lag. Keep transitions under 200ms unless there’s real narrative reason.

This is fundamental UX design work. Speed isn’t polish. It’s part of the promise. Keep it, or users won’t keep reading.


How to Actually Build Fast Landing Pages

Here’s the checklist I use. Print it. Make it someone’s job.

Assets (The Heavy Stuff)

Hero image:
Export AVIF/WebP with exact breakpoints. Target 80-120KB. PNG only if you truly need transparency. The 890KB PNG from the story above? Criminal negligence.

Video:
MP4/H.264 with poster frame. If you must use YouTube/Vimeo, lazy-load the iframe behind a click. Never autoplay video backgrounds. Ever.

Icons/illustrations:
Inline SVG or sprite. Be allergic to 2MB Lottie loops. If you insist on Lottie, compress and keep it to one loop. Better yet, use CSS.

Fonts (The Subtle Killer)

One family, two weights OR one variable font. Subset to scripts you actually use. Use font-display: swap to avoid invisible text.

That agency loaded 8 font weights “for brand consistency.” Users saw blank text for 2 seconds while fonts loaded. That’s not brand consistency. That’s brand sabotage.

Motion (The Performance Murder)

Keep transitions 120-200ms and standardize easing. Ban scroll-jacking, parallax stacks, and blur-on-scroll — fastest way to murder INP and legibility.

Motion must explain hierarchy changes (open/close, appear/disappear). If it doesn’t teach, remove it.

The parallax scroll effect killed 380ms from every interaction. Looked smooth in demo. Felt sluggish on real devices. Gone.

Scripts & Embeds (The Grenades)

Pick ONE analytics tag (consent-aware). Heatmaps/session replay only when diagnosing. Turn them off after.

Replace chat widgets with clear promise (“We reply within 15 minutes”) or link to contact page. Widgets are 300KB+ JavaScript grenades.

Keep forms native or use light embed. If you must use heavy provider, wrap it in click-to-load container.

The chat widget from the story? 340KB. Loaded immediately. Used by 3% of visitors. Slowed down 100% of visitors. Delete.

Layout & Components

One hero per breakpoint. Don’t ship A/B tests inside same page. Publish variants as separate URLs.

Build proof modules (logo strips, testimonials) as single component with props. Stop duplicating near-identical versions.

Use responsive constraints properly. Avoid negative-margin hacks causing layout shifts. That 0.34 CLS score? Everything jumped around. Users thought page was broken.


UX Patterns That Keep Speed Felt

Even when you hit performance budget, perception matters.

Explaining CTA:
“Book 15-min demo → calendar opens.”
Reduces hesitation, avoids surprise loads.

Skeletons, not spinners:
Show structure instantly. Let content stream in. Never make users stare at spinning circles.

Form friction removal:
Inline validation. Generous tap targets. One clear error at a time. No page reloads. Forms that don’t make users guess convert better.

Proof early, not heavy:
One metric or short quote in first viewport. The 30-logo wall can live below fold.

Tidy above fold:
One headline. One subhead. One CTA. If everything shouts, nothing speaks. This is basic UX/UI design principle that agencies forget when chasing awards.


The Performance Checklist (Copy This)

Pre-flight (before design anything):

  • Performance budget posted in project (TTFB/LCP/INP/CLS + byte caps)
  • One analytics vendor agreed
  • Asset policy set: AVIF/WebP for images, MP4 for video, SVG for icons
  • One font family and ≤ two weights agreed

Build (the page itself):

  • Hero image ≤ 120KB with proper srcset/sizes
  • 1 font family, ≤ 2 weights (or 1 variable); subsetted; font-display: swap
  • Fallback font metrics tuned to avoid layout jump
  • Total first-load JS ≤ 160KB gzipped
  • All below-fold images lazy-loaded; no GIFs pretending to be video
  • No scroll-jacking/parallax/blur stacks; transitions 120-200ms
  • Proof module reused as one component
  • Forms native or light embeds; heavy providers click-to-load
  • Only one analytics tag
  • Chat widgets off by default; link to contact instead

Diagnostics (run on published URL, mobile):

  • Lighthouse: LCP < 2.5s, CLS < 0.1, INP < 200ms
  • Chrome DevTools Performance: no tasks > 200ms
  • Network tab: first 5 requests < 150KB total
  • Throttle to “Fast 3G”; page remains readable with skeletons
  • Record 30-second Web Vitals trace

Owner & cadence:

  • Name one owner for speed
  • Re-test after every content update and script addition

Print it. Make it someone’s job. Getting this wrong costs conversions.


Working With Agencies (Or Not)

If an agency talks color palettes but can’t hold conversation about LCP/INP, you’re buying poster, not product.

Ask for:

  • Their performance budget
  • Their approach to defer or delete
  • Platform-specific optimization checklist
  • Real performance metrics from past projects

If they blink, move on.

The agency that built that $12K landing page? Beautiful portfolio. Zero performance discipline. Cost the client 1.7x in lost conversions until we fixed it.

Speed isn’t engineering hobby. It’s UX commitment, dev discipline, and business decision.

When evaluating design services, ask about performance budgets first. If they don’t have answer, they’re decorators, not designers.


The Bottom Line

That marketing automation company learned expensive lesson: Beautiful landing pages that load slow don’t convert.

They spent $12K on pretty. Spent $4.2K fixing performance. Got 68% conversion lift.

The math is simple:

  • Slow landing page at 1.9% conversion = wasted traffic
  • Fast landing page at 3.2% conversion = 1.7x more demos with same traffic
  • ROI on performance work: paid back in 14 days

SaaS landing page design isn’t about making things pretty. It’s about making decisions fast — both for you and your users.

Ship faster pages. Get faster decisions.

Every 200ms you save is a micro-decision you remove. Remove enough micro-decisions, and users stop hesitating.

That’s when they convert.

__
DNSK WORK
Design studio for digital products
https://dnsk.work