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.

22,524
unique TACs
22,455
with a model name (99.7%)
6,164
model names
2026-10-26-35f67cf7
dataset version

Sources

SourceLicenceSnapshotTACs usedNotes
Osmocom TAC Database
Osmocom TAC database, (c) Harald Welte and contributors
CC BY-SA 3.0 Unported2026-10-26
sha256 8bf210a2066d5115…
22,524Community-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

  1. 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.
  2. 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.
  3. 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.
  4. 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).
  5. 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.
  6. 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.
  7. 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

FieldTACsShare
Brand and model name22,45599.7%
Model code or Apple model number00.0%
Year listed00.0%
Variant / region listed00.0%
Chipset listed00.0%
Listed by both sources00.0%
Conflicting listings10.0%
Inferred device typeTACs
Cellular module / IoT device199
Mobile router or modem6
Tablet5
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.