What do the numbers on a train mean?
Every railway vehicle in the EU carries twelve figures painted on its side. They say what kind of vehicle it is and which country it is registered in — and the last one is computed from the other eleven, so it can also say whether the number is possible at all. This reads them from the act that defines them.
This is the only tool here that can prove a number wrong. Every other decoder on this site takes a serial on trust, because nothing in an ordinary serial number proves itself. This one does the arithmetic and shows it.
This one runs on your own device. It is worked out in your browser, so there is nothing to send and nothing to log. Where a tool on this site does send something out, that page says so and names where it goes.
The twelve figures
“Each railway vehicle shall receive a number consisting of 12 figures”
| Figures | What they are | Decoded here? |
|---|---|---|
1–2 | Interoperability capability and vehicle type | Yes |
3–4 | Country in which the vehicle is registered | Yes |
5–8 | Technical characteristics | No — the act defines no codes |
9–11 | Serial number | Nothing to decode |
12 | Check digit | Computed |
The check digit, and why it matters
The twelfth figure is not part of the identity of the vehicle. It is arithmetic on the other eleven, there so that a mistyped or misread number fails visibly instead of quietly pointing at a different wagon.
The rule: counting from the right, figures in odd positions are doubled and figures in even positions are left alone. The digits of each product are then added — so a product of 16 contributes 1 + 6, not 16. The units figure of the total is taken, and the check digit is whatever brings it up to ten.
Here is the act’s own worked example, 33844796100:
| Figure | 3 | 3 | 8 | 4 | 4 | 7 | 9 | 6 | 1 | 0 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
| = | 6 | 3 | 16 | 4 | 8 | 7 | 18 | 6 | 2 | 0 | 0 |
Adding the digits of those products gives 52. The units figure is 2, so the check digit is 8 — and the number is written 33 84 4796 100-8.
Ten minus nought is not a digit
The act works a second example, and it exists to settle exactly that. For
31513320198 the sum is 40, whose units
figure is nought. “Ten minus the units figure” would give ten, which
cannot be written in one box. So the act says outright:
“should this units digit be nought, then the check-digit shall also be nought”
A check digit written from the prose alone and never tested against
the specification’s own examples is a guess with good manners. Both
examples are asserted by check-evn.js, and both have to reproduce
the act’s stated sum as well as its answer — because getting the
right answer from the wrong arithmetic is the failure that survives review.
Figures 1–2: what kind of vehicle
| Prefix | Rolling stock group |
|---|---|
00–09 10–19 20–29 30–39 40–49 80–89 | Wagons |
50–59 60–69 70–79 | Hauled passenger vehicles |
90–99 | Tractive rolling stock and units in a trainset in fixed or pre-defined formation |
All one hundred possible prefixes are allocated — there is no unused range. For tractive stock the act fixes the first figure at 9 and gives the second a meaning of its own:
| Prefix | General vehicle type |
|---|---|
90 | Miscellaneous |
91 | Electric locomotive |
92 | Diesel locomotive |
93 | Electric multiple-unit set (high speed) [power car or trailer] |
94 | Electric multiple-unit set (except high speed) [power car or trailer] |
95 | Diesel multiple-unit set [power car or trailer] |
96 | Specialised trailer, |
97 | Electric shunting engine |
98 | Diesel shunting engine |
99 | Special vehicle |
The act says more about these two figures for wagons (part 6) and hauled passenger vehicles (part 7), setting interoperability against track gauge in a two-dimensional grid. This page does not reproduce those two tables, and the reason is worth stating: they are built from cells that span rows and columns, so a flattened copy attaches the wrong gauge to the wrong code and looks perfectly tidy while doing it. A wrong table nobody can see is wrong is worse than a missing one.
Figures 3–4: where it is registered
65 countries, 63 numeric codes between them. The act adds: “The information relating to third countries is given for information purposes only”
| Country | Letters | Figures 3–4 |
|---|---|---|
| Albania | AL | 41 |
| Algeria | DZ | 92 |
| Armenia | AM | 58 |
| Austria | A | 81 |
| Azerbaijan | AZ | 57 |
| Belarus | BY | 21 |
| Belgium | B | 88 |
| Bosnia-Herzegovina | BIH | 50 44 |
| Bulgaria | BG | 52 |
| China | RC | 33 |
| Croatia | HR | 78 |
| Cuba | CU | 40 |
| Czech Republic | CZ | 54 |
| Denmark | DK | 86 |
| Egypt | ET | 90 |
| Estonia | EST | 26 |
| Finland | FIN | 10 |
| Former Yugoslav Republic of Macedonia | MK | 65 |
| France | F | 87 |
| Georgia | GE | 28 |
| Germany | D | 80 |
| Greece | GR | 73 |
| Hungary | H | 55 |
| Iran | IR | 96 |
| Iraq | IRQ | 99 |
| Ireland | IRL | 60 |
| Israel | IL | 95 |
| Italy | I | 83 |
| Japan | J | 42 |
| Kazakhstan | KZ | 27 |
| Kyrgyzstan | KS | 59 |
| Latvia | LV | 25 |
| Lebanon | RL | 98 |
| Lithuania | LT | 24 |
| Luxembourg | L | 82 |
| Moldova | MD | 23 |
| Mongolia | MGL | 31 |
| Montenegro | MNE | 62 |
| Morocco | MA | 93 |
| Netherlands | NL | 84 |
| North Korea | PRK | 30 |
| Norway | N | 76 |
| Poland | PL | 51 |
| Portugal | P | 94 |
| Romania | RO | 53 |
| Russia | RUS | 20 |
| Serbia | SRB | 72 |
| Slovakia | SK | 56 |
| Slovenia | SLO | 79 |
| South Korea | ROK | 61 |
| Spain | E | 71 |
| Sweden | S | 74 |
| Switzerland | CH | 85 |
| Syria | SYR | 97 |
| Tajikistan | TJ | 66 |
| Tunisia | TN | 91 |
| Turkey | TR | 75 |
| Turkmenistan | TM | 67 |
| Ukraine | UA | 22 |
| United Kingdom | GB | 70 |
| Uzbekistan | UZ | 29 |
| Vietnam | VN | 32 |
Three codes that are not countries
These appear nowhere in the table above. They are in its footnotes, they identify operators rather than countries, and a decoder built from the table alone reports all three as unknown:
| Figures 3–4 | Operator | Limit |
|---|---|---|
64 | FNME — Ferrovie Nord Milano Esercizio | — |
63 | BLS — Bern–Lötschberg–Simplon Eisenbahn | used for vehicles authorised before 2007 |
68 | AAE — Ahaus Alstätter Eisenbahn | — |
And some countries have no code, or more than one
Cyprus, Malta, Monaco are listed with their letters and no numeric code at all. The blank is the act’s, and it is reproduced rather than filled in.
Bosnia-Herzegovina has 50 and 44.
Bosnia-Herzegovina uses 2 specific railway codes. A numerical country code 49 is reserved.
Figures 5–11: where the act stops
This is the part most decoders quietly invent. The act names the fields — technical characteristics, then serial number — and then does not define them. Parts 9, 10 and 11 contain no codes at all. Each says only that the Agency “shall manage the codes for the technical characteristics” and publishes them on its own website.
| Part | Covers | Contains |
|---|---|---|
| PART 9 | wagons, figures 5 to 8 | no codes — delegated to the Agency's register |
| PART 10 | hauled passenger stock, figures 5 to 6 | no codes — delegated to the Agency's register |
| PART 11 | special vehicles, figures 6 to 8 | no codes — delegated to the Agency's register |
And for tractive stock it goes further, handing the whole middle to the member states: “the meaning of these figures is defined by the Member States, eventually by bilateral or multilateral agreement”. A locomotive’s middle seven figures mean whatever its country says they mean.
So the act settles the shape of the number and delegates its middle. That is a fact about the number, not a shortcoming of this page, and the honest thing is to say which digits nobody here can read for you. The register is at era.europa.eu.
What the number does not tell you
It does not date the vehicle. There is no year anywhere in the twelve figures. Every other tool on this site dates something; this one cannot, because the act did not put a date in the number, and no amount of decoding will produce one.
It does not name the keeper. That is the Vehicle Keeper Marking — the two to five letters painted alongside the number — which the act defines separately and holds in a separate register.
A note on where this came from
Most of the tables on this site belong to somebody who has not been asked yet. This one did not need asking. EUR-Lex states its own terms: “Unless otherwise specified, you can re-use the legal documents published in EUR-Lex for commercial or non-commercial purposes”, under Commission Decision 2011/833/EU. So the tables above are complete rather than summarised.
It is the second source this project has found that says yes in advance. The first was gov.uk, for the number plate page. Sixteen others are still waiting on a letter.