Free tool

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.

Get one from @BotFather with /newbot - the steps are below. The token stays in this tab: requests go straight from your browser to api.telegram.org.

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

  1. Open @BotFather in Telegram (check for the blue verified tick - there are look-alikes).
  2. Send /newbot, then a display name, then a username that ends in bot.
  3. BotFather replies with the token: a number, a colon and about 35 letters, digits, dashes and underscores. That whole string is the token.
  4. Lost it, or think it leaked? Send /token to BotFather to see it again, or /revoke to 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>:

https://api.telegram.org/bot<token>/getUpdates

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 getUpdates with 409 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@yourbot in 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.