How is Crisp optimised to not slow down your website's loading
Understand how the Crisp chatbox is optimized for website performance and what to check when automated tools report warnings.
Crisp is built to load asynchronously and keep the chatbox lightweight. Automated performance tools can still report warnings because they do not always account for compression, caching, HTTP/2, delayed loading, and user experience context.
How Crisp loads on your website
The Crisp chatbox is designed to avoid blocking your main page content. It loads asynchronously after your website content starts loading, so it should not prevent your page HTML, stylesheets, or core scripts from rendering.
Crisp also avoids heavy frameworks in the chatbox code and uses a caching strategy that pulls only what is needed.
Approximate compressed asset sizes:
- Scripts → about
90KB - Stylesheets → about
35KB - Images → included in stylesheets to reduce visual glitches during loading
- Fonts → about
10KBper Latin font group; other alphabets may vary
What Crisp does to optimize performance
Asynchronous loading
Crisp loads asynchronously so the chatbox does not block your website's main rendering path.
Long-duration caching
Chatbox scripts, stylesheets, and assets are cached by the browser. When Crisp updates the chatbox, a lightweight cache check allows visitors to pull updated assets.
Low-latency chat servers
Crisp uses regional chat servers so visitors connect to an endpoint close to them. The chatbox establishes its WebSocket connection after assets are loaded.
Distributed CDN and modern HTTP
Crisp serves assets through a distributed CDN and modern HTTP protocols. This reduces connection overhead compared with older request models.
Compression
Crisp compresses JavaScript and CSS using modern compression methods when available, along with minification to reduce transferred bytes.
Optimized fonts
Instead of loading one large font containing every character set, Crisp loads only the required UTF-8 sub-ranges for the language in use.
On-demand feature loading
Crisp does not load heavier feature libraries such as MagicBrowse or calls by default. They are loaded only when needed.
How to read automated performance reports
Tools such as Lighthouse, GTmetrix, and similar scanners can be useful, but they can also overstate the impact of third-party widgets.
Common reasons reports look worse than real usage:
- Uncompressed size display → tools may show raw file size instead of compressed transfer size
- HTTP/1.1 assumptions → tools may count requests differently from real HTTP/2 behavior
- Vanity metrics → a single score may not reflect real user experience or business outcomes
- Third-party timing → a delayed widget can still appear in the report even when it does not block page content
Defer chatbox loading manually
If you still want every website resource to load before Crisp, you can load the Crisp script after the page event you choose. This is usually not necessary, but it can satisfy strict performance requirements.
Example deferred loading snippet:
document.addEventListener("DOMContentLoaded", function() {
window.$crisp=[];
window.CRISP_WEBSITE_ID="YOUR_WEBSITE_ID";
(function(){
d=document;
s=d.createElement("script");
s.src="https://client.crisp.chat/l.js";
s.async=1;
d.getElementsByTagName("head")[0].appendChild(s);
})();
});
Updated on: 03/05/2026
Thank you!