Random IMEI Generator
Luhn-valid 15-digit numbers for test data. One, or a hundred thousand.
What this produces
Every number is a syntactically correct IMEI: 15 digits whose final digit is the Luhn check digit of the first 14. It will pass the same format and checksum validation a real IMEI passes, which is the whole point when you are filling a test fixture or exercising an input field.
| Segment | Digits | 35-491503-847266-9 | Where it comes from |
|---|---|---|---|
| Reporting Body Identifier | 2 | 35 | Picked from the real RBI list, so the number looks plausible to a human reviewer |
| Rest of the TAC | 6 | 491503 | Random |
| Serial number | 6 | 847266 | Random |
| Check digit | 1 | 9 | Computed with the Luhn algorithm |
Digits come from crypto.getRandomValues rather than Math.random, with rejection sampling so no digit is more likely than another. Collisions within a batch are possible in principle and vanishingly rare in practice — there are 1012 combinations behind each RBI.
Why not just reuse a real IMEI
Because an IMEI identifies a specific handset, which makes it personal data under the GDPR and similar regimes once it sits next to a user record. Real device identifiers have a way of leaking out of the environment they were captured in — into a seeded database, a fixture file committed to Git, a screenshot in a bug report, a log line shipped to a third-party aggregator.
Generated numbers remove that whole category of problem. They are structurally valid, so your validation logic behaves exactly as it would in production, and they belong to nobody, so nothing you do with them is a disclosure.
Generating in bulk
Set the count to anything up to 100,000. Above one number the output switches to a list and a Download CSV button appears. The file has an index,imei header and CRLF line endings, so it imports into Excel, Sheets, and COPY FROM in Postgres without any coaxing.
The on-screen list is capped at 300 rows for responsiveness; the CSV always contains the full batch. Typical uses:
- Seeding a device table with realistic-looking identifiers
- Load-testing a lookup endpoint with unique keys that survive checksum validation
- Building fixtures for a device-registration or warranty flow
- Filling a staging environment without copying production data into it
What a generated IMEI cannot do
This matters enough to be explicit about. A valid checksum is an arithmetic property, not an identity. These numbers are random, they are not registered anywhere, and they are useless for anything other than testing:
- They will not unlock or unblock a phone. Carrier unlocking is tied to the device's real IMEI in the carrier's own systems.
- They will not clear a blacklist entry. Blocklisting happens in the GSMA's Central Equipment Identity Register and in carrier EIRs, both of which key on the genuine identifier.
- They will not return warranty or device details. A GSMA TAC lookup resolves the 8-digit TAC to a registered model; a random TAC resolves to nothing.
- They must not be written to a device. Altering a handset's IMEI is a criminal offence in the UK, India, and many other jurisdictions, regardless of intent.
If you need your own device's IMEI, dial *#06# or look under Settings. This tool is for test data and nothing else.
Common questions
- Are the numbers stored or sent anywhere?
- No. All generation happens in your browser; there is no backend to send them to. Close the tab and they are gone. See the privacy policy for what the site as a whole does and does not collect.
- Will these pass a validator?
- Any checksum or format validator, yes — including our own IMEI validator. A validator that queries the GSMA TAC database will reject them, correctly, because the TAC is not an allocated one.
- Can I generate an IMEI for a specific brand?
- Not here, deliberately. Producing numbers that impersonate a real manufacturer's allocated TAC range makes them look like genuine devices, which is exactly the use we are not interested in supporting.
- Why did my batch come back instantly?
- Because it is only arithmetic. 100,000 numbers take a few tens of milliseconds; the status line reports the actual time. Nothing is fetched over the network.
- Is 15 digits always right?
- For an IMEI, yes. A 16-digit number is an IMEISV, where the check digit is replaced by a two-digit software version. The format guide covers the difference.