Blog · Performance
How much does a chat widget slow down your website?
It depends on what the widget loads before anyone opens it. Some load the whole chat window on every page view; others show a small button and fetch the rest on click. Measure it: run Lighthouse with and without the widget, and check its requests in the network panel. TalkMerlin's loader is 1.5 KB gzipped, and the chat window loads only when opened.
By TalkMerlin
What a chat widget loads
A chat widget is a third-party script. You paste one line, and that line can pull in a lot more:
- the loader script itself;
- the code of the chat window, often a whole app;
- stylesheets, fonts, icons and avatar images;
- a live connection to the chat server;
- sometimes analytics, cookies or local storage entries.
Third parties are everywhere. The Web Almanac 2025 found that the share of pages with one or more third parties remains at 90% or more. Of the chat and contact category it says: "These scripts are generally heavier in weight."
Why it matters
Weight turns into time, most of all on phones. Every byte has to download, and every script has to be parsed and run on the main thread, where it competes with the visitor's taps and scrolls. Google's Core Web Vitals measure that experience, and many sites miss the mark: the Web Almanac 2025 reports that 48% of mobile websites had good Core Web Vitals in 2025, against 56% on desktop.
A chat is rarely the only cause. But it runs on every page, for every visitor, including the many who never open it.
How to measure it
- Run Lighthouse twice. In Chrome, open DevTools, go to the Lighthouse tab and run a mobile report on a typical page. Then run it on the same page without the widget. Compare Total Blocking Time and Largest Contentful Paint. Run each test three times, because single runs vary. Lighthouse also lists third-party code in its 3rd parties insight.
- Read the network panel. In DevTools, open Network, tick Disable cache and reload. Type the widget's domain in the filter. The request count and the transferred size are what every visitor downloads before touching the chat.
- Watch what loads on click. Clear the panel, open the chat and see what arrives. A well-built widget loads its heavy part here, not with the page.
- Check the browser storage. Under Application, look at cookies and local storage before you open the chat. That tells you what the widget stores for every visitor.
The fix: load the chat on click
Chrome's Lighthouse documentation calls this pattern a facade: a light stand-in that looks like the embed, with the real thing loaded when the visitor interacts. In its words, "video embeds, social button widgets, and chat widgets can all employ the facade pattern." The trade-off is a short wait the first time someone opens the chat.
What TalkMerlin loads
- The loader, 1.5 KB gzipped. It is added with
async, so it does not hold up your page. It draws the chat button with inline styles and an inline icon, so there are no fonts, images or stylesheets to download. - A small heartbeat. The loader sends one small request when the page loads, then one every 30 seconds while the tab is visible. That is what shows you live visitors and the pages they view.
- The chat window, only when needed. Its code loads when the visitor opens the chat, when your proactive message fires, or when they already have a conversation going. In the current build it is about 5 KB gzipped.
- Nothing stored before a chat. The loader stores nothing in the visitor's browser until they start a chat. Our post on live chat without cookies explains why that matters.
We have not measured other widgets for this post. Their weight depends on the product, the plan and your settings, so test the one you are considering on your own pages.
A quick checklist
- Does the widget load its chat window before anyone clicks?
- How many requests and kilobytes does it add on page load, with the cache off?
- Does Total Blocking Time go up with the widget on?
- Does it load fonts or images on every page?
- Does it store anything in the browser before a chat?
Every TalkMerlin plan, Free included, uses the same loader. See all features.
Questions people ask
How do I check whether my chat widget slows my site?
Run a Lighthouse mobile report on a page with the widget and without it, three times each, and compare Total Blocking Time and Largest Contentful Paint. Then check the widget's requests in the DevTools network panel with the cache disabled.
Does an async script still slow the page?
It does not stop the page from rendering while it downloads, but it still has to download and run on the main thread. What counts is how much it loads and runs, and when.
How big is the TalkMerlin chat widget?
The loader is 1.5 KB gzipped and draws the chat button. The chat window loads only when a visitor opens it, and is about 5 KB gzipped in the current build.
Will a chat widget hurt my Core Web Vitals?
A heavy one can, mostly through JavaScript that runs while the page loads. A widget that waits for a click before loading its chat window adds much less up front. Measure your own pages to be sure.