Telegram Username Checks: Account Existence vs Name Availability
Learn how a Telegram username exists check differs from a name availability check, and how to test a username list in bulk with TG Validator.

A username availability tool asks whether a handle is free to claim, while an existence check asks whether a list of handles belongs to real Telegram accounts.
A telegram username exists check answers a different question from the usual username checker. Availability tools tell you whether a handle is free to claim; an existence check tells you whether a handle in your list is attached to a Telegram account today. For list work, TG Validator handles the second question with the tg_username_batch service, and tg_username_profile_batch adds extra profile columns for the same kind of file. Both run as asynchronous bulk tasks and return one downloadable result.csv.
Two questions that share one search phrase
Search results for "telegram username checker" mix two jobs that look similar and are not.
The first job is availability. Someone wants a new handle for a brand, channel or bot and asks whether it can be registered. Telegram documents this as a logged-in action: the official account.checkUsername method validates a username and reports whether it can be used. Third-party tools wrap the same idea, and some also look at marketplace listings for handles that are held or for sale.
The second job is existence. A team already holds a list of handles, collected from forms, CRM notes, community exports or partner sheets, and wants to know which ones still point to a real account. The answer drives list cleanup, not name registration.
The two answers can even look reversed. A handle that is "taken" in an availability tool is the same handle that "exists" in an existence check. A handle that is "free" is one that does not currently resolve to an account. If you run the wrong kind of tool, you will read the output backwards, so decide which question you are asking before you pick a tool.
What an existence check reports
For username files, TG Validator offers two asynchronous bulk services:
| Service | What it reports for each username |
|---|---|
| tg_username_batch | Whether the username belongs to an existing Telegram account |
| tg_username_profile_batch | The same existence result, plus the account's uid, activedays and an avatar URL |
Usernames can be written with or without the leading @, so a sheet that mixes "@example_name" and "example_name" does not need to be rewritten first. Unlike phone-number bulk tasks, username tasks do not ask you to pick a country.
Two reading notes keep the output honest. First, activedays, where present, is the approximate number of days since last activity and may be approximate when Telegram hides exact last-seen information. Second, an existence result describes the state of the handle at check time. It tells you the handle resolves to an account; it does not describe who operates the account or how that person uses Telegram.
Running a username list through a bulk task
The workflow is the same whether you use the web dashboard or the REST API.
- Collect the handles into a TXT or CSV file with one username per line. XLSX files are not accepted, so export a plain column from your spreadsheet.
- Clean the obvious noise. Remove blank rows, full t.me links pasted into the cell, and trailing spaces. Keep duplicates out; a handle checked twice is two entries to process.
- Choose the service. Use tg_username_batch when you only need to know which handles exist. Use tg_username_profile_batch when your cleanup rule also needs uid, activedays or the avatar URL.
- Submit the task. In the API this is POST /api/v1/bulk-tasks. The balance for the task is reserved at submission and reconciled at completion, with the unspent part released.
- Poll for status. GET /api/v1/bulk-tasks/{id} reports processing, success or failed. No per-entry progress is exposed, so check no more often than once every 30 seconds.
- Download result.csv when the task succeeds. The file uses an identifier column for your original entry and an activated column for the outcome; extra columns depend on the service type and may be empty.
Per-task size limits apply to each service, so confirm the current figures in the API documentation before you plan a very large file rather than relying on a number copied from an article.
Turning the result into list decisions
Treat result.csv as a filter, not a verdict. A practical pattern is to keep three working groups.
- Exists: handles that resolve to an account. These stay in the active list and can move to the next review step.
- Does not exist: handles that returned no account. These are candidates for removal, or for a follow-up with whoever supplied the entry, because typos and abandoned handles look the same here.
- Needs a second look: rows with empty optional columns. Empty values in the profile columns are a normal outcome, so do not treat a blank avatar URL or activedays as an error in your import.
When you use tg_username_profile_batch, the uid column is useful as a stable key. Handles can be renamed by their owners, while a uid stays attached to the account, so storing it next to the username lets you reconcile records later. The uid is a database key for your own records and says nothing about the person behind the account.
Any activedays threshold is your own business rule. A team might park rows above a chosen number of days for a lighter-touch list, but the product does not define what counts as active, and the number remains approximate.
Common mistakes when checking usernames
- Using an availability tool on a cleanup list. It will tell you which handles are free to claim, which is the reverse of what a cleanup needs.
- Mixing phone numbers and usernames in one file. Phone-number tasks need one country and international country codes; username tasks need no country. Keep them in separate files and submit separate tasks.
- Expecting live presence. Neither username service reports who is online right now, and neither exposes private chats, groups or contacts.
- Treating a missing handle as a deleted person. A person may have changed the handle, and the old one now fails. Ask the data owner before you delete the contact record itself.
- Over-polling. Submitting a task and requesting status every few seconds wastes calls. Wait at least 30 seconds between polls.
If your list holds phone numbers instead of handles, the realtime tg service and the phone-number bulk services are the better fit, and the two approaches can be combined by checking each input type in its own task.
FAQ
What is the difference between a Telegram username exists check and an availability check?
An availability check asks whether a handle can be claimed, usually through a logged-in Telegram action. An existence check asks whether a handle in your list currently belongs to a Telegram account, which is the question that matters for list cleanup.
Which TG Validator services check usernames?
tg_username_batch reports account existence for usernames, and tg_username_profile_batch adds uid, activedays and an avatar URL. Both are asynchronous bulk services that produce a single result.csv.
How can teams format usernames before submitting a file?
Use a TXT or CSV file with one username per line. Usernames may be written with or without the leading @, and no country needs to be chosen for username files.
How should teams read activedays in username profile results?
Read it as approximate days since last activity. It may be approximate when Telegram hides exact last-seen information, and each team sets its own threshold for what to do with older rows.
Can usernames and phone numbers be checked in the same task?
No. Phone-number tasks and username tasks have different input rules, so teams submit them as separate files and tasks.
Learn More
Choose the product information that fits the next step in your workflow.