Ambimat GroupAmbimatAmbiSecureSIMAuthAmbiAutomationEngineering BlogAhmedabad · India · Est. 1981
eSIM / SIM / telecom

ICCID Decoder

Decode an ICCID — the serial number printed on a SIM or eSIM — into its MII, country code, issuer identifier, and account number per ITU-T E.118, and validate the trailing Luhn check digit.

Client-sideITU-T E.118Luhn-checked

ICCID

Tip: the sample is a generated dummy value, not a real SIM number.

Decoded fields

Paste an ICCID to decode its E.118 fields.
All parsing and Luhn validation run locally in your browser. Nothing is uploaded — and the sample is a non-real dummy value.

What an ICCID is

The Integrated Circuit Card Identifier (ICCID) is the globally unique serial number of a SIM card or an eSIM profile. It is laser-etched on the plastic of a physical SIM, encoded in the EF-ICCID elementary file on the card, and carried inside an eSIM profile package during remote provisioning. Unlike the IMSI — which identifies the subscriber — the ICCID identifies the card itself, and it stays constant even when the subscription or phone number changes.

Its structure follows ITU-T Recommendation E.118, the international numbering plan for telecommunication cards. Every compliant ICCID starts with the Major Industry Identifier 89, the prefix reserved for telecommunications, the same way payment cards start with other MII values under ISO/IEC 7812. After the MII comes a country code, an issuer identifier, an individual account number, and an optional trailing check digit computed with the Luhn (mod-10) formula.

When to use it

Reach for this decoder when you are debugging SIM or eSIM provisioning, validating a batch of ICCIDs before they are loaded into an HLR/HSS or an entitlement server, or sanity-checking a number a customer read out over the phone. Catching a bad Luhn digit or a wrong length before it enters a billing system saves a great deal of downstream cleanup. It is also handy when reverse-engineering a profile package, reconciling inventory across operators, or teaching the E.118 layout to a new team member.

Input and output

Paste any value between 18 and 20 digits. The tool first normalizes the input by stripping spaces, dashes, dots, and underscores, then rejects anything that still contains non-digits or falls outside the accepted length. It splits the digits into fields and reports each one:

MII

The first two digits. 89 marks a telecom card; the tool flags any other value because a non-89 prefix is not a standard ICCID.

Country code

An ITU-T E.164 dialing code of one to three digits. The tool greedily matches a small built-in map and shows unknown rather than guessing.

Issuer + account

The remaining digits before the check digit. The exact issuer/account boundary varies by operator, so the segment is shown intact for you to split.

Check digit

The final digit. The tool runs Luhn over the whole number and shows pass or fail plus the expected digit, so a single typo is easy to spot.

The plain-text summary in the result panel is what the Copy button places on your clipboard, so you can paste a one-line decode straight into a ticket or a script comment.

Common mistakes

Related tools

Luhn & length fields

The same mod-10 idea shows up in TLV length checks and other framed formats.

Open Length field →

Hex & bytes

Inspect the raw bytes of an EF-ICCID file or a profile package field.

Open Hex bytes →

More utilities

Parsers, decoders, and references for smart-card, SIM, and FIDO engineers.

All resources →