Widget speed: how much does a chat widget cost your PageSpeed score?
Quick answer
Most live-chat widgets ship 200–400 KB of JavaScript (gzipped) — 1 MB+ once the browser unpacks and parses it. Toran's widget is capped at under 100 KB gzipped, and that cap is enforced by our build pipeline on every release, not measured once for a brochure. Below: the like-for-like methodology, and the exact steps to verify any vendor's number — including ours — in your own browser.
The like-for-like methodology
Widget-weight claims are easy to game, so any honest comparison has to fix four rules up front:
-
1. Gzipped transfer size, same basis for everyone. Compare what actually travels over the network. Mixing one vendor's gzipped number with another's parsed number is the most common trick — the parsed figure is several times larger.
-
2. Count everything the widget loads. The visible
<script>tag is often a tiny loader that pulls in the real bundle, vendor chunks, fonts, and analytics afterwards. Sum every request the widget initiates, not the stub. -
3. Cold cache. First visits are where PageSpeed and real visitors hurt. Disable the cache when you measure.
-
4. Default configuration. Measure the widget as a real customer ships it — default theme, default features — not a stripped demo build.
On that basis, our internal April 2026 sweep of popular chat widgets landed in the 200–400 KB gzipped range (we re-check quarterly). Toran's bundle stays under 100 KB gzipped on the same basis.
A ceiling enforced in CI — not a marketing measurement
The number we publish is deliberately a maximum, not a snapshot. Every Toran release runs a size check that gzips the built widget bundle and fails the build if it exceeds 100 KB. A point-in-time measurement flatters the vendor and rots quietly as features pile up; an enforced ceiling means the claim on this page is tested again on every single deploy. If we ever blow the budget, we can't ship until we've earned the bytes back.
Don't take our word for it — vendors admit the cost
The clearest evidence that widget weight hurts PageSpeed comes from widget vendors themselves. Elfsight's own help center opens an article by asking, "Have you noticed that your page with the Elfsight widget has low PageSpeed scores?" — and then walks customers through lazy-loading the widget to soften the hit (their article). When the vendor's own documentation teaches mitigation, the performance cost isn't a competitor's smear — it's the product working as built. Lazy-loading is a real mitigation, but it defers the cost rather than removing it: the bytes still arrive, just later. The structural fix is a widget that's small in the first place.
See the full Toran vs Elfsight comparison or the compare hub for the feature-by-feature view.
How to verify it yourself
Ten minutes, no tooling to install. Run the same test on Toran and on whatever widget you use today:
DevTools Network tab (exact bytes)
- Open a page that embeds the widget; open DevTools (F12) → Network tab.
- Tick Disable cache, filter by JS, and reload the page.
- Sort by domain and sum the "Size" (transferred) column for every request the widget's domains initiate — loader, chunks, vendor files.
- That transferred total is the gzipped, like-for-like number. (The "Resource size" column shows the parsed weight the browser must execute — compare it for the same widget and you'll see the unpacking multiplier.)
PageSpeed Insights (the SEO view)
- Run your page through pagespeed.web.dev.
- In the diagnostics, open "Reduce the impact of third-party code" — it lists each third party's transfer size and main-thread blocking time.
- For a controlled A/B: run a staging page with the widget snippet, remove the snippet, and run it again. The delta is the widget's true PageSpeed price.
How Toran fits
Toran ships the AI concierge, lead scoring, and channel routing inside a bundle capped under 100 KB gzipped — async, non-render-blocking, and served from Cloudflare's edge, so your PageSpeed score barely notices it's there. The free plan covers two agents, two AI conversations a day, and unlimited widget views with no card; paid plans start at $19/mo for more agents and channels. Don't take our word for it: drop the snippet on a staging page and run the tests above. Then see how Toran compares on everything else.
Frequently asked questions
Is Toran's under-100 KB figure a measured average or a maximum?
It's an enforced maximum. Our CI pipeline weighs the gzipped widget bundle on every release and fails the build if it exceeds 100 KB. We publish the ceiling rather than a point-in-time measurement so the public claim can never silently rot as the product grows.
Why compare gzipped size instead of parsed size?
Gzipped transfer size is what travels over the network, and it's the basis vendors' own numbers usually use — so it's the only fair, like-for-like comparison. Parsed (uncompressed) size is much larger and is what the browser must actually parse and execute on the main thread; heavy widgets in the 200–400 KB gzipped range typically unpack to 1 MB+ of JavaScript. Compare gzipped to gzipped, then remember parsing costs CPU on top.
How was the 200–400 KB competitor range measured?
Internal measurement of popular chat/live-chat widgets (April 2026): total gzipped JavaScript transferred on a cold load of a blank test page, every chunk and vendor file counted, not just the loader stub. We re-check the range quarterly. Your numbers may vary by configuration — which is exactly why this page shows you how to measure any widget yourself.
Does widget weight really affect SEO?
Indirectly but measurably: third-party JavaScript affects Core Web Vitals (especially interactivity and main-thread blocking on mobile), and Core Web Vitals feed Google's page-experience signals. Google's own PageSpeed Insights flags heavy widgets under 'Reduce the impact of third-party code.' If rankings matter to you, your chat widget's bytes are part of your SEO budget.