Random IMEI technical reference
Written by David Santacruz. Revised September 9, 2026. Review method and corrections.
IMEI Format (15 Digits)
┌──────────┬────────┬─┐
│ TAC │ SNR │C│
│ 8 digits │6 digits│1│
└──────────┴────────┴─┘
| Segment | Digits | Meaning |
|---|---|---|
| TAC (Type Allocation Code) | 1–8 | Identifies a device model in official allocation data |
| SNR (Serial Number) | 9–14 | Identifies a unit within the TAC allocation |
| CD (Check Digit) | 15 | Luhn checksum for error detection |
Total: 15 digits. No hyphens, no spaces (though often displayed as XX-XXXXXX-XXXXXX-X).
IMEISV Format (16 Digits)
┌──────────┬────────┬──┐
│ TAC │ SNR │SV│
│ 8 digits │6 digits│2 │
└──────────┴────────┴──┘
- SV (Software Version): 2 digits, replaces the check digit
- Used in 3GPP signaling
- No Luhn check digit in IMEISV
How to Interpret a TAC Safely
- The TAC is the first eight digits of an IMEI body.
- Its digits do not provide a reliable manufacturer shortcut; attribution requires authoritative allocation data.
- A Luhn-valid IMEI proves only checksum consistency. It does not prove that a TAC, device, owner, carrier status or warranty record exists.
- For tests that do not require a real allocation, use clearly synthetic fixtures in isolated systems.
Random IMEI does not publish its raw legacy TAC-to-device snapshot because the original provenance and reuse license have not been established. See the methodology and data limitations.
Luhn Check Digit Calculation
The 15th digit is computed via the Luhn algorithm:
- Take the first 14 digits
- Double positions 2, 4, 6, 8, 10, 12 and 14 in that body, counting from the left
- If result > 9, subtract 9
- Sum all 14 processed digits
- Check digit =
(10 - (sum mod 10)) mod 10
Example: 14-digit body 35391109123456 with an unknown final check digit
Digits: 3 5 3 9 1 1 0 9 1 2 3 4 5 6
Double: 3 10 3 18 1 2 0 18 1 4 3 8 5 12
Adjust: 3 1 3 9 1 2 0 9 1 4 3 8 5 3
Sum = 52 → Check = (10 - 52%10) % 10 = (10-2)%10 = 8
Completed format example: 353911091234568. This calculation does not identify a device or verify assignment.
IMEI vs. Related Identifiers
| Identifier | Length | Used For | Example |
|---|---|---|---|
| IMEI | 15 | 3GPP device identity | 353911091234568 |
| IMEISV | 16 | IMEI structure + software version | 3539110912345681 |
| MEID | 14 hex | CDMA device ID (legacy) | A0000012345678 |
| ESN | 8 hex | Old CDMA serial (deprecated) | 80AB1234 |
| ICCID | 19–20 | SIM card identifier | 8901260017641234567 |
| IMSI | Usually 15 | Subscriber identity on SIM | 310260123456789 |
Where to Find IMEI
| Method | Steps |
|---|---|
| Dial code | Dial *#06# on most phones |
| Settings (iOS) | Settings → General → About → IMEI |
| Settings (Android) | Settings → About Phone → IMEI |
| Physical | May appear on a SIM tray, back panel, or battery compartment |
| Packaging | Original box barcode label |
IMEI Blacklisting & Carrier Checks
- GSMA Device Registry: supports status exchange among eligible ecosystem participants
- National and carrier blocklists: coverage and propagation vary
- Carrier lock: a separate commercial restriction from blocklist status
- Random IMEI does not query any registry, carrier, blocklist, ownership or warranty system
Common Use Cases for IMEI Generation
| Use Case | Why |
|---|---|
| QA/Testing | Populate isolated fixtures with valid-format values |
| Device management | Test mock MDM workflows |
| Telecom development | Exercise offline parsing and validation |
| Database seeding | Fill non-production schemas with synthetic identifiers |
| Format validation | Verify a Luhn implementation |
⚠️ Generated values are synthetic fixtures. Never submit them to live carrier, activation, warranty, financing, insurance or identity systems; rules vary by jurisdiction.
Run a complete CSV example: QA lab with expected results and a runnable project.
Generate IMEI-shaped test data: randomimei.com
More IMEI guides: Random IMEI articles