Ambimat GroupAmbimatAmbiSecureV2XeSIM & eUICCAmbiAutomationEngineering BlogAhmedabad · India · Est. 1982
eSIM / SIM / telecom

ICCID decoder for SIM cards

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

How to use this tool

What it does

Decodes an ICCID — the SIM card serial number — into its country, issuer and check-digit fields.

When to use it

Use it to validate a SIM identifier or read which issuer a card belongs to.

Worked example

Paste an ICCID to verify its Luhn check digit and read the issuer identifier.

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 →

Frequently asked questions

What is an ICCID?

The Integrated Circuit Card Identifier (ICCID) is the unique serial number printed on a SIM or eSIM profile and stored in the EF-ICCID file. It is defined by ITU-T E.118 and begins with the Major Industry Identifier 89 for telecommunications, followed by a country code, an issuer identifier, an individual account number, and an optional trailing Luhn check digit.

How long is an ICCID — 19 or 20 digits?

ITU-T E.118 allows up to 19 digits plus an optional Luhn check digit, so you commonly see 19-digit and 20-digit ICCIDs in the field. This tool accepts 18 to 20 digits, treats the last digit as the candidate check digit, and reports whether the value is Luhn-consistent. Some operators print the number without the check digit.

How is the Luhn check digit validated?

The Luhn (mod-10) algorithm doubles every second digit from the right, subtracts 9 from any result over 9, sums all digits, and requires the total to be a multiple of 10. The tool runs Luhn across the full ICCID including the trailing digit and shows pass or fail, plus the expected check digit so you can spot a single mistyped digit.

Why does the country code not always decode?

The country code follows ITU-T E.164 dialing codes and can be one, two, or three digits, with no length marker inside the ICCID. This tool uses a small built-in map of common codes and matches greedily; if the leading digits are not in the map it labels the country as unknown rather than guess. The issuer and account split also varies by operator.

Does the ICCID I paste leave my browser?

No. All parsing and Luhn validation run locally in JavaScript on this page. Nothing is uploaded, logged, or sent to a server. The built-in sample is a non-real dummy value generated in the browser, not a genuine SIM number.