How much does a chat widget slow your page?#
Last updated
A chat widget is code that runs on every page of your store, not just the pages where someone chats. So we measured what Hay.chat, Tidio, Gorgias and Crisp each add to the same product page, before anyone clicks the chat button. This page shows the numbers, how we got them and how you can check them yourself.
The results#
Measured on 27 October 2026 with Lighthouse 12.8.2, mobile, on one test product page. Each row is the median of 5 runs (8 for Hay.chat). Each widget loaded from its vendor's own servers with the standard embed code.
| Widget | Downloaded before any click | Requests | Main-thread time | Blocking time added | Lighthouse score |
|---|---|---|---|---|---|
| No widget (baseline) | 0 KB | 0 | 0 ms | 0 ms | 100 |
| Hay.chat | 126 KB | 2 | 86 ms | 36 ms | 100 |
| Tidio | 513 KB | 8 | 198 ms | 18 ms | 100 |
| Gorgias | 585 KB | 27 | 687 ms | 129 ms | 99 |
| Crisp | Not measurable (see below) | 1 | 13 ms | 0 ms | 100 |
What the numbers say:
- Hay.chat downloaded about 4 times less than Tidio and 4.6 times less than Gorgias, in 2 requests: the widget script and one small settings call.
- Gorgias kept the browser busiest: 0.7 seconds of main-thread work and 27 requests. Tidio's 8 requests included two web fonts and two notification sounds.
- Tidio added less blocking time than Hay.chat in this test (18 ms against 36 ms), even though it downloaded four times more. Blocking time is the part of the work that can delay a tap or a scroll.
- The Lighthouse score barely moved for anyone. On a light page like this one, all four widgets scored 99 or 100, and first and largest contentful paint didn't change in any way that stood out from run-to-run noise. The cost shows up in bytes, requests and main-thread time, which matter most on a real phone on a slow connection.
Why Crisp has no number#
Crisp's loader script (client.crisp.chat/l.js, version 4.15.1, read on 27 October 2026) contains a list of user agents it won't load the chat for, including "Lighthouse", "GTmetrix", "HeadlessChrome" and "Googlebot". So when a speed test visits your page, Crisp loads only its small loader, and Lighthouse saw about 3 KB. Changing Lighthouse's user agent to a normal phone browser didn't change the result, so we couldn't measure what your visitors download.
Crisp's own help centre says the chatbox is about 90 KB of scripts and 35 KB of styles, compressed (Will Crisp slow down my website?). We haven't verified that figure.
Hay.chat doesn't skip speed tests#
Hay.chat never checks for Lighthouse, PageSpeed Insights, GTmetrix or any other speed-test user agent. What a speed test measures is what your customers download. If a widget hides from the test, the score looks better but your visitors still pay for it, and you can't see that cost anywhere.
What we're changing#
The table above is the Hay.chat widget as it ran in production on 27 October 2026: one 126 KB file, sent without compression. We're rolling out two changes:
- Compression. In the same test, the same file sent with brotli compression downloaded 39 KB instead of 126 KB.
- A small loader. The page first loads only the chat button and its settings call. The rest of the chat loads after your page has finished loading, or, if you choose, only when a visitor reaches for the button. In our test, a button that loads the chat only on hover, touch or click added nothing measurable to the page: 0 KB and 0 requests until then.
When these are live in production, we'll run the same test again and update this table, with the new date.
How we measured#
- Tool. Lighthouse 12.8.2 from the command line, in headless Chrome, performance category only. Mobile emulation with Lighthouse's default simulated throttling: a Moto G Power, a slow 4G connection and a 4x CPU slowdown.
- Page. A static product page: a 112 KB product photo, a heading, a price, an "Add to cart" button and 12 paragraphs of text. Every variant was the same page with only the chat embed changed, plus one copy with no widget at all.
- Embeds. Each vendor's standard embed code, pointing at its production servers, using each vendor's own website account: Hay.chat's workspace that runs on hay.chat, Tidio's site key from tidio.com, Gorgias's from gorgias.com and Crisp's website ID from crisp.chat.
- Runs. 5 runs per variant, 8 for Hay.chat (one run hit a machine stall, which the median absorbs). Every number is the median.
- What counts as the widget. Every request to the vendor's own domains. Bytes are transfer sizes, as compressed by the vendor's server. Main-thread and blocking time come from Lighthouse's third-party summary for the vendor's scripts, already scaled for the 4x CPU slowdown.
- Before any click. Lighthouse loads the page and waits for the network to go quiet. Nobody hovers or clicks, so the table shows what each widget costs a visitor who never opens the chat.
Check it yourself#
You need Node.js and Google Chrome.
-
Save a product page from your store, or any simple page, twice: once with no chat widget and once with the widget's embed code before
</body>. -
Serve both files locally, for example with
npx serve. -
Run Lighthouse 5 times on each page:
npx lighthouse@12.8.2 http://localhost:3000/with-widget.html --only-categories=performance --chrome-flags="--headless=new" --output=json --output-path=with-widget-1.json -
In each report, open
network-requestsand add up the transfer size of the requests to the widget's domains, then take the median across runs.third-party-summarygives the main-thread and blocking time per vendor.
For Hay.chat, the widget's source code includes the same test as a script: webchat/scripts/perf/lighthouse.mjs runs Lighthouse on a test page with and without the widget, in each loading mode. A second check runs on every change to the widget and fails the build if the button's script grows past 10 KB compressed, or if the "load on interaction" mode requests anything before a visitor reaches for the button.
Got different numbers? Email hello@hay.chat with your method and results, and we'll look into it.
Try it on your own store#
Want to see what Hay.chat adds to your own pages? Start a 30-day free trial, add the widget and run Lighthouse before and after. You won't need a credit card.