Telegram Chat ID Finder
A Telegram chat ID is the number the Bot API uses to address a chat, and it isn’t the username. Its shape tells you what kind of chat it is. A user is a positive number, a legacy group is negative, and a supergroup or channel is negative with a 100 right after the minus sign, so a channel appears as −1001006503122. Paste any public @username above and you get that number, in both the forms that are in circulation. What no tool can do is turn a person’s username into their user ID. Telegram won’t let a bot resolve someone it has never met, whatever token it holds. We tested that ourselves before building this, so the page explains the case below rather than showing it as a failure.
- Both id forms. The Bot API number, and the same id without the
−100prefix. MTProto tooling wants the second one, and mixing them up is the usual cause of a mysterious chat not found. - No token, ever. The lookup runs on our own throwaway bot. A token is full control of your bot, and this needs nothing of yours to work.
- An honest answer for the rest. Nobody can resolve private chats and personal accounts. The route that does work is written out below.
Find a Telegram chat ID
Public channels, public groups and bots. We never ask for your bot token — the lookup runs on ours.
What this can and cannot resolve
This Telegram ID finder resolves what the Bot API is willing to resolve, and we measured which cases those are against the live API rather than guessing. A bot that belongs to no chats can resolve a public channel, a public supergroup and another bot from its username alone. @durov So −1001006503122, @python as a supergroup, @BotFather as 93372553. Real people’s accounts return chat not found every time, however public their username is. That is a deliberate privacy boundary in Telegram, and no token, service or trick moves it. Anything claiming otherwise is either scraping something else or selling you a lie.
Getting the ID of a private chat, which is the case most people have
A private chat, a private group and your own conversation with your bot have no username to resolve. No lookup can reach them, including this one. The route that does work takes about a minute and needs a bot of your own.
- 1Create a bot and copy its token. Open @BotFather in Telegram, send /newbot, and copy the token it gives you. Keep it private — it is full control of that bot.
- 2Put the bot in the chat you need the ID for. For a group or channel, add the bot as a member. For a private conversation, open a chat with the bot and press Start.
- 3Send one message there. Any message will do. The update your bot receives is what carries the id.
- 4Read the id from getUpdates. Call https://api.telegram.org/bot<TOKEN>/getUpdates and read message.chat.id for the chat, or message.from.id for the user. Note that getUpdates returns nothing while a webhook is set — delete the webhook first, or read the id from your webhook handler instead.
If your bot is not running yet, one call does the last step for you:
curl "https://api.telegram.org/bot$BOT_TOKEN/getUpdates" \
| python3 -c "import sys,json; [print(u['message']['chat']['id'], u['message']['chat'].get('title') or u['message']['chat'].get('username','')) for u in json.load(sys.stdin)['result'] if 'message' in u]"Run that with your own token, in your own terminal. The token never leaves your machine. There are public bots that report an id back, and they do work, but they learn your account id in the process. Your own bot doesn’t.
Why the same id has two shapes
Telegram’s internal protocol and the Bot API number the same channel differently. Internally a channel is a positive id like 1006503122; The Bot API prefixes it with −100 so one number space can hold users, groups and channels without collisions. Both forms turn up in the wild. Chat exports, MTProto libraries such as Telethon and Pyrogram, and several SMM panels use the bare number. Pasting the wrong one gives an error that names neither, so we show both and the question never comes up.
Telegram chat IDs — questions
- What is a chat ID?
- A chat ID is the number the Telegram Bot API uses to address a conversation. It isn't the username and it isn't the display name. It's a stable numeric identifier that never changes for a given chat. Its shape encodes the kind of chat. A user is a positive number, a legacy basic group is negative, and a supergroup or channel is negative with 100 immediately after the minus sign. Every Bot API call that sends to a chat takes this number, which is why every integration guide asks for it.
- What can someone do with a Telegram ID?
- Very little on its own, and that's worth saying plainly, because people usually ask out of worry. A chat ID is an address, not a credential. It lets a bot you've already authorised send a message to that chat, and nothing more. Knowing your ID doesn't let a stranger message you, read anything, see your phone number or find your account. A bot can only message someone who has contacted it first. What genuinely matters is the bot token. A leaked token is full control of that bot.
- Can a Telegram ID be traced?
- Not to a person, by anyone outside Telegram. An ID is an internal identifier with no name, phone number or location attached, and there's no public directory mapping IDs back to accounts. That's why a bot can't resolve a person's username to their ID in the first place. What an ID does reveal is the kind of chat, and roughly how old the account is, since IDs are handed out in ascending order. Services promising to "trace" a Telegram ID to an identity are either using data obtained some other way, or selling nothing.
- How do I find a Telegram chat ID?
- For anything public, paste the @username above and you get the numeric id straight away. For a private chat, a private group, or your own conversation with your bot, there's no lookup. Send any message to the bot and read chat.id out of the update it receives. That second route is the only one that exists for private chats. It's also why most answers on this topic tell you to add a bot rather than pointing you at a tool.
- Why is my group ID negative, and what is the −100 prefix?
- Telegram distinguishes chat kinds by the sign and shape of the id. A user is a positive number. A legacy basic group is negative. A supergroup or channel is negative and carries a 100 immediately after the minus sign. So a channel whose internal id is 1006503122 appears to the Bot API as -1001006503122. Both forms are in circulation. MTProto libraries, chat exports and several panels use the bare number, while the Bot API wants the prefixed one. Pasting one where the other belongs produces "chat not found" in a bot that's otherwise configured correctly, which is why we show both above.
- Can I get a Telegram user ID from a username?
- No, and no tool can. We measured it rather than assuming. A bot calling getChat on a real person's public username gets "chat not found" every time, because Telegram won't let bots resolve people who haven't interacted with them. That's a privacy boundary, not a limitation of this tool, and not a matter of having the right token. If you need a user's id, have them message your bot and read message.from.id from the update. An inline button works too: pressing it sends you a callback query carrying the same field.
- Do I have to give you my bot token?
- No, and be wary of anything that asks. A bot token is complete control of that bot. Whoever holds it can read every message it receives, send messages as it, and change its settings. Our lookup runs on our own throwaway bot, which belongs to nothing and can do nothing with the usernames it resolves. Every commercial page on this site says we never ask for a login. A free tool that asked for a token would make that sentence untrue.
- Why does it say "chat not found" for a username I can see in the app?
- Three cases produce the same answer, and Telegram doesn't distinguish them. The username belongs to a person, which a bot can't resolve. The username doesn't exist, perhaps released or changed, since Telegram usernames aren't permanent. Or the channel is private, so it has no username to resolve at all and the only way in is an invite link. If you can open it in the app but the lookup fails, the first case is by far the most likely.
- How to get Telegram chat ID and bot token?
- They come from two different places, which is why the pairing confuses people. The bot token comes from @BotFather. Send /newbot, answer two questions, and it hands you a string like 123456:AA… Treat that as a password, because it's full control of the bot. The chat ID comes from the chat itself. For a public channel, group or bot, paste the @username above. For anything private, add your bot to the chat, send one message, and read message.chat.id from getUpdates. The token identifies your bot. The Telegram group ID or channel ID identifies where it should send.
- Is the chat ID the same for everyone?
- For a channel, a supergroup or a bot, yes. The id identifies the chat itself, so every bot sees the same number and it doesn't change. A private conversation between a user and a bot is different. The id there is the user's own id, which is also stable, but only your bot can obtain it, and only after the user has been in touch. Nothing about an id is secret. It's an address, not a credential.
- How do I find my own Telegram user ID?
- Message any bot that reports it back, or message your own bot and read message.from.id from the update. There's no way to look it up from a username, including here, for the reason above. If you're building something that needs a user's id, design the flow so the user contacts the bot first. The id arrives with that first message and never changes afterwards.
Sending to that chat next? The formatter handles the escaping. Want the channel’s audience numbers rather than its id? The channel checker reads those. The rest is on the tools hub.