All trains which run on the UK Rail Network are allocated a headcode – a 4 digit alphanumeric code used to identify a train service.
Before we look at example headcodes, it is important to know how they’re broken down.
1. The first digit is the train class category.
0 represents a light engine movement, or locomotive convoy. An example of a light locomotive convoy headcode could be 0V60, because the first digit is a zero.
1 represents an express train / fast train. A 1 followed by a Q will represent a Network Rail Test Train. 1 is also used for rail charters, usually when the 1 is followed by a Z.
2 represents a semi fast or slow passenger train, which frequently stops at stations. A 2 followed by a Q would represent Network Rail Class 950 test train. 2Z02 is also often used for DRS inspection coach trains.
3 is a priority ECS (empty coaching stock) train, parcels, or a seasonal / weather related vehicle used to spray the rails or weeds.
4 is a fast freight train.
5 is an empty coaching stock train not in passenger use.
6 is an aggregates train, building materials, or other freight which is slower than a class 4 train.
7 is even slower than a class train, usually doing no more than 45mph.
8 is often weather related vehicles, and very slow trains.
9 is high speed services such as channel tunnel passenger services, Virgin trains and some VSTP planned passenger services. Class 9 headcode is also used for passenger services that are running with restrictions or out of gauge in places, that require special routing. The 9 headcode tells the signaller that this is a train with special requirements.
2. The second digit is route identifier
Some freight services and non-passenger workings may obscure the last 3 digits, in which case, only the first digit is meaningful and the rest can be ignored. If the 4th digit of a headcode is a letter then it is a masked headcode.
Regionally, most routes will have their own letter. For example (as of July 2018), the Brighton to Seaford trains use a C. Different local routes will have a different letter to tell apart train services. Q is usually used for test trains, and Z is usually used for Short Term Plan workings which don’t usually run. Z can be used for test trains, and charter trains.
3 and 4. Digits 3 and 4 are incremental for standard passenger services, and quite simply, identify particular train services. For example 0900 Brighton to Victoria will have maybe 1A01, and then the 0911 may have 1A02. The last two digits just identify the service on that day. This doesn’t apply to freight services as there aren’t quite as many services as passenger trains, each day.
Lets take a look at some example headcodes.
6V00 – the 6 represents a freight train. The V00 represents its route of Newhaven to Acton TC. It only ever needs V00 because there is only 1 a day.
2C49 – the 2 represents a stopper, or semi fast. The C represents the regional area, so in Sussex, the C would be the Brighton to Seaford services. The 49 represents the service number for that day. 2C50, 2C51, 2C52, 2C53 to name but a few, could be other Seaford Branch Services on that day.
1Z55 – the 1 represents a fast service, or one which infrequently stops at stations. The Z often refers to a STP short term planned service. 55 could be a hint to the traction if it is a railtour. Otherwise the 55 could be random.
0Z55 – The 0 represents a light locomotive movement, and the Z could refer to a short term planned service.
Some Open Rail Data Issues on Signal Diagram Maps
If one train shares the same headcode as another train, this can cause some conflicts shown on signalling map websites such as Traksy and Opentraintimes, most notably if the first instance of the headcode is obfuscated.
- 5Z11 may be a test train operated by a freight company who wishes for their headcodes to be obfuscated in public data.
- Another 5Z11 may be a passenger ECS train, which becomes “activated” during the same timeframe in which the non-passenger 5Z11 also runs.
- The “obfuscode” for the freight service, is passed on to the later-activated train and the later-activated service uses the freight’s “obfuscode” on signalling diagrams.
If the above instance’s freight service runs as “546Q”, a scrambled version of 5Z11, some (or all) subsequent 5Z11 trains activated on the same day as 546Q , will show on maps as 546Q.
This shouldn’t affect reports from TRUST, but will affect TD reports for the first occurrence of “546Q”. This has been an issue for some time, and there are no immediate signs of this being fixed by open data suppliers.