Data sources and methodology
Every device result on this site comes from openly licensed community data. This page explains where it comes from, how it is processed, how complete it is, and what it can’t tell you.
Sources
| Source | Licence | Snapshot | TACs used | Notes |
|---|---|---|---|---|
| Osmocom TAC Database Osmocom TAC database, (c) Harald Welte and contributors | CC BY-SA 3.0 Unported | 2026-10-26 sha256 8bf210a2066d5115… | 22,524 | Community-maintained. The HTTPS certificate for tacdb.osmocom.org does not match its hostname, so the export is fetched over HTTP and pinned by SHA-256. |
Neither source is the GSMA’s official IMEI database, which is available only to operators and licensed partners. Results on this site are labelled as community data and never presented as GSMA-verified.
Licence of the combined data
The public TAC dataset uses the Osmocom TAC Database under CC BY-SA 3.0. We normalize its listings and retain attribution and source dates. Sources with unresolved upstream redistribution rights are excluded.
Download the dataset (CSV, gzip, 0.2 MB)
One row per source listing: TAC, merge status, source, normalised brand and model, model code, Apple model number, variant, year, chipset, inferred category, the original source text, and first-seen and last-seen dates. Licensed CC BY-SA 3.0. Credit the Osmocom TAC Database and IMEI Desk.
How the dataset is built
- Fetch. Each source’s original export is downloaded, never scraped from third-party pages. Each snapshot is stored compressed and pinned by SHA-256 (and by Git commit for GitHub sources), so every build can be reproduced exactly.
- Parse and validate. TACs must be 6–8 digits. Spreadsheet exports had dropped leading zeros from 0 TACs (for example 1124500 → 01124500), so these are restored.
- Normalise. Brand spellings are merged (for example “SAMSUNG”/“Samsung”, “G’FIVE”/“GFIVE”). Model names get display capitalisation, and model codes, Apple model numbers, regional variants, years and chipsets are parsed from structured listings. The original text is always kept. 12 TACs list a location or generic word (such as “SHENZHEN”) as the brand, so we mark the brand as unclear rather than guess.
- Deduplicate and merge. Identical rows are dropped (2 this build). Listings for the same TAC are compared. If they disagree on brand or model, beyond known parent/sub-brand pairs and name-versus-model-code differences, the TAC is flagged as conflicting and both listings are shown (1 TACs).
- Infer cautiously. A device type (smartwatch, tablet, module, router, laptop) is inferred from the name only where it is clear, and labelled “inferred”. Release dates are never guessed. A year is shown only when the source lists one.
- Track history. Each listing keeps the date it was first seen. If a later snapshot no longer contains a listing, it is kept but marked stale rather than silently deleted.
- Publish. Records are split into 382 static files by the TAC’s first four digits (0.4 MB compressed in total, at most 6 KB each). When you check an IMEI, your browser downloads the one file it needs, so our server only ever sees four digits.
Coverage
| Field | TACs | Share |
|---|---|---|
| Brand and model name | 22,455 | 99.7% |
| Model code or Apple model number | 0 | 0.0% |
| Year listed | 0 | 0.0% |
| Variant / region listed | 0 | 0.0% |
| Chipset listed | 0 | 0.0% |
| Listed by both sources | 0 | 0.0% |
| Conflicting listings | 1 | 0.0% |
| Inferred device type | TACs |
|---|---|
| Cellular module / IoT device | 199 |
| Mobile router or modem | 6 |
| Tablet | 5 |
| Not specified (mostly phones) | 22,314 |
Coverage of recent devices depends on community contributions, and new TACs appear in open data with a delay. An unknown TAC is not evidence that an IMEI is fake.
Updates
Updates are incremental. npm run data:fetch downloads each source and stores a new snapshot only if the content changed. npm run data:build rebuilds the dataset, carrying first-seen dates forward and marking listings that disappeared upstream. This build: 0 new TACs and 0 new listings compared with the previous build, and 0 listings newly marked stale.
Corrections
If a TAC is wrong or missing, the best fix is upstream: contribute to the Osmocom TAC database or open a pull request on the MoazEb repository. Corrections there reach this site on the next update. You can also tell us.