Chat buttons

How to customize your website's chat button

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

Native launcher options per official docs, checked October 18, 2026. "Unclear" = not stated in the docs.
ToolBrand colorCustom iconAnimationHide + open from your buttonHide on mobilePlan neededBest for
IntercomYesYes (upload)NoYes: hide_default_launcherVia display rules or JSAdvanced / Expert to edit the launcherTeams on a higher Intercom plan who want their logo on the button
ZendeskYesNo (square, circle or build your own)NoYes: zE('messenger','open')Unclear (mobile offset via API)All Suite plansZendesk teams fine with a recolored shape
TidioYesUnclearUnclearYes: tidioChatApi.open()Yes, per deviceLogo upload: PlusSmall shops wanting quick per-device settings
CrispYes (custom colors on paid plans)NoNoYes: chat:hide + chat:openYesPaid for custom colorsTeams that will build their own button
HubSpotYesUnclearNoPartly: widget.open(), no documented hideUnclearAll plansHubSpot CRM users who want it on-brand quickly
Tawk.toYesUnclear (image only in the side Attention Grabber)NoYes: Tawk_API.hideWidget() + maximize()YesNone statedFree live chat with lots of placement presets
LiveChatYesNo (separate Eye-catcher image)Only the Eye-catcher (GIF)Yes: hide icon + maximizeYesEye-catcher image: TeamTeams wanting a bar or bubble plus a promo image
FreshchatYesYes (custom icon or text)NoYes: hideChatButton + fcWidget.open()UnclearAll plansFreshworks users wanting a custom icon without code
Chatmello (launcher layer)Yes, any colorsYes (50+ characters or your upload)Yes, animated charactersBuilt in: replaces the button for youYesFree plan availableSites 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, then Intercom('show'), or set custom_launcher_selector.
Mobile
No mobile toggle; use display conditions or set hide_default_launcher from 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() and tidioChatApi.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(), then Tawk_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, then window.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

Learn more