Why I Audited Every Client's Fonts This Spring
A client site I built was passing Core Web Vitals on desktop and failing on mobile, and I could not work out why. The images were optimized. The scripts were lean. When I finally opened the network panel, the culprit was sitting in plain sight: the page was waiting on a font request to a third-party server before it could paint the headline. That one request was dragging the Largest Contentful Paint past the line.
That sent me on a spring cleaning project across every client site I manage. I checked how each one loaded its fonts, and the pattern was consistent. The sites that called fonts from an outside server were slower to show text than the sites that served fonts from their own domain. The gap was small on a fast connection and brutal on a phone.
So the question I want to answer here is one I get often: should you self-host your fonts on a Webflow site to improve Core Web Vitals? The short answer is usually yes, but with conditions. Let me explain when it helps, by how much, and how to do it without breaking your design.
What Does Self-Hosting Fonts Actually Mean on Webflow?
Self-hosting fonts means serving the font files from your own Webflow site instead of fetching them from an outside service like Google Fonts. You upload the font files to your project, reference them in your styles, and the browser downloads them from the same domain as the rest of your page, removing a separate connection.
On Webflow, this is more accessible than people think. Webflow already hosts uploaded custom fonts on its own asset infrastructure, which is effectively self-hosting from the browser's point of view. The slow pattern shows up when a site pulls fonts directly from the Google Fonts CDN through a link tag in the custom code, which opens a connection to a different domain.
The difference comes down to connections. Every new domain a browser has to reach means a fresh DNS lookup, a new connection, and more waiting before text appears. Keeping fonts on your own domain removes that overhead. It is the same instinct behind reducing third-party scripts, which I covered in my guide on how to stop third-party scripts from slowing down your Webflow site.
How Much Faster Are Self-Hosted Fonts, Really?
The improvement is measurable. According to CoreWebVitals.io, sites that self-host fonts with proper preloading see a median Largest Contentful Paint improvement of about 180 milliseconds compared to loading from the Google Fonts CDN. That is a meaningful chunk when the good LCP threshold is 2.5 seconds and your headline text is often the largest element on screen.
Why does that matter so much? Because text is frequently the Largest Contentful Paint element on a content page. According to the 2025 Web Almanac, only 62 percent of mobile pages pass the LCP threshold, making it the hardest Core Web Vital to satisfy. If your hero headline waits on a font from another server, you are spending your LCP budget on a connection you did not need.
I want to be fair about the nuance, though. The same Web Almanac data shows the comparison is not always clean, and some sites with third-party fonts render quickly. The advantage of self-hosting is most reliable when your setup supports it, which is the next thing to understand.
Why Does Browser Cache Partitioning Change the Math?
Browser cache partitioning is the reason the old argument for Google Fonts no longer holds. Since Chrome version 86 and modern Safari, browsers split their cache by the site you are visiting. A font downloaded on one site is not reused on another, so the supposed shared-cache benefit of Google Fonts is gone.
People used to defend Google Fonts by saying a visitor probably already had the font cached from another site, so it would load instantly. That logic died with cache partitioning. Today every site downloads that Google font from scratch for every new visitor, regardless of where else they have been. The shared cache simply does not exist anymore.
So the historical reason to use a third-party font CDN has been removed by the browsers themselves. What remains is the cost: an extra domain, an extra connection, and a render that waits on someone else's server. Self-hosting removes all three, which is why I now treat it as the default rather than the exception.
How Do You Self-Host a Font in Webflow Step by Step?
The process is short. First, download the WOFF2 versions of your fonts, since WOFF2 is the smallest modern format every current browser supports. Second, in your Webflow project settings, open the Fonts section and upload those files as custom fonts. Third, assign the font in your style panel exactly as you would any other typeface.
The step most people skip is preloading the one font that paints your headline. You add a preload link in the custom code head so the browser fetches that critical font early instead of discovering it late. Preload only the single weight your hero uses, because preloading everything just creates a new traffic jam.
If you are pulling fonts through a Google Fonts link tag in your custom code today, remove it once the self-hosted versions are live. Leaving the old tag in place means the browser still opens that third-party connection, and you lose the benefit you just set up. This pairs naturally with the image work in my guide on fixing LCP on Webflow sites using lazy loading and image optimization.
But Does Webflow's Own Font Hosting Already Handle This?
Mostly, yes, and that is good news. When you upload a custom font through Webflow, it serves from Webflow's own asset domain over a fast CDN, which already gives you most of the self-hosting benefit. The problem is almost always a leftover Google Fonts link tag added by a previous developer or a template.
So the real audit question is not whether to self-host in theory, but whether your specific site is quietly making third-party font calls. I have opened plenty of Webflow projects that used the built-in font upload and still had a Google Fonts tag buried in the page head from an old experiment. The browser obeys both, so you pay twice.
Check your published site's network requests for any call to fonts.googleapis.com or fonts.gstatic.com. If you find one and your fonts are also uploaded to Webflow, the tag is dead weight. Remove it and let Webflow's hosting do the job it is already doing.
What About font-display and Layout Shift?
Fonts affect more than load speed. They also drive Cumulative Layout Shift, the metric that measures visual jumpiness, where the good threshold is 0.1. If a fallback font loads first and then your real font swaps in at a different size, the page shifts and your CLS suffers. The font-display setting controls that behavior.
I set font-display to swap so text shows immediately in a fallback and then updates, which keeps content visible. To stop the swap from causing a jump, I match the fallback font's metrics as closely as I can to the real one. The closer the two fonts are in size, the less the layout moves when the swap happens.
This is also where font choice and design overlap. Picking fewer weights and a typeface with a sensible fallback reduces both load time and shift. My thinking on type selection for performance and craft lives in my piece on how Webflow designers should set optical sizing on variable fonts, which touches the same trade-offs.
How Do You Confirm It Helped Your Core Web Vitals?
Measure before and after with real tools. Run the page through Google PageSpeed Insights and Lighthouse to see lab LCP and CLS, then watch the field data in Search Console's Core Web Vitals report over the following weeks, since field data reflects real visitors at the 75th percentile, which is what Google actually grades.
I take a screenshot of the network waterfall before I change anything, then compare it after. The font request should move earlier and come from my own domain. In the lab numbers, I look for the LCP to drop by roughly the 180 milliseconds the CoreWebVitals.io research describes. The field data takes longer to update, so I give it a full month before I judge.
How to Sort Out Your Fonts This Week
Begin with one audit. Open your published site, look at the network requests, and find any font call going to a third-party domain. If you find one, upload those fonts to Webflow as custom fonts, remove the third-party tag, and add a single preload for the font your headline uses. Then run PageSpeed Insights before and after so you can prove the change worked.
For the bigger performance picture this fits into, my guide on Core Web Vitals and why INP is the metric your Webflow site is failing sets the priorities, and my walkthrough on fixing LCP with lazy loading and image optimization handles the other half of the LCP budget. Fonts and images are usually the two biggest wins on a content site.
If you want me to audit your site's font loading and Core Web Vitals, I am happy to take a look and tell you what is actually slowing it down. Let's chat.
Get your website crafted professionally
Let's create a stunning website that drive great results for your business
Read more blogs
Get in Touch
This form help clarify important questions in advance.
Please be as precise as possible as it will save our time.