Generate random, valid 15-digit IMEI numbers, and validate any IMEI.

Useful for test data, form validation and mocking device identifiers. The generated numbers are random and not assigned to real devices.

Features

  • ImeiGenerator().generate() returns a random IMEI that starts with a real Reporting Body Identifier and ends with a correct Luhn check digit.
  • isValidImei(imei) checks that a string is exactly 15 digits with a correct check digit.
  • No dependencies; works on every platform, including the web.

Installation

dart pub add imei_generator

Usage

import 'package:imei_generator/imei_generator.dart';

void main() {
  final imei = ImeiGenerator().generate();
  print(imei); // e.g. 356938035643809

  print(isValidImei(imei)); // true
  print(isValidImei('490154203237519')); // false: wrong check digit
}

For repeatable output, for example in tests, pass a seeded Random:

import 'dart:math';

final generator = ImeiGenerator(random: Random(42));

isValidImei does not strip separators; remove spaces or dashes first if your input may contain them.

Upgrading from 1.x

Version 2.0 uses String instead of List<int>. See the changelog for the migration steps.

Additional information

Found a bug or have an idea? Please open an issue.

Libraries

imei_generator
Generate and validate IMEI (International Mobile Equipment Identity) numbers.