Telegram's Hidden Data Centers: Why DC3 Users Vanished
An MTProto-level investigation into why Telegram's DC3 data center appears empty and how DC-detection bots got it wrong.
Telegram assigns every account to one of five data centers (DC1-DC5) at registration, based on the phone number's country code, and this binding never changes afterward. Community investigations found that +86 numbers land on the frequently-outaged Singapore DC5, while +1 numbers get the stable Miami-based DC1 — but for a long time, no users of DC2 or DC3 could be found.
The root cause turned out to be a flaw in popular DC-detection bots: they rely on Telegram's Web CDN domains, and since DC2 and DC3 borrow the CDN subdomains of the co-located DC4 and DC1, users on those DCs get misclassified. Querying the MTProto layer directly — via the PHONE_MIGRATE_X error returned by auth.sendCode, or the dc_id field embedded in uploaded profile photos — reveals a very different picture than CDN-based tools suggest.
Systematic testing across tens of thousands of generated phone numbers confirmed that DC2 is still actively accepting new registrations for its assigned country codes (e.g., +49 for Germany), while DC3 appears to have migrated its remaining users to DC1 around 2020 and no longer accepts new signups at all. The findings offer a concrete case study in reverse-engineering closed infrastructure behavior, and a reminder for engineers that protocol-level observation can diverge sharply from what third-party tooling assumes.