Telegram Chat ID Finder
Paste your bot token, send the bot a message, and get the chat ID of every private chat, group and channel it can see. Then send a test message to prove it works.
- Bot
- Bot ID
2. Message the bot, then find the chats
Open the bot in Telegram and send it anything (/start works). For a group, add the bot to the group. For a channel, make the bot an admin and post something.
3. Chats this bot can see
| Chat | Type | Chat ID | Actions |
|---|
Read without marking anything as read, so your bot - or UpWatchr - still sees the same messages. Telegram keeps unread updates for 24 hours.
What a chat ID is
A bot can only send to a chat it knows the number of. That number is the chat ID, and you pass it as chat_id to sendMessage - which is all an alerting tool, a home-automation hub or a CI pipeline does when it "sends to Telegram". There are three shapes:
- Private chat - a positive number, the same as your own user ID, for example
412345678. - Group - a negative number, for example
-4123456789. - Supergroup or channel - a negative number starting with
-100, for example-1001234567890. Keep the minus sign and the 100: they are part of the ID.
How to get a Telegram bot token
- Open @BotFather in Telegram (check for the blue verified tick - there are look-alikes).
- Send
/newbot, then a display name, then a username that ends inbot. - BotFather replies with the token: a number, a colon and about 35 letters, digits, dashes and underscores. That whole string is the token.
- Lost it, or think it leaked? Send
/tokento BotFather to see it again, or/revoketo issue a new one and kill the old.
Treat the token like a password: anyone who has it can send messages as your bot and read what people send it.
How to find a chat ID without this tool
This page does nothing you can't do by hand. Message your bot, then open this address in a browser, with your token in place of <token>:
Look for "chat":{"id": in the JSON. The number after it is the chat ID. For a group, look in my_chat_member (sent when the bot was added); for a channel, in channel_post.
Why getUpdates comes back empty
- Nothing new was sent. Telegram keeps unread updates for 24 hours, then drops them. Send the bot another message.
- The bot has a webhook. Then Telegram pushes updates to that URL and answers
getUpdateswith409 Conflict. This tool tells you when that's the case. Removing the webhook (deleteWebhook) breaks whatever relies on it, so only do that on purpose. - Something else is reading the updates. A running bot script that confirms updates (with an
offset) consumes them before you look. Stop it for a minute, or log the chat ID from the script itself. - Group privacy mode. By default a bot in a group only sees commands and replies to it. Adding the bot still produces an update with the group's ID; otherwise send
/start@yourbotin the group.
Common questions
Is it safe to paste my bot token here?
The token never reaches upwatchr.io. The page calls api.telegram.org directly from your browser - open your browser's developer tools, Network tab, and you'll see every request go there and nowhere else. Nothing is saved: reload the page and it's gone. If you'd rather not paste it anywhere, use the manual getUpdates method above.
Can my bot message me first?
No. Telegram doesn't let a bot start a conversation with someone who has never messaged it. You have to send it something once - after that it can message you whenever it likes.
Can I use a channel's @username instead of its ID?
For a public channel, yes: chat_id=@yourchannel works in sendMessage, and the bot must be an admin of the channel. Private channels and groups only have the numeric ID.
I want Telegram alerts when my website goes down
That's what UpWatchr is for. It's a free Windows app that checks your sites and APIs on your own schedule and sends a Telegram message (or a toast, email or webhook) when one stops answering. Its Telegram setup is this page in one button: paste the token, message the bot, press Connect.