Timetables were introduced in OpenTTD 0.6.0-beta2 (r10236). The timetable button is located at the top right of the orders window. All orders for the selected vehicle are displayed inside the Timetable window. You can choose how much time a vehicle should spend in a station (in days or cycles - configure via advanced setting) and if you wish, how much time it should take the vehicle to travel between points of its route, as well as specifying a maximum speed at which the vehicle should travel along that section of its journey. There is a counter stating whether a vehicle is on time or whether a delay has occurred.

The timetable interface, accessible from the orders window.

Change Time Changes time period assigned to line in timetable. Will pop up a window to prompt for the new duration.
Clear Time Removes time period. Allows the vehicle to take as long as it pleases with the selected journey.
Change Speed Limit Changes the maximum speed at which the vehicle should travel along the highlighted section of its journey. Will pop up a window to prompt for the new speed limit.
Clear Speed Limit Removes speed limit. The vehicle will then travel as fast as it can.
Start date Sets the date timetable should start at. Will pop up a window to prompt for the starting date of timetable.
Reset late counter Sets late counter to zero. Declares that the vehicle is travelling on time, so it will stop trying to catch up or slow down.
Autofill Fill automatically based on next journey. Fills data for you, so you can tune them later.
Non-destructive autofill Fill automatically based on next journey, leaves waiting times untouched. Useful, when updating timetable to new traveling times, for example, when using a new faster vehicle on the old route.
Enabling autofill clears any previous timetable. Be sure to use non-destructive autofill, turned on by ctrl+clicking on an autofill button

Using timetables

Timetables are useful for preventing vehicles from "bunching up". Spreading out your vehicles helps to keep a more even flow of cargo from station to station, but breakdowns, traffic, and such delays will normally cause them to gather together into a single queue.

To demonstrate, we shall show a simple case with three buses travelling a circuit between three towns. We'll start off with the buses and route already set up, using shared orders. Sharing orders is very helpful here, as they will also share timetables.

To start with, bring up the first buses' timetable, and enable Autofill. Then set them on their travels. As the first bus completes each part of its route, the timetable window will populate with the time it took.

'Autofill' will measure how long your vehicle takes to travel each leg of the journey, and how long it spends in stations.

As the convoy of new buses travel, stop the last bus after each station, so that they are nicely spread out. (If you have a different number of vehicles to stations, just try to estimate equal spacing. If any of them say that they're late once in place, reset their late counter with the button.) Once the first bus has made one complete route, the timetable will be populated, and you can disable autofill. Stop the bus for now.

Our example bus route, once automatically measured.

Unless you were unlucky, the time measured will have been that of a perfect run: no breakdowns, no traffic, just the bus hurtling along at top speed the whole way. It also probably didn't have much or any cargo to load or unload if the stations are new too.

This means that the timetable is hopelessly optimistic, as it represents the best possible case, rather than the common case. To correct this, select each leg of the timetable in turn, click Change Time, and type in a new duration to add a little slack to the timetable.

Change the timetable durations to add slack time.

Now, start the buses! You might want to do this while paused to make sure that they all move off at once, else your careful efforts to spread them out will be in vain.

Chances are, at least at first, you got the slack time wrong. Timetabling is still a bit of a learned craft, and far from a magical "automatically spread out vehicles with same orders" option (yet). Let the buses run for a while (it needs to be long enough for a few breakdowns---a year should do), and see what their timetable windows say.

Without enough slack, breakdowns and other delays will lead to accumulating lateness.

Oh dear. Although eight days isn't much, the differences in lateness mean that our buses aren't so nicely spread out any more. Add a little more slack to the timetable. Don't click the Reset Late Counter button---that will make the buses forget how far they are from their evenly-spaced objective, and make them instead try to match how they are currently bunched.

If your buses are never late, and seem to be spending a lot of time waiting about at stations without transferring passengers, you probably added too much slack instead.

Your buses should now be pretty happily set up, and safe to be left to their own devices while you go work on some other route. Here's how our example looks after five years on fast-forward:

With enough slack, the buses are still nicely spread out after five years.

Despite repeated breakdowns, they are still evenly spaced around the loop. But what happens when a new bus type is released, and they get upgraded?

New, faster vehicles will limit themselves to the unmodified timetable by waiting around at stations.

The good news is that the timetable will continue to work, and your stations will still see regular buses, rather than hours of waiting and then three at once. The bad news is that your new, faster buses will be sitting around waiting for time to pass so that they've synchronised with a timetable set up for old, slow buses. Because this isn't wrong, as such (the buses still keep their spacing, deliver cargo, and make money), you won't get any warnings about it, either.

So that's the downside of timetables---you need to update your timetables when you get new vehicles. How much work this is will depend on how much you use multiple vehicles which are not already rate-controlled by some other mechanism, such as full load, and how skilled you get at estimating required slack. I suggest you keep it to just buses, and possibly mail trucks.

The upside is that one of the big, big factors when calculating your station ratings is how long it has been since the last vehicle showed up. People do not like to be kept waiting for the bus, even if the bus is actually a road train of five large, fast buses which will whisk away all nine-hundred passengers without strain. After about ten years (and a little cheating to skip forward to new bus designs for the above), here are the station ratings for our trivial route:

Regular buses keeps ratings higher than an infrequent hairball, even if they can't keep up with production.

Three buses is nowhere near enough to service Overnfield city station, but we avoid a terrible rating (and subsequent local authority obstruction of anything we do nearby) by at least offering a frequent service.


The way that timetables are currently implemented, there is no global frame of reference for a vehicle's timetable. Each timetable is relative to the time that vehicle's timetable was last reset. This makes some tasks, for which real world timetables might be used, difficult or impossible:

In fact, most scheduling tasks other than creating headway between the vehicles operating to a single set of shared orders are difficult.


Automatic Spacing

Since version 1.4.0 it has been possible to automatically space vehicles using the timetable feature.

The basic way this works is as follows:

For example, let's say you have a bus that takes 100 days to complete its route. If you then clone this bus 9 times, you will have 10 buses sharing the orders. Automatically spacing them means that each bus will set out 10 days after the last. Each station will be serviced every 10 days.

How to use:

You may find it easier to pause the game after the timetable has been filled, so that you can clone the other vehicles and set up the timetable without worrying about the first vehicle continuing on its route too far.

It's not strictly necessary to set a start date in the future or to even stop the first vehicle. Provided there is a little slack in the timetable, the vehicles will speed up and slow down as needed and will eventually space out evenly. The above is just the simplest method I have found.