Every major chat tool lets you change the color and corner of its chat button, and most let you hide it and open the chat from your own button with a line of JavaScript. Far fewer let you upload your own icon, and none of the eight we checked offers an animated launcher or character. If you want more than a recolored bubble, you either build your own button or add a launcher layer on top of your chat tool.
How we compared
We looked only at the chat button itself (the bubble in the corner that opens the chat), not the chat window, and only at what each tool offers natively:
- Brand color: can you change the button's color?
- Custom icon or image: can you replace the default icon with your own?
- Animation: can the button animate or be a character?
- Position: which corners, and can you adjust the offset?
- Your own button: can you hide the default button and open the chat from your own element with the official JavaScript API?
- Mobile: can you hide it or change it on phones?
- Plan needed: is launcher customization limited to some plans?
- Notable limitation: the main thing you can't do.
Comparison: native chat button customization
| Tool | Brand color | Custom icon | Animation | Hide + open from your button | Hide on mobile | Plan needed | Best for |
|---|---|---|---|---|---|---|---|
| Intercom | Yes | Yes (upload) | No | Yes: hide_default_launcher | Via display rules or JS | Advanced / Expert to edit the launcher | Teams on a higher Intercom plan who want their logo on the button |
| Zendesk | Yes | No (square, circle or build your own) | No | Yes: zE('messenger','open') | Unclear (mobile offset via API) | All Suite plans | Zendesk teams fine with a recolored shape |
| Tidio | Yes | Unclear | Unclear | Yes: tidioChatApi.open() | Yes, per device | Logo upload: Plus | Small shops wanting quick per-device settings |
| Crisp | Yes (custom colors on paid plans) | No | No | Yes: chat:hide + chat:open | Yes | Paid for custom colors | Teams that will build their own button |
| HubSpot | Yes | Unclear | No | Partly: widget.open(), no documented hide | Unclear | All plans | HubSpot CRM users who want it on-brand quickly |
| Tawk.to | Yes | Unclear (image only in the side Attention Grabber) | No | Yes: Tawk_API.hideWidget() + maximize() | Yes | None stated | Free live chat with lots of placement presets |
| LiveChat | Yes | No (separate Eye-catcher image) | Only the Eye-catcher (GIF) | Yes: hide icon + maximize | Yes | Eye-catcher image: Team | Teams wanting a bar or bubble plus a promo image |
| Freshchat | Yes | Yes (custom icon or text) | No | Yes: hideChatButton + fcWidget.open() | Unclear | All plans | Freshworks users wanting a custom icon without code |
| Chatmello (launcher layer) | Yes, any colors | Yes (50+ characters or your upload) | Yes, animated characters | Built in: replaces the button for you | Yes | Free plan available | Sites that want a friendly, animated button without changing chat tools |
Tool by tool
Intercom
- Brand color
- Yes. The launcher uses the brand's action (primary) color.
- Custom icon or image
- Yes, you can upload a custom launcher image; on the Essential plan these fields can't be edited.
- Animation
- None documented.
- Position
- Left or right, with side and bottom spacing (JavaScript:
alignment,horizontal_padding,vertical_padding). - Your own button
- Yes:
hide_default_launcher: true, thenIntercom('show'), or setcustom_launcher_selector. - Mobile
- No mobile toggle; use display conditions or set
hide_default_launcherfrom your own mobile check. - Plan needed
- Full launcher customization on Advanced and Expert.
- Notable limitation
- The launcher icon can't be enlarged, and it has one position per site.
- Source & check date
- Intercom Help: set up and customize the Messenger, Intercom developer docs; checked October 18, 2026
Zendesk
- Brand color
- Yes: the primary color in Admin Center (Channels → Messaging → Style), or via the JavaScript customization API.
- Custom icon or image
- No image upload documented. Choose a square or circle shape, or "Custom launcher" to remove the button and build your own.
- Animation
- None documented.
- Position
- Bottom left or right with an offset (
zE('messenger:set','customization',…)). - Your own button
- Yes:
zE('messenger','open'),zE('messenger','hide'), or the Custom launcher option. - Mobile
- A separate mobile offset via the API; a hide-on-mobile setting is unclear.
- Plan needed
- All Suite plans.
- Notable limitation
- No custom icon: beyond the preset shapes you replace the launcher entirely with your own code.
- Source & check date
- Zendesk: customizing the Web Widget, Zendesk Messaging Web SDK; checked October 18, 2026
Tidio
- Brand color
- Yes: themes or a custom color in the appearance settings, or
tidioChatApi.setColorPalette(). - Custom icon or image
- Unclear. A brand logo upload is documented on the Plus plan; replacing the launcher icon isn't.
- Animation
- Unclear; none documented.
- Position
- Bottom right or left, set separately for desktop and mobile.
- Your own button
- Yes:
tidioChatApi.hide()andtidioChatApi.open(); Tidio documents opening the chat from a custom button. - Mobile
- Separate mobile position, three button sizes, and visibility per device.
- Plan needed
- Logo upload on Plus; other launcher settings unclear.
- Notable limitation
- Button styles are corner or sidebar, with no documented custom launcher image.
- Source & check date
- Tidio developer docs: widget methods, Tidio Help: customize your chat widget; checked October 18, 2026
Crisp
- Brand color
- Yes. Preset themes on every plan; custom colors on paid plans.
- Custom icon or image
- No native option. Crisp's own guide says to replace the button with a custom one.
- Animation
- None documented.
- Position
- Right by default, or left (
position:reverse); offsets unclear. - Your own button
- Yes:
$crisp.push(["do","chat:hide"]), then$crisp.push(["do","chat:open"]). - Mobile
- Yes: "Hide chatbox on mobile devices" (
hide:on:mobile). - Plan needed
- Paid for custom colors.
- Notable limitation
- Free plan colors are limited to presets, and the icon can't be changed natively.
- Source & check date
- Crisp Help: customize the chatbox, Crisp: replace the chatbox button, Crisp Web SDK; checked October 18, 2026
HubSpot
- Brand color
- Yes: account branding by default, or a preset, hex value or color picker in the chat channel settings.
- Custom icon or image
- Unclear; only the chat heading name and avatar are documented as customizable.
- Animation
- None documented.
- Position
- Left or right; visitors can be allowed to drag it. Offsets unclear.
- Your own button
- Partly:
window.HubSpotConversations.widget.open()and.close(), but no documented setting to hide the default launcher while keeping the chat. - Mobile
- Choose a welcome preview or only the launcher; a hide-on-mobile setting is unclear.
- Plan needed
- Customization on all plans.
- Notable limitation
- No official way to hide the default launcher and keep the widget usable.
- Source & check date
- HubSpot: customize a chat channel, HubSpot chat widget SDK; checked October 18, 2026
Tawk.to
- Brand color
- Yes, in the widget appearance settings.
- Custom icon or image
- Unclear for the button itself; an uploaded image (PNG or JPG, 1 MB) can show in the Attention Grabber next to it.
- Animation
- None documented.
- Position
- Six presets, set separately for desktop and mobile; pixel offsets via
Tawk_API.customStyle. - Your own button
- Yes:
Tawk_API.hideWidget(), thenTawk_API.maximize(). - Mobile
- Yes: hide on mobile, hide on load on mobile, and a separate mobile type and position.
- Plan needed
- None stated.
- Notable limitation
- The Attention Grabber image shows only on desktop and only while you're online.
- Source & check date
- tawk.to Help: widget appearance, tawk.to JavaScript API; checked October 18, 2026
LiveChat
- Brand color
- Yes: theme presets or a color picker, light or dark mode, and a bar or bubble style.
- Custom icon or image
- No icon upload documented; a separate Eye-catcher image can sit beside it (Team plan).
- Animation
- Not for the launcher; the Eye-catcher can be an animated GIF.
- Position
- Left or right, with bottom and side spacing.
- Your own button
- Yes: "Always hide minimized widget icon", then
LiveChatWidget.call("maximize"). - Mobile
- Yes: show or hide on mobile, or custom mobile settings.
- Plan needed
- Eye-catcher image on Team; other launcher settings unclear.
- Notable limitation
- The launcher is a bar or a bubble; the only custom image is the separate Eye-catcher.
- Source & check date
- LiveChat Help: customize your chat, LiveChat: Eye-catcher, Chat Widget JavaScript API; checked October 18, 2026
Freshchat
- Brand color
- Yes: a separate launcher color in the web widget settings.
- Custom icon or image
- Yes: a custom icon or a button with custom text.
- Animation
- None documented.
- Position
- Bottom left or right, with pixel offsets.
- Your own button
- Yes:
hideChatButton: true, thenwindow.fcWidget.open(). - Mobile
- Unclear; no mobile-specific launcher option documented.
- Plan needed
- Launcher settings on all plans.
- Notable limitation
- No documented mobile-specific launcher settings or animation.
- Source & check date
- Freshworks: configure the Freshchat web widget, Freshchat Web SDK; checked October 18, 2026
Chatmello (launcher layer)
- Brand color
- Yes: any main and accent color.
- Custom icon or image
- Yes: 50+ characters, or upload your own mascot or logo.
- Animation
- Yes: characters greet, blink, follow the cursor, think while the chat opens and celebrate; uploaded pictures move as one piece.
- Position
- Any corner, with offsets; it can also wander along the edge or peek.
- Your own button
- That's what it is: it hides your chat tool's button and opens the chat when the character is clicked.
- Mobile
- Yes: hide on phones, plus per-page rules.
- Plan needed
- Free plan available; a paid plan adds more websites.
- Notable limitation
- It changes only the button, not the chat window. It adds a script (about 12 KB). For chat tools without a built-in integration, it can't press a button that sits inside the tool's own iframe.
- Source & check date
- Chatmello FAQ and integrations; checked October 18, 2026
Native customization or a launcher layer?
Stay native if a recolored button in the right corner is enough, or if your plan already lets you upload your logo (Intercom on Advanced or Expert, Freshchat). It's free, needs no extra script, and your chat tool supports it.
Build your own button if you have a developer and want full control: most tools let you hide their launcher and call an open method from your element. You then own the design, the mobile behavior and keeping it working when the chat tool changes.
Add a launcher layer like Chatmello if you want an animated, on-brand button without writing code, or you might switch chat tools later and want to keep the same button. The trade-off is one more script on your site.
When you don't need Chatmello
- Your chat tool's native color and icon options already match your brand.
- You want to change the chat window itself (Chatmello only replaces the button).
- You have a strict no-third-party-scripts policy.
- You already built a custom button with your chat tool's JavaScript API and you're happy with it.
Frequently asked questions
Can I change the Intercom launcher icon?
Yes, Intercom lets you upload a custom launcher image, but not on the Essential plan, and the icon can't be enlarged. You can also hide the launcher and open the Messenger from your own button.
Can I upload my own icon for the Zendesk chat button?
No. Zendesk offers square and circle shapes and a "Custom launcher" option that removes the button so you can build your own.
Can a chat button be animated?
Not natively in any of the eight tools we checked. LiveChat's Eye-catcher can be an animated GIF, but it's a separate image next to the button. For an animated button you need your own code or a launcher layer such as Chatmello.
How do I open my chat from my own button?
Most tools have an official JavaScript method: Intercom('show'), zE('messenger','open'), tidioChatApi.open(), $crisp.push(["do","chat:open"]), Tawk_API.maximize(), LiveChatWidget.call("maximize") and window.fcWidget.open().
Can I hide the chat button on mobile?
Crisp, Tidio, Tawk.to and LiveChat have a setting for it. With Intercom you use display rules or JavaScript. For Zendesk, HubSpot and Freshchat the docs don't clearly offer one.
Does Chatmello replace my chat tool?
No. It replaces only the button. Conversations, your inbox, bots and routing stay in your chat tool.
Does Chatmello work with every chat tool?
It has built-in integrations for 17, including all eight above. For others it can usually press the chat button on your page, but not when that button is inside the chat tool's own iframe.
Is Chatmello free?
There's a free plan for one website with every character and chat tool. A paid plan adds more websites.
Will an extra launcher slow down my site?
Chatmello's script is about 12 KB, loads after your page and fetches only the character you use. It's still one more script, which matters if you count every request.
Sources
- Intercom: set up and customize the Messenger and Messenger attributes, checked October 18, 2026
- Zendesk: Web Widget customization and Messaging Web SDK, checked October 18, 2026
- Tidio developer docs and Tidio Help: customize your widget, checked October 18, 2026
- Crisp: customize the chatbox, hide on mobile and Web SDK, checked October 18, 2026
- HubSpot: customize a chat channel and chat widget SDK, checked October 18, 2026
- tawk.to: widget appearance, position and JavaScript API, checked October 18, 2026
- LiveChat: customize your chat, widget visibility and JavaScript API, checked October 18, 2026
- Freshchat: configure the web widget and Web SDK, checked October 18, 2026
Learn more
- Chatmello integrations for all 17 chat tools
- Animated Intercom chat button
- Animated Zendesk chat button
- Browse the characters or upload your own mascot
- Install guides WordPress, Shopify, Webflow and more
- Pricing
- FAQ