Telegram Deep Link Builder
Which link opens the thing you mean?
Open a bot with a Start button, optionally carrying a parameter your bot can read.
A-Z, a-z, 0-9, underscore and hyphen. Up to 64 characters — base64url anything else.
tg://resolve?domain=MemberPilotBot
Only resolves where Telegram is installed. Use the t.me link in public — it works either way.
- Without a parameter this is just the bot's profile link. Add one to tell the bot where the user came from.
Selling access to a Telegram channel?
Deep links with a start parameter are how a checkout knows which offer someone clicked. MemberPilot generates them, then handles payment, invites, renewals and removing expired members.
Which link you need
Telegram publishes a fixed set of link formats, and the difference between them is not cosmetic: ?start= opens a private chat with a bot, ?startgroup= opens a chat picker, and ?startapp= opens a Mini App. Sending someone the wrong one usually looks like the link doing nothing at all.
The builder above only produces formats Telegram documents. If a combination is not offered here, it is because Telegram does not define it — inventing a query parameter produces a link that opens a profile and ignores everything after the question mark.
Start parameters, and what they are good for
The start parameter is the only piece of state you can carry into a first conversation with a bot. It is how a bot knows that this user came from a particular post, a particular offer, or a particular seller.
Telegram restricts it to base64url characters — letters, digits, underscore and hyphen — and to 64 characters. That is enough for an identifier and not enough for a payload, so the working pattern is to pass a short key and look the rest up on your side.
Do not put secrets in it
Turning a link into something scannable
Once the link is right, a QR code is the natural next step for anything printed, projected on a slide, or shown on another screen. Send the finished link straight to the Telegram QR code generator — the button beside the result carries it across.
If your link is meant to sit on a button inside a Telegram message, the inline keyboard builder produces the reply_markup JSON with the URL validated against what Telegram accepts on a button.
Common questions
What is a Telegram deep link?
A URL that opens a specific place inside Telegram: a profile, a bot with a Start button, a Mini App, a share sheet, or one post in a public channel. Links beginning https://t.me/ open in the app when it is installed and fall back to a web page when it is not. Links beginning tg:// only work when a Telegram client is installed.
How do I pass a parameter to my bot from a link?
Use https://t.me/yourbot?start=VALUE. When the user presses Start, your bot receives /start VALUE as the first message. Telegram accepts A-Z, a-z, 0-9, underscore and hyphen, up to 64 characters, so anything else has to be base64url encoded first. It is the standard way to attribute a signup to a campaign, an offer or a referrer.
Can a link add my bot to a group automatically?
No. https://t.me/yourbot?startgroup=true opens a chat picker and the user chooses where the bot goes. The admin= parameter asks for specific rights, but the user still confirms. There is no link that adds a bot to a chat without someone agreeing to it.
Do tg:// links work on the web?
Only on devices with a Telegram client installed to handle the scheme. On everything else the link fails silently, which is why every result here also gives the https://t.me/ form. Use the t.me link in public material and keep tg:// for places where you already know the app is present.
What about private channels?
Private chats have no username, so they cannot be linked by handle. They use invite links of the form https://t.me/+HASH, generated inside Telegram or through the Bot API. Treat those as secrets: anyone holding one can request to join.
Sources
Everything this tool asserts about Telegram comes from Telegram’s own documentation.