How to create a URL button in a post

URL buttons (inline keyboard buttons) are one of Telegram's most powerful features for driving engagement and traffic from your channel posts. To create a URL button in a Telegram channel post, you need to use a Telegram bot that supports inline keyboards — the most popular options are @ControllerBot, @PostBot, or your own custom bot via the Bot API. Native Telegram channel posting does not support adding URL buttons without a bot.

What Are URL Buttons in Telegram?

URL buttons are clickable inline buttons that appear directly below a Telegram post. Unlike regular hyperlinks embedded in text, these buttons are visually distinct, tap-friendly, and highly effective at driving clicks. They appear as rounded rectangular buttons with customizable labels.

There are two types of inline buttons in Telegram:

  • URL buttons — open a web link when tapped
  • Callback buttons — trigger a bot action (not relevant for channel posts)

For channel content, URL buttons are the standard choice. They can link to websites, other Telegram channels, specific posts, app download pages, or any valid URL.

Why Use URL Buttons Instead of Text Links?

URL buttons outperform regular text hyperlinks for several reasons:

  • Higher click-through rate (CTR) — buttons are more visually prominent than inline links
  • Mobile-friendly — large tap targets work better on smartphones
  • Multiple links organized — you can add several buttons in rows
  • Professional appearance — gives your channel a polished, branded look

How to Create URL Buttons: Step-by-Step

Method 1: Using @ControllerBot (Most Popular)

@ControllerBot is the most widely used bot for adding URL buttons to Telegram channel posts.

Step 1: Connect the Bot to Your Channel

  1. Open @ControllerBot in Telegram and press /start
  2. Select "Add Channel"
  3. Add @ControllerBot as an administrator to your channel (it needs permission to post messages)
  4. Forward any message from your channel to the bot to confirm ownership

Step 2: Create a Post with a URL Button

  1. Send /newpost to @ControllerBot
  2. Select your channel from the list
  3. Type or paste your post content (text, photo, video — any format)
  4. When prompted, select "Add URL Buttons"
  5. Enter button data in this format:
Button Text - https://example.com

For multiple buttons on one row, separate them with |:

Website - https://example.com | Blog - https://blog.example.com

For buttons on separate rows, use new lines:

Read More - https://example.com
Subscribe - https://t.me/yourchannel

Step 3: Preview and Publish

  1. Review the preview the bot shows you
  2. Select "Publish" to post immediately or "Schedule" to set a date and time
  3. The post appears in your channel with the URL buttons attached

Method 2: Using @PostBot

@PostBot offers a similar workflow with a slightly different interface.

  1. Start @PostBot and connect your channel
  2. Create a new post and add your content
  3. Use the button markup format: [Button Text](buttonurl://https://example.com)
  4. Publish to your channel

Method 3: Using the Telegram Bot API (For Developers)

If you run your own bot, you can add URL buttons programmatically using the InlineKeyboardMarkup parameter in the sendMessage, sendPhoto, or other send methods.

{
  "chat_id": "@yourchannel",
  "text": "Check out our latest article!",
  "reply_markup": {
    "inline_keyboard": [
      [
        {"text": "Read Article", "url": "https://example.com/article"},
        {"text": "Visit Website", "url": "https://example.com"}
      ],
      [
        {"text": "Join Discussion", "url": "https://t.me/yourgroupchat"}
      ]
    ]
  }
}

Each inner array represents a row of buttons. In this example, the first row has two buttons side by side, and the second row has one button spanning the full width.

Button Layout and Design

Rows and Columns

Telegram supports up to 8 buttons per row and unlimited rows, but practical limits apply:

  • 1 button per row — full-width, maximum visibility
  • 2 buttons per row — good for offering two equal options (e.g., "iOS" | "Android")
  • 3 buttons per row — works for navigation-style layouts
  • 4+ buttons per row — text gets truncated on mobile; avoid unless labels are very short

Button Text Length

  • Keep button labels under 20 characters for best display on mobile
  • Use action verbs: "Read More", "Download", "Join Now", "Get Started"
  • Avoid generic labels like "Click Here" — be specific about what happens

Common Use Cases for URL Buttons

Use Case Button Text Example URL Target Blog post link "Read Full Article" Your website/blog Product page "View Product" E-commerce page App download "Download App" App Store / Google Play Related channel "More Content" Another Telegram channel Feedback form "Leave Feedback" Google Form or Typeform Web version "View on Web" tgchannel.space blog page

If your channel is mirrored on tgchannel.space, adding a "Read on Web" button linking to your blog's web version can improve SEO indexing and make content accessible to non-Telegram users.

Tips & Best Practices

  • Limit to 1-3 buttons per post. Too many buttons overwhelm readers and dilute clicks. Posts with 1-2 well-placed buttons consistently achieve the highest CTR.
  • Use strong call-to-action labels. Instead of "Link," write "Read the Full Guide" or "Get 20% Off." Specific labels set clear expectations and drive more clicks.
  • Place your most important button first. The top-left button in the first row gets the most attention. Put your primary CTA there.
  • Test button links before publishing. A broken URL on a published post looks unprofessional and frustrates subscribers. Always preview your post in the bot before hitting publish.
  • Combine with post formatting. Use the post text to build context and curiosity, then let the button deliver the payoff. For example: "We analyzed 500 Telegram channels to find growth patterns..." followed by a "See the Results" button.
  • Track clicks with UTM parameters. Append ?utm_source=telegram&utm_medium=button&utm_campaign=post125 to your URLs for analytics tracking in Google Analytics or similar tools.

Common Mistakes

Mistake 1: Using too many buttons on a single post
Why it's wrong: Each additional button competes for attention, and CTR drops significantly after the third button. Posts with 6+ buttons often see lower engagement than posts with no buttons at all.
How to avoid: Stick to a maximum of 3 buttons. If you need more links, embed some as text hyperlinks within the post body.

Mistake 2: Using vague button labels
Why it's wrong: Labels like "Click" or "Here" give no indication of what happens next. Users hesitate to tap buttons with unclear destinations.
How to avoid: Always describe the destination or action: "Download PDF," "Watch Video," "Open in Browser."

Mistake 3: Forgetting to grant bot admin permissions
Why it's wrong: The bot cannot post to your channel without admin rights. You'll get an error, and the post won't be published.
How to avoid: When adding @ControllerBot or any posting bot, ensure it has at least "Post Messages" permission in your channel's admin settings.

Mistake 4: Not previewing on mobile
Why it's wrong: Button layouts that look fine on desktop can break on smaller screens — labels get truncated, and multi-column layouts become cramped.
How to avoid: Always check the bot's preview on a mobile device before publishing, especially if you use 3+ buttons per row.

Mistake 5: Linking to pages that require authentication
Why it's wrong: If users tap a button and land on a login page, most will bounce immediately. The friction kills conversion.
How to avoid: Ensure the destination URL is publicly accessible or use Telegram's deep linking for in-app actions.

Frequently Asked Questions

Can I add URL buttons to an already published post?
Yes, if the post was created through a bot like @ControllerBot. You can edit the post via the bot and add, remove, or modify buttons. However, if the post was published natively through Telegram's built-in editor, you cannot add buttons retroactively — you would need to delete and repost it using a bot.

Do URL buttons work in Telegram groups, or only channels?
URL buttons work in both channels and groups, but the process differs. In channels, you use a bot to post on behalf of the channel. In groups, any bot with send-message permissions can attach inline keyboards to its messages.

Is there a limit to how many URL buttons I can add?
Telegram does not enforce a strict maximum, but there is a practical limit of around 100 buttons total (across all rows). Realistically, you should never use more than 6-8 buttons per post for usability reasons.

Can I track how many people click a URL button?
Telegram does not provide built-in click analytics for URL buttons. To track clicks, use UTM parameters in your URLs and monitor traffic through your website's analytics platform (Google Analytics, Plausible, etc.).

Do URL buttons affect how my post appears when shared or forwarded?
Yes, URL buttons are preserved when a post is forwarded. The forwarded message will include the same buttons with the same links, which is excellent for organic reach — your CTA travels with the content.