Open a Hong Kong racecard and next to each horse you will find a small cluster of capital letters: TT, B1, H-, XB. That is the gear field, the equipment each horse will wear in the race, and it is one of the best-hidden columns in racing data. The codes are compact, a suffix changes what they mean, and none of it matches the lowercase letters used on UK racecards.
What follows decodes Hong Kong horse racing gear codes, after loading about 37,500 racecard entries into a database and counting what came out.
The codes
These are the Hong Kong Jockey Club’s own abbreviations. The count is the number of times each code appears across our racecard entries, with suffixed versions such as B1 or B- counted under the base code.
| Code | Equipment | Appearances |
|---|---|---|
| TT | Tongue tie | 21,254 |
| B | Blinkers | 12,055 |
| CP | Sheepskin cheek pieces | 4,725 |
| XB | Crossed noseband | 4,448 |
| H | Hood | 4,133 |
| V | Visor | 2,345 |
| SR | Shadow roll | 1,406 |
| P | Pacifier | 1,227 |
| PC | Pacifier with cowls | 1,029 |
| E | Ear plugs | 543 |
| BO | Blinkers with one cowl only | 186 |
| SB | Sheepskin browband | 32 |
| PS | Pacifier with one cowl | 2 |
| VO | Visor with one cowl | 1 |
The Jockey Club also lists CC (Cornell collar) and CO (sheepskin cheek piece on one side), but neither shows up in our data.
Of the 37,502 entries, 32,250 declare some gear. The tongue tie turns up in two thirds of those. That has a practical consequence: if your model needs a single “wears gear” flag, it will be true for most runners and tell you very little. The combination, and above all the changes, are where the information is.
The suffixes
Suffixes trip people up. A bare code means the horse has worn that gear before. A number or a minus sign after it says what is new. As the Jockey Club publishes it, 1 marks a first run with the gear, 2 a second run, and - gear taken off. So B1 is blinkers for the first time. B2 is the second run in them. B- is blinkers removed. Check the glossary on the Hong Kong Jockey Club site if you need the official wording.
Across the whole table, blinkers carry B- 1,177 times, B1 1,071 times and B2 642 times. That is nearly a quarter of all blinker entries wearing some kind of change marker, which is a lot higher than most people assume.
Want to model gear changes? Split the suffix into its own column. A string like TT/B1/H- is three separate pieces of information, and a plain text search for “B” will also match BO and PS.
Storing gear properly
For a database, we suggest three structures instead of one string.
A lookup table of codes with the equipment name, so a report can show “Blinkers” instead of B.
A table keyed by race and horse with one row per piece of gear, holding the code and a status of worn, first time, second time or removed.
A derived flag for “gear changed since the last run”, which is the field most people were after in the first place.
One thing to know about where the data lives: gear is part of the Hong Kong racecard, not the result. It is easy to miss. The result table for a race does not repeat it, so join the two on race and horse when you want to see how a horse ran in the gear it was declared with. Keep the racecard date on the joined row, so you always know which declaration you are looking at.
Margins are a different column
This article used to cover the distance behind the winner as well. That column has its own set of codes, like N, SH, HD and fractions such as 2-3/4, so it now has a page of its own: margins in racing data.
The Hong Kong racecard in our API returns the gear string as published, and the Hong Kong datasets include it in the racecard tables. The Hong Kong racing guide maps out the rest of the racecard fields.

Comments are closed