The IMO number
An IMO number is seven digits, given to a ship once, and it stays with that ship until it is scrapped. The ship's name will change, its flag will change, and its owners will change several times. The IMO number does not. That is why it is the only field on a ship record that is safe to use as the key for everything else.
What the number actually is
The number is issued under the IMO Ship Identification Number Scheme. It belongs to the hull itself, not to a company, a registration or a radio set. Once issued, it is never given to another ship, not even decades after the first ship is scrapped. This is the main purpose of the number: a fixture recorded in 2009 still points to exactly one ship today, whatever that ship is now called and whoever trades it.
The number survives a change of name, a change of flag, a sale, a new technical or commercial
manager, a new classification society, and conversion from one trade to another. When written in
full it usually has a prefix, as in IMO 9074729, but the prefix is not part of the
number.
A name is the opposite. It is a label the current owner chooses, reuses and repeats, and the register shows that a name does not work as a key.
Ships that share their name with at least one other ship, across 5,027 names used by more than one ship. Another 11,869 ships have been inspected under more than one name. If you match on the name, you are matching on a label that is neither unique nor stable.
The check digit
The seventh digit is not information about the ship. It is calculated from the first six, so a damaged number can usually be spotted without asking anyone. Multiply the first six digits by 7, 6, 5, 4, 3 and 2 in that order and add the results. The last digit of the total must equal the seventh digit.
IMO 9074729 digit 9 0 7 4 7 2 | 9 weight 7 6 5 4 3 2 | product 63 0 35 16 21 4 | 63 + 0 + 35 + 16 + 21 + 4 = 139 last digit of 139 is 9, which is the seventh digit. Valid.
This site has a free IMO number checker that does this calculation for you, on one number or on a whole pasted column. It shows each step of the calculation, not only a result, and when only the last digit is wrong it suggests the number that was probably meant. When the check digit is correct, it also looks the number up in our register and shows the ship: its name, type, flag, tonnage and last reported position. You do not need an account.
A second rule costs nothing and removes a large amount of bad data: a real IMO number starts with 5, 6, 7, 8 or 9. Numbers below that range were never issued. As code:
def imo_is_valid(candidate: str) -> bool:
if len(candidate) != 7 or not candidate.isdigit():
return False
if candidate[0] not in "56789":
return False
weighted = sum(int(d) * w for d, w in zip(candidate[:6], (7, 6, 5, 4, 3, 2)))
return weighted % 10 == int(candidate[6])
Data vendors and spreadsheets will give you IMO 9074729, or 9074729.0
when the number has been through Excel as a decimal, or a blank. Remove the prefix and the decimal
ending, then run the check. A number that fails should be returned as empty, never as a value that looks
correct.
What the check digit does not catch
The check catches every swap of two neighbouring digits, and almost every single mistyped digit,
but not all of them. Some of the weights share a factor with ten, so a few mistakes pass the
calculation: the third digit changed by an even amount, or the second, fourth or sixth digit changed
by exactly five. 9054729 and 9574729 both pass the same test as
9074729. A number that is correctly formed is not necessarily a real one.
That is the limit of the check. A check digit tells you a number is not obviously mistyped. It never tells you a ship exists. Only a lookup in a register can answer that, which is why the checker does one.
Why a desk validates before it looks anything up
Numbers already in the database that came from AIS, looked exactly like IMO numbers, and were not. Without a check, every one of them would have been searched in every data source.
The first cost of skipping the check is money and limited allowances. Ownership lookups are strictly metered, and the one route to official registered ownership is limited to roughly 78 ships per 7-day period. If you spend that allowance on numbers no register ever issued, you lose the whole week's lookups.
The second cost is much worse, and it is why this is a rule built into the database, not just a matter of formatting. A bad number that happens to pass the check can match a real record. When that happens, one ship's registered owner, inspection history and sale record are attached to a different ship. Nothing in the result looks wrong. The details are real, the company is real and the dates are real, yet the broker quoting from that record is offering the wrong ship to a charterer.
The rule that follows is simple: never invent an IMO number to fill a gap. A ship without a number is a ship without a number, and its record can still hold a name, a deadweight and a position. A ship with an invented number is a hidden risk: one day it will match a real record by mistake.
MMSI is not a substitute
The number that arrives with a position over AIS is usually the MMSI. It is tempting to use it as the key, because it is always there. But it is exactly nine digits, it belongs to the radio equipment rather than to the hull, and it changes when a ship changes flag, because its first three digits identify the flag state. If you key a fleet on MMSI, every change of flag creates a new ship and leaves the old one without any connection to it.
The same data feed carries two other things that look like identifiers but are not. Ships on inland waterways send an ENI number, issued under a separate scheme for European inland navigation. And many receivers pass on shortened or padded values that are neither. Seven digits taken from a nine-digit MMSI can even pass the check digit by chance, and the rule that the first digit must be 5 to 9 exists to reject those.
MMSI is the right key for a radio transmission. The IMO number is the right key for a ship. Positions arrive under the MMSI and must be matched to the IMO number before they are added to a ship record.
The same problem, for companies
Ownership has its own version of this problem. A shipping company's name is written a dozen different ways across registers: with or without a comma before "Ltd", in capitals or in normal case. Even a match that ignores capital letters still treats these as different firms. The IMO company number is the stable key, with one number for each legal company, issued once. Without it, a manager with 478 ships can appear to have none, and that is exactly the company a broker most wants to reach.
Not every ship has one
The register holds 101,900 ships, and every one of them has an IMO number, because that is the condition for being included. The number of ships and boats afloat in the world is much larger, and the difference is not a gap in coverage.
The scheme applies to seagoing merchant ships of 100 gross tonnage and above. It leaves out wooden ships, pleasure boats not used for trade, ships with no engine, and a long list of harbour craft, barges and small work boats. Fishing vessels were added later, on a voluntary basis, which is why coverage of fishing vessels is patchy rather than missing. Many vessels afloat never receive a number at all, and no database can provide one for them.
For a chartering desk, this is the right trade-off. Every ship a broker fixes is well above the size limit, so a register built on the IMO number contains all the relevant ships and none of the irrelevant ones. It is still worth knowing where the boundary lies before you treat a ship count as a count of every vessel in the world.
The IMO number is the one field to be strict about. You can be flexible about everything else and the data still works. For example, there may be a name spelled three ways, a deadweight rounded by whoever typed it, or a port written in short form, and the ship can still be identified. If you are flexible with the IMO number, you get two records for one ship, or one record for two ships.
References
- IMO, IMO identification number schemes, resolutions A.600(15) and A.1078(28). imo.org
- IMO, International Convention for the Safety of Life at Sea (SOLAS), 1974. imo.org
- ITU, Recommendation ITU-R M.585-8: Assignment and use of identities in the maritime mobile service, 2019. itu.int
- IMO, AIS transponders, on the carriage requirement in SOLAS regulation V/19. imo.org
Related
Neptune Atlas
Neptune Atlas checks the digit twice: once in the importer, so a bad row is rejected with a clear message, and again in the database, so a bulk load cannot skip the check in the application. Every ship record is keyed on the IMO number, so a new name or a change of flag updates the ship already on file. It does not create a second record without telling anyone. Every paid plan starts with 7 free days. A card is needed to start them, and cancelling before they end costs nothing.
Try 7 days free Ship chartering software for brokers What each plan includes