5 min read
- Live chat
- Tawk.to
- Tooling
- Buy vs build
- Web integrations

Founder & Product Engineer
Full analysis
Most comparisons of live chat widgets are written by people who never had to keep one running. The feature tables are accurate and almost useless, because the thing that decides whether a widget works for you is rarely on them.
We shipped one on this site. Here is the shortlist we worked through, what we picked, and the three things that went wrong afterwards that no comparison had mentioned.
The shortlist
We looked at four tools chosen to cover genuinely different trade-offs, rather than four versions of the same product.
Tawk.to is free at a scale most small businesses never exhaust, with unlimited agents, and it earns its money on add-ons such as removing branding or hiring trained agents. The interface shows its age in places, and the automation builder takes an afternoon to understand.
Crisp is the better-designed product. Its free tier is real but narrow, and the features you end up wanting sit one paid step above it. If the widget is going to be a visible part of your brand, this is the one that looks it.
Intercom is aimed at funded software companies that already have a support team. The automation and product tours are genuinely stronger than anything else here. It is also priced for a company with a budget line for support tooling, which most small businesses do not have.
Chatwoot is open source and self-hostable, so per-seat cost disappears. What replaces it is your own time: hosting, updates, backups, and being the person who gets paged when it breaks on a Sunday.
What we picked, and why
We chose Tawk.to. Not because it won on features, but because of what the decision actually turned on.
The free tier is generous enough that it is not a trial in disguise. Unlimited agents matters more than it first looks, because it means adding a colleague later is not a pricing conversation.
The automation runs deeper than the price suggests. Triggers, shortcuts, canned responses and a knowledge base are all there without a paid step, which covers the repetitive half of most small-business enquiries.
The learning material is unusually good for a free product, and it exists in several formats. When you are configuring something at nine in the evening, the gap between good documentation and a support ticket is the gap between shipping and not shipping.
The reviews also hold up under scrutiny. Long, widespread use, with most complaints being about interface age rather than reliability or billing surprises. That is the right shape of complaint for something you are going to leave running.
Chatwoot was the closest alternative, and we would still recommend it to a team that already runs its own infrastructure. For us, self-hosting a support tool to avoid a subscription would have meant paying in the currency we have least of.
The part the comparisons leave out
Here is what actually cost us time. None of it appears in a feature table.
The launcher is close to impossible to target
We wanted our own branded launcher instead of the stock one. That sounds like a CSS job. It is not.
Tawk renders its stock launcher into a container with a randomised id, using iframes whose source is about:blank and elements with empty class attributes. There is no tawk or twk string anywhere in that DOM. Every selector you would reach for first, anything matching on id or source containing tawk, matches nothing at all.
The only stable hooks we found are Tawk's own internal mount points, the chat bubble and message preview elements, reachable with the :has() selector. If you plan to restyle the launcher, budget real time for it, and do not start by writing attribute selectors.
The related lesson is to stop the stock launcher from appearing at all, rather than trying to hide it afterwards. Starting the widget with autostart disabled, then revealing your own control once it is ready, removes the brief flash of the stock launcher that CSS cannot reliably suppress.
It will install twice if you are not careful
If you already manage tags through Google Tag Manager, there is a fair chance a Custom HTML tag for the chat widget is sitting in there from an earlier attempt. Adding the widget in code as well injects it twice.
The symptoms are confusing rather than obvious: two launchers appearing briefly, odd stacking behaviour, and events firing in duplicate. Pick one place to load it. We load ours in code and keep the tag manager version paused.
Consent decides when it can load at all
A chat widget sets cookies and, in most European setups, counts as marketing rather than strictly necessary. It cannot load until the visitor has agreed.
That has a consequence worth planning for: your page has to work correctly while the widget is simply not there, and the widget has to appear properly when consent arrives later in the same session. This is straightforward when you design for it, and awkward when you discover it after launch.
What we would tell someone choosing today
Pick on constraints, not on features.
- No budget and no infrastructure: Tawk.to.
- Your own servers and a preference for control: Chatwoot.
- The widget is a brand surface: Crisp.
- A support team and a real tooling budget: Intercom.
Then set aside a day for the three problems above, because the install is the easy part.
If the goal is to stop answering the same question forty times rather than to start more conversations, the widget may be the wrong layer to fix it at. That is what our AI integrations work usually ends up being about.
And before you install any of them, it is worth being honest about whether you can keep the promise a widget makes. We wrote about when adding live chat makes things worse, because an unanswered chat costs more than no chat at all.
Which live chat widget is best for a small business?
Is Tawk.to really free?
Why can I not hide the Tawk launcher with CSS?
Does a chat widget need cookie consent?
Share this article
Copy the article URL or use your device share sheet.
Related reading
Want help applying this?
Rough scope is fine. Tell us what you are building, we reply with options and tradeoffs, not a generic pitch.