Overview / Blog / User and chat IDs
Scraping  ·  16 Sep 2026  ·  4 min read

A Telegram user ID never changes, and still cannot open a chat on its own

A Telegram user ID is the number an account keeps through every username and phone change; a chat ID is the number a conversation is addressed by, identical to the user ID in a private chat and negative for a group or channel in the Bot API. Neither opens anything alone. Telegram lets an account act on a user only with an access hash it has received itself, which is why a bare ID fails to resolve.

Telegram chat ID vs user ID, and the -100 in front of groups

In a private chat they are one number.

Anyone asking what is telegram user ID gets a short answer: the number Telegram files an account under, unchanged when its owner switches username or phone number.

A chat ID names the conversation. Telegram's Bot API dialog ID rules keep a user's number, make a basic group's negative, and add 1000000000000 to a supergroup or channel before making it negative, so a ten-digit ID gains -100 in front. User, group and channel numbers overlap inside Telegram, so only that sign and prefix tell a bot which kind it holds. Our Member Scraper's GROUP_ID column holds the bare form, because the two ways software talks to Telegram number one chat differently.

Does telegram chat ID change? Not a user's. A basic group's changes once, on becoming a supergroup, breaking saved lists used for posting into many groups.

What is my Telegram chat ID, and where do the apps show it?

For a bot you are wiring up, it is your user ID.

Official apps hide IDs, and searches phrased as telegram chat ID how to get have two answers. Message a bot you own, call getUpdates and read message.chat.id, which in a group is the group's number. Or use Telegram Desktop:

  1. Open Settings, then Advanced, then Experimental settings.
  2. Turn on Show Peer IDs in Profile.
  3. Open any profile, group or channel; the ID is in its details, though a 2024 bug report says channels appear without the -100.

That is how to find telegram user ID numbers for anyone your app can open. Anything sold as a telegram user ID finder, telegram ID finder, telegram group ID finder or telegram user ID bot reads the number from what you send it, and a forward from someone whose forwards are anonymous carries none: where a forward says it came from is their choice.

Why does a user ID fail to resolve?

Because an ID is only half an address.

Over MTProto, a call aimed at a person carries their ID plus an access hash, and Telegram's peer documentation is blunt: with an ID alone you "cannot interact with that peer". The hash belongs to one login on one account, so no other account can reuse it, and it arrives through ordinary use: a number lookup the owner permits, a username you looked up and saved, a group you share, a message they sent. A number copied from a spreadsheet carries none of it, and a user seen only in group messages often arrives as a min constructor, whose hash fetches profile photos and nothing else.

The wording of a telegram user ID could not resolve error changes with the library. The cause does not.

ErrorSeen inCauseFix
Could not find the input entityTelethonSession never met the userResolve the username first
PEER_ID_INVALIDMTProtoID or hash not valid for this accountResolve it from this account
Bad Request: chat not foundBot APINo chat with that ID, or no -100Check the prefix; message the bot
Forbidden: bot can't initiate conversation with a userBot APIThe user never started the botOnly the user can fix it
group chat was upgraded to a supergroup chatBot APIThe group has a new IDUse migrate_to_chat_id

Bots have it worse: Telegram's introduction for developers says bots can't start conversations with users, and no Bot API method adds someone who never asked, so a bot holding a bare number gets only as far as a link it cannot aim at anyone. Adding a member takes the same pair, so an ID-only list fails before the privacy refusals an add run meets; even removing people from a contact list is sent as users with hashes.

Telegram username to ID is one request, and the reverse has none

That decides which lists work.

Tools ask for a Telegram username, ID or phone number because each resolves differently. A public username resolves in one request whose reply brings the ID and a hash, so username lists work from a cold start while the name still resolves to one holder. Telegram user ID to username has no such request: fetching a profile needs that hash first, so an account can name only people it has met.

Mass DM screen with a user ID variant listed below username; a telegram username to id lookup brings the hash a bare ID lacks

Our Member Scraper writes a Telegram ID, username and phone column per member and labels its Username only filter best for DM targeting. Mass DM with user ID resolves its Target User IDs through the sending session and counts any it never met as failed, the wall a member add spread over several accounts also hits.

Nothing here makes a stranger's bare number reachable or lifts a Telegram limit, and we sell no accounts or proxies. Scraped lists are personal data: messaging those people is direct marketing under GDPR, CAN-SPAM and their equivalents, the lawful basis must be yours, and Telegram's Terms of Service rule out spam from any tool.

Questions

Before you paste an ID anywhere

Does a Telegram user ID ever change?
No. A Telegram user ID stays with the account for as long as the account exists, so a new username, display name or phone number leaves it untouched, which is why bans, allow-lists and exports are keyed to the number rather than the name. The ID ends only when the account does. Telegram's FAQ says a person who deletes their account and signs up again will appear as a new user, shown as a separate conversation to anyone who had them saved, so a list holding the old number now points at a deleted account. Chat IDs follow their own rule: a private chat keeps the user's number, a supergroup or channel keeps its own, and a basic group gets a new ID once, when it is upgraded. Store every ID as a 64-bit integer, because the Bot API allows up to 52 significant bits.
Can you find someone's username from their Telegram user ID?
Not from the ID alone. Turning a Telegram user ID into a username needs the access hash your account received for that person, because the request that returns a profile takes the hash as input, and a bare number gives your account nobody to ask about. So the answer depends on history. If you share a group with them, have exchanged messages or saved them as a contact, your app already holds their username, and Telegram Desktop with Show Peer IDs in Profile turned on shows the ID beside it. If your account has never met them, no Telegram request turns the number into a name, and a lookup service can answer only for accounts its own sessions have already met. The other direction is easy, since a public username resolves to its ID in one request. When you need to reach someone, ask for the username.
Is it safe to share my Telegram user ID?
Mostly, yes. A Telegram user ID reveals no phone number, no name and no messages, and an account holding only the number cannot write to you with it, because Telegram will not act on a user without an access hash that account received itself. A bot is stricter still and can message you only after you have started it. What the ID does is follow you through renames: a new username or phone number does not shake it off, which is exactly why moderators and bot admins ban by ID. Anyone who already shares a group with you, or has messaged you, holds your hash whether or not you shared the number. If privacy is the worry, the settings that decide it are who can find you by phone number, who can add you to groups and whether your forwarded messages link back to your account.
Why does a Telegram group ID start with -100?
Because the Bot API adds it. Telegram's conversion rule takes a supergroup or channel number, adds 1000000000000 and makes the result negative, so a ten-digit ID such as 1234567890 becomes -1001234567890, while an older, shorter ID gains zeros after the -100 as well. A basic group is only made negative, and a user's number is left alone. Telegram's own protocol does none of this, so a logged-in account and our Member Scraper's GROUP_ID column both show the bare number, and a Telegram Desktop bug report from October 2024 says its peer ID display shows channels without the prefix too. Before pasting a result from a telegram group ID finder into a bot, check which form it gave you: a bare channel number needs the conversion, a number that already starts with -100 is ready, and an upgraded group needs its new ID.
What is my Telegram chat ID with a bot I just created?
Your own user ID. A private chat with a bot is addressed by the person's number, so the chat ID your bot needs is the user ID of whoever will receive its messages. To read it with no third party involved, open the chat with your bot and send any message, then call getUpdates with the bot's token and find message.chat.id in the reply. For a group, add the bot first: the join arrives as a service message every bot receives, and its chat.id is the group's negative number, written with -100 for a supergroup. If getUpdates answers with a conflict error, a webhook is set, and the method does not work while one is. Keep the limit in mind too. Your bot can message you only because you wrote first, and it can use nobody else's ID until that person does the same.
Why does Telethon say it could not find the input entity?
Because the session has never received that user. Telethon stores every user it meets, access hash included, in the .session file, and its documentation states the rule plainly: you cannot use entities from IDs the library has not seen. A bare integer missing from that cache raises Could not find the input entity for PeerUser, Pyrogram reports the same case as PEER_ID_INVALID, and other tools print a telegram user ID could not resolve message of their own. The fix is to let that account meet the user: resolve a public username, load the members of a group you share, or read a message they sent. Copying another account's cache does not help, since Telegram refuses access hashes across accounts and across fresh logins of the same account. With no username and no shared chat, the ID cannot be used from that account.

User ID lists, resolved by the account that sends

Mass DM with user ID resolves every number through the session assigned to send to it, and records a number that session cannot open as failed next to the ones that went out.