CreationDate is a project for estimating the creation date of Telegram user account using only their numeric UserID.
The project is based on a curated dataset of Telegram accounts with known creation dates,
collected over several years, and applies linear interpolation to estimate unknown accounts.
No Telegram API, no authentication, no backend, no rate limits.
- Estimate Telegram account creation date from UserID
- Returns exact date (
YYYY-MM-DD) and human-readable account age - Reusable core algorithm (PHP / Python examples included)
- Transparent and auditable dataset
This project provides estimates only, based on publicly observed UserID growth patterns.
Telegram assigns numeric UserIDs in roughly ascending order over time.
CreationDate uses a reference dataset of known (UserID → creation date) points.
For a given UserID, the algorithm:
- Sorts known UserID points
- Finds the surrounding range
- Applies linear interpolation between timestamps
- Prevents future-dated results
The core estimation algorithm is implemented separately for reuse in other projects:
src/php/estimate.phpsrc/python/estimate.py
These implementations:
- Do not use HTTP
- Operate directly on the dataset
- Can be embedded in other systems
CreationDate estimates Telegram account creation dates based on
publicly observed UserID growth patterns.
- Older accounts: ± weeks to month
- Mid-range accounts: ± weeks to months
- Very recent accounts: ± weeks to months
Accuracy is generally month-level reliable and year-level very reliable.
Telegram does not expose account creation dates publicly.
UserIDs are mostly sequential, but not assigned at a perfectly constant rate.
Factors affecting accuracy:
- Sudden registration spikes
- Internal Telegram allocation changes
- Regional growth differences
- Bot and service account ranges
The dataset contains private Telegram user accounts only.
Included:
- Verified UserIDs with known creation dates
- Real user accounts
Excluded:
- Bots
- Groups
- Channels
- Negative IDs (e.g.
-100...)
See:
data/README.mddata/schema.json
CreationDate/
├── api/
│ ├── index.html
│ └── api.js
├── data/
│ ├── tg_points.json
│ ├── schema.json
│ └── README.md
├── src/
│ ├── php/
│ │ └── estimate.php
│ └── python/
│ └── estimate.py
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── feature_request.yml
│ │ └── improvement_question.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── CONTRIBUTING.md
│ ├── CODE_OF_CONDUCT.md
│ └── SECURITY.md
├── CHANGELOG.md
├── README.md
├── LICENSE
├── .gitattributes
└── .gitignore
Contributions are welcome.
You can help by:
- Adding verified UserID → date points
- Improving estimation logic
- Adding implementations in other languages
- Improving documentation
Please read .github/CONTRIBUTING.md before contributing.
MIT License
© wizardloop