Communicating accurate information to our operator’s users is always our highest priority. This was recently echoed by Secretary of State for Transport, Grant Shapps’ letter to ALBUM stating “I cannot stress enough the importance of first class communication to passengers and local authorities, so that those for whom travel remains essential are absolutely clear about what buses will be running where and when”.

Pre COVID-19, bus services ran a regular timetable during the week, with reduced services on weekends and bank holidays. ‘Weekends’ can be easily defined, but moveable bank holidays become more complicated. UK bus operators use one of two data formats for timetables – GTFS and TransXChange. These vary in approach, so which data exchange format offers the most accuracy, simplicity and ease of use?

When the UK government moved the 2020 early May bank holiday from Monday 5th May to Friday 8th May (to mark the 75th anniversary of VE day) we needed to fully understand how each format defined holiday days and what to do when they moved.


GTFS define exclusions using exact dates. The early May bank holiday has the definition of “2020-05-08” (using the ISO8601 date format standard). In normal operating situations, “2020-05-08” and other exclusion dates automatically defer to a bank holiday timetable rather than a Monday – Friday timetable.


In TransXChange, holidays are defined with names, which then need to be converted into a date in the Passenger system. The 2020 early May bank holiday (MayDay) – due to the move – didn’t follow any set rules for the new date it fell on and required a manual override. Although the moving of bank holidays might seem an unlikely occurrence, many holidays have variable dates and the chance to be misinterpreted.

Table of elements available in the TransXChange schema

Further to interpreting TransXChange’s bank holiday elements is understanding the difference between the ‘calendered’ bank holiday and its corresponding day off – known as a substitute holiday. Substitute holidays (the subgroup Displacement Holidays in the chart above) occur when the holiday could fall on a weekend, and needs an additional weekday ‘off’ for schools and businesses to enjoy. 

Displacement holidays move annually

In 2019, Christmas Day and Boxing Day were both on weekdays, so ChristmasDayHoliday and BoxingDayHoliday were on the same days as ChristmasDay and BoxingDay.

In 2020, BoxingDay is on a Saturday so BoxingDayHoliday falls on the next available weekday. 

In 2021, ChristmasDay and BoxingDay both fall on the weekend so ChristmasDayHoliday will be Monday 27th (the next available weekday) and BoxingDayHoliday will be Tuesday 28th.

In 2022, ChristmasDay will have a substitute holiday because it falls on a weekend, but BoxingDay, falling on a weekday, will not. 

This is a good example of how simple errors could lead to incorrect information being displayed, as ChristmasDayHoliday will represent a date after BoxingDay / BoxingDayHoliday.

New Years Day and Scotland’s 2nd Jan Holiday 

All UK countries have a bank holiday for New Years Day known in TransXChange NewYearsDay, but Scotland also has an extra bank holiday – Jan2ndScotland

If either fall on a weekend, the substitute holiday is on the first available weekday. In 2022, NewYearsDay represents Saturday 1st and NewYearsDayHoliday represents Monday 3rd. Scotland then receives Jan2ndScotlandHoliday on Tuesday 4th.

More reasons to move

Easter Friday and Easter Monday don’t need substitute days as they always fall on weekdays – but they have their own complications. These holidays bookend Easter Sunday – which falls the first Sunday after the first full moon on or after spring equinox. As a result, the TransXChange elements for EasterFriday and EasterMonday can represent various dates from late March to April, again with margin for errors.

Bank holidays are complicated, data shouldn’t be

The TransXChange specification tries to simplify things by giving each holiday a ‘name’ – so network scheduling staff can say “not on MayDay” – instead of providing a list of dates. TransXChange’s approach means that whoever uses that file could potentially interpret each holiday as a different date and misinterpretations can then spread from supplier to supplier. In comparison, GTFS states in the file the exact date – there’s no confusion there.

TransXChange has been the de-facto format for UK bus operators, but GTFS is prevalent further afield in public transport due to its simplicity. We base our internal representation of network data on GTFS’s structure for the same reason – plus a simple format reduces ambiguity. GTFS may be more limiting than TransXChange but it does reduce the chance of unexpected results appearing and with bus services providing crucial services to keyworkers across the UK, accuracy is of the utmost importance.

As a response to COVID-19, we chose to roll out our Live Buses feature to all our operators, so that even as timetables undergo frequent change, users have access to live bus locations. People still need tools to be able to plan in advance and be able to check timetables and journey planners – which is where and why accurate data is so important. With whatever changes the industry sees post COVID- 19, simplicity and clarity must be a key consideration for future data formats.

Keep up to date with our email newsletter