Telegram Chat ID Finder

A Telegram chat ID is the number the Bot API uses to address a chat, and it is not 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 does not let a bot resolve someone it has never met, whatever token it holds. That case is explained below rather than shown as a failure.

  • Both id forms. The Bot API number and the same id without the −100 prefix, because 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. Private chats and personal accounts cannot be resolved by anyone. 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 comes back as −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, so no lookup can reach them — including this one. The route that does work takes about a minute and needs a bot of your own.

  1. 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.
  2. 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.
  3. 3Send one message there. Any message will do. The update your bot receives is what carries the id.
  4. 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 also public bots that report an id back, and they work, but they learn your account id in the process; your own bot does not.

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 that 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 — and pasting the wrong one gives an error that names neither. Both are shown above so 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 is not the username and not the display name: it is 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 this is worth stating plainly because the question is usually asked out of worry. A chat ID is an address, not a credential: it lets a bot that you have already authorised send a message to that chat, and nothing more. Knowing your ID does not 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, not the ID: 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 is no public directory mapping IDs back to accounts — that is why a bot cannot resolve a person's username to their ID in the first place. What an ID does reveal is the kind of chat and, from its magnitude, 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 is 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, and it is the reason 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 additionally carries a 100 immediately after the minus sign — so a channel whose internal id is 1006503122 appears to the Bot API as -1001006503122. The two forms are both 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 is otherwise configured correctly, which is why both are shown 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 does not let bots resolve people who have not interacted with them. This is a privacy boundary, not a limitation of this tool or a matter of having the right token. If you need a user's id, the supported route is to have them message your bot — the update carries message.from.id — or to have them press an inline button, which sends you a callback query with the same field.
Do I have to give you my bot token?
No, and you should 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. The lookup here runs on our own throwaway bot, which is a member of nothing and can do nothing with the usernames it resolves. Every commercial page on this site says we never ask for a login, and 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 does not distinguish them. The username belongs to a person, which a bot cannot resolve. The username does not exist — it may have been released or changed, and Telegram usernames are not permanent. Or the channel is private, in which case 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… — that is full control of the bot, so treat it as a password. 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 does not 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 is 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 is no way to look it up from a username, including here, for the reason above. If you are 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.

Telegram Chat ID Finder — Free Tool | Telegram.Software