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.
ICCID
Decoded fields
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
- Assuming every ICCID is 20 digits. E.118 permits up to 19 digits plus an optional check digit; both 19- and 20-digit forms are valid in the wild. An 18- or 19-digit value may simply omit the Luhn digit.
- Reading a Luhn failure as a fake card. Not every operator prints a Luhn-protected ICCID. A failure usually means a transcription error, but it can also mean the operator never added a check digit — check both possibilities.
- Confusing the country code with the home country. The E.164 code reflects where the card was issued, not where the SIM currently roams, and it can be one to three digits with no internal delimiter.
- Mixing up ICCID, IMSI, and EID. The ICCID identifies the card, the IMSI identifies the subscriber, and the EID identifies the eUICC chip. They are different identifiers with different lengths and rules.
- Pasting an MSISDN. A phone number is not an ICCID. If the value does not start with
89, you are almost certainly looking at a different identifier.
Related tools
Luhn & length fields
The same mod-10 idea shows up in TLV length checks and other framed formats.
More utilities
Parsers, decoders, and references for smart-card, SIM, and FIDO engineers.