Quick answer
Framer's hosting is already fast. Sites get slow when the hero is a camera file, the fonts swap late, a third-party script owns the main thread, or motion paints the page on every scroll. We treat Core Web Vitals as a launch gate: image weight, fonts, and the render path. Not a report you read after the campaign starts. A slow Framer site is a build decision, not a platform limit.
Key takeaways
- Framer ships a CDN and an image pipeline. The budget is still yours. The platform will host a four-megabyte hero. It will not delete it.
- Field numbers on a phone beat a green Lighthouse screenshot on a studio laptop. Rankings and paid traffic care about the first one.
- The usual killers are ordinary: hero weight, late fonts, chat and analytics on first paint, scroll motion, unused code.
- Set the budget before the first upload. A speed pass after the campaign is theatre you invoice yourself for.
- Do not migrate to another stack for a score. Migrate when Framer is the wrong product. Speed is a file, a font, and a script.
What “fast” actually means
Fast is a page a real phone can use. Google's three field metrics (Largest Contentful Paint, Interaction to Next Paint, Cumulative Layout Shift) are defined on the Core Web Vitals page. The published “good” gates are LCP at 2.5 seconds, INP at 200 milliseconds, CLS at 0.1. This guide is the studio version: what we refuse to upload, what we cut, and when we tell you to stop chasing a number.
| Looks good in a deck | What we actually use | |
|---|---|---|
| Where you measure | Lighthouse on your MacBook, office wifi | The live URL on a mid phone, plus the field data Google already has |
| The number that matters | A 99 performance score | Google's field gates: LCP ≤2.5s, INP ≤200ms, CLS ≤0.1 |
| When you look | The week after launch, if someone complains | Before the first paid click, and again when the CMS starts filling |
| What you change | A plugin, a host, a platform | The hero, the fonts, the scripts, the motion |
A lab pass is useful for finding the file. It is not the ranking signal. A founder on fibre is not your buyer on 4G outside the venue. If you only have a screenshot, you do not have a speed story.
What Framer already does
Framer serves a marketing site the way a static site should: files on a CDN, images rewritten if you let the pipeline work, no database round-trip on the homepage. That is why a clean Framer build feels instant, and why “Framer is slow” is usually a build with a camera roll in the hero.
The platform will not save you from a custom font in four weights, a HubSpot snippet on every page, a Lottie loop in the first viewport, or a code component that ships a library for a counter. Those are choices. We make them on purpose, or we do not ship them.
If the complaint is “Framer hosting is slow,” open the Network panel before you open a migration brief. We will rebuild a WordPress or Webflow site when the tool is why you cannot ship. We will not move you to Next.js because a PNG was 4MB. That job is a pass, not a stack.
Why Framer sites get slow
A camera JPEG, a transparent PNG, or a CMS upload at original size. This is almost always LCP. Framer can compress. It cannot invent a crop you never made.
Two families, five weights, a late swap that restyles the headline after it painted. The page looks finished, then jumps. That is CLS you chose.
Chat, pixel, A/B, heatmap, a marketing tag manager with fourteen children. They own the main thread. The site did not get slower. You invited someone onto it.
Appear on every block, scroll triggers that repaint the page, a background video that never needed to play. Cheap in Framer. Expensive on a phone.
An unused embed, a code component that pulled a kit, a cookie banner that blocks. Weight you cannot see on the canvas until you look at the transfer.
None of this is exotic. We see the same five on otherwise good sites — including ours, if we stop watching the CMS. Editors will upload a poster from the photoshoot. Designers will add a weight “just for the pull quote.” The pass is teaching the budget, not running Lighthouse once.
Budgets we actually keep
A budget is a number you can fail. We write it down at kickoff so the hero argument happens before the campaign, not in a Slack thread the day after you spend on ads.
| Thing | Budget | What we refuse |
|---|---|---|
| LCP image | Sized, compressed, explicit dimensions — hundreds of KB, not megabytes | A full-resolution photoshoot dump in the first viewport |
| Fonts | One family if we can, two weights that earn their keep, swap that does not jump | A second display face for one headline |
| Video | Poster first. Autoplay only if the page exists for that film | A muted loop behind type on a landing page that has to convert on 4G |
| Third-party | Analytics you will read. Everything else after first paint, or not at all | Chat plus heatmap plus two pixels on a five-section site |
| Motion | A few appears that explain hierarchy. No scroll paint on the whole page | Effects on every card because the canvas made it cheap |
| Code | A component that earns the kilobytes | A library for a number that could have been type |
“The platform is not the score. The score is the hero you refused to leave at four megabytes, and the widget you did not put on the first paint.”
Chris NutbeenNuttifox
We do not publish fake “we hit 100” case tiles. A marketing site with a real brand font and one analytics tag will not look like a blank Lighthouse demo. Green enough on a phone is the bar. Fashionable 100s are how you delete the type that makes the company look like itself.
What a speed pass looks like
On a live Framer site this is days, not a rebuild. We sell it as speed optimisation on Framer development. Rates sit on the contact page. If we cannot name the file, the font, or the script, we will not sell you a week.
- 01Measure the real URL
Lab to find the transfer. Field or a mid-phone pass to see if a person would wait. Screenshot theatre does not ship.
- 02Fix LCP first
Almost always the hero or the first CMS image. Crop, compress, set sizes, stop the late swap. One file, not a redesign.
- 03Then fonts
Drop the weight nobody uses. Keep the family the brand actually is. If the headline jumps, the swap is wrong.
- 04Then other people's JavaScript
Anything that is not the page waits, or leaves. Chat is a product decision. It is not free.
- 05Then motion and leftovers
Kill scroll paint that does no work. Remove the embed that ships a player for a still. Recheck on a phone before you call it done.
If nobody visits, speed is not the problem. If the site is a logged-in product stuffed into Framer, the problem is the stack — read the Webflow comparison only if you are still choosing a canvas; a product belongs in product code. If the complaint is a two-point Lighthouse gap and the page already feels instant, stop.


