Share buttons that stay out of the way.no account required
AddToSite

← All customization

What gets shared

Change what one service posts

Give a service a template of your own and the widget uses it instead of the built-in one. This is how you add a via handle, a hashtag, or a different intent URL entirely.

The code

<div class="ats_kit ats_kit_size_32">
  <a class="ats_btn_x"></a>
  <a class="ats_btn_facebook"></a>
  <a class="ats_btn_linkedin"></a>
  <a class="ats_dd"></a>
</div>

A template, not a message

There is no option for the text to post, because there is no such thing across services. On X the message is the text parameter; on Bluesky and WhatsApp the URL is baked into the same field as the text. An option promising to set the message would produce the link twice on four services. Replacing the endpoint is honest about what you are taking over.

The slots you can use

The same ones the built-in templates use.

{url}       the page being shared, already encoded
{title}     the title, already encoded
{image}     the image, when there is one
{instance}  the Mastodon instance

What is refused

Only https, http, mailto and sms are accepted, checked as a whitelist rather than a list of things to ban. Anything else is ignored and the built-in template is used, so a typo costs you the customisation, never the button.

Live demo

An article worth passing on

The X button posts through a template that appends a via handle. The others are untouched.

Services (3 selected)

Button size

Shape

Behaviour

<script>
window.ats_config = window.ats_config || {};
window.ats_config.share_url = {
  "x": "https://x.com/intent/post?url={url}&text={title}&via=addtosite"
};
</script>

<div class="ats_kit ats_kit_size_32">
  <a class="ats_btn_x"></a>
  <a class="ats_btn_facebook"></a>
  <a class="ats_btn_linkedin"></a>
  <a class="ats_dd"></a>
</div>

<script async src="//static.addtosite.com/widget.js"></script>

Related

More in What gets shared