Data explorer
TTC Pulse: delay explorer
TTC Pulse is a data pipeline that joins TTC delay logs, the GTFS schedule and live service alerts into bronze, silver and gold tables in DuckDB and Parquet. This page reads small aggregates exported from those gold tables.
Delay events
1,111,831
Bus, subway and streetcar, all years
Years covered
2014 to 2026
2026 is January only.
Routes and lines
298
Includes 4 subway lines.
Subway stations
71
Stations with delay events.
Choose a mode. It changes the three sections below.
When delays happen
Delay events by weekday and hour for bus. Darker cells have more events. Hover a cell, or move through the grid with the arrow keys, to read its count.
Show the numbers
| Day | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Monday | 1,302 | 1,008 | 806 | 627 | 1,385 | 7,128 | 10,761 | 6,548 | 5,809 | 4,539 | 4,489 | 3,920 | 3,678 | 4,551 | 7,363 | 10,338 | 7,381 | 5,791 | 4,956 | 3,562 | 2,788 | 2,628 | 2,102 | 1,739 |
| Tuesday | 1,399 | 1,029 | 874 | 651 | 1,350 | 6,999 | 11,412 | 7,636 | 6,750 | 5,070 | 4,636 | 4,211 | 4,431 | 5,146 | 8,471 | 11,669 | 8,590 | 6,951 | 5,699 | 3,848 | 2,947 | 2,738 | 2,139 | 1,785 |
| Wednesday | 1,445 | 1,086 | 894 | 628 | 1,290 | 6,869 | 10,929 | 7,091 | 6,493 | 4,969 | 4,773 | 4,256 | 4,357 | 5,381 | 8,674 | 11,846 | 9,235 | 7,321 | 6,090 | 3,936 | 3,213 | 2,998 | 2,325 | 1,783 |
| Thursday | 1,603 | 1,217 | 927 | 748 | 1,333 | 6,868 | 10,788 | 7,077 | 6,624 | 5,222 | 4,663 | 4,386 | 4,259 | 5,204 | 9,054 | 11,906 | 9,488 | 7,558 | 5,804 | 3,879 | 3,211 | 3,008 | 2,329 | 1,896 |
| Friday | 1,683 | 1,320 | 1,040 | 779 | 1,394 | 6,694 | 10,417 | 6,662 | 5,418 | 4,511 | 4,487 | 4,235 | 4,414 | 5,799 | 9,503 | 12,322 | 9,185 | 7,111 | 5,905 | 4,092 | 3,489 | 3,055 | 2,513 | 2,147 |
| Saturday | 1,804 | 1,472 | 1,305 | 1,107 | 1,060 | 3,500 | 4,015 | 2,544 | 2,996 | 4,155 | 4,327 | 4,463 | 5,567 | 5,127 | 5,382 | 4,723 | 4,889 | 4,579 | 4,376 | 3,252 | 3,109 | 2,903 | 2,270 | 2,118 |
| Sunday | 1,399 | 1,251 | 1,284 | 1,004 | 927 | 1,423 | 1,856 | 3,756 | 4,601 | 3,722 | 3,273 | 3,468 | 4,304 | 4,065 | 4,009 | 3,672 | 3,536 | 3,426 | 3,527 | 2,712 | 2,559 | 2,437 | 1,887 | 1,638 |
Why delays happen
The 8 largest causes for bus, with their share of all bus delay events. Other groups every remaining cause.
- Mechanical234,358 (32.4%)
- General Delay75,073 (10.4%)
- Utilized Off Route69,132 (9.6%)
- Late Leaving Garage60,058 (8.3%)
- Operations - Operator50,505 (7.0%)
- Investigation48,189 (6.7%)
- Diversion38,652 (5.3%)
- Emergency Services20,205 (2.8%)
- Other127,346 (17.6%)
Where delays happen
Top 15 bus routes
| Route | Name | Delay events | 90th-percentile delay, min |
|---|---|---|---|
| 32 | Eglinton West | 20,691 | 15.0 |
| 52 | Lawrence West | 20,190 | 18.8 |
| 29 | Dufferin | 20,060 | 15.4 |
| 36 | Finch West | 18,483 | 13.3 |
| 54 | Lawrence East | 15,949 | 16.3 |
| 35 | Jane | 14,771 | 16.4 |
| 53 | Steeles East | 14,503 | 14.4 |
| 95 | York Mills | 14,483 | 14.7 |
| 102 | Markham Rd | 13,851 | 19.6 |
| 7 | Bathurst | 13,450 | 13.9 |
| 34 | Eglinton | 12,914 | 13.7 |
| 63 | Ossington | 12,897 | 15.3 |
| 60 | Steeles West | 12,883 | 15.2 |
| 85 | Sheppard East | 12,392 | 16.3 |
| 39 | Finch East | 12,178 | 14.9 |
The 90th-percentile column averages each route's 90th-percentile delay across its time rows. It is not a 90th percentile of all events. Routes tagged not in GTFS did not match a GTFS route.
Delays per year
Delay events per year for each mode. Each mode has its own line style, so the lines can be told apart without colour.
2026 is not plotted. The yearly data covers January 2026 only. Its count is in the table.
Show the numbers
| Year | Bus | Subway | Streetcar |
|---|---|---|---|
| 2014 | 85,783 | 17,249 | 10,547 |
| 2015 | 67,885 | 18,439 | 11,540 |
| 2016 | 68,460 | 18,411 | 13,025 |
| 2017 | 62,752 | 16,648 | 12,555 |
| 2018 | 68,514 | 18,441 | 14,250 |
| 2019 | 58,533 | 17,385 | 11,024 |
| 2020 | 34,782 | 13,387 | 7,347 |
| 2021 | 39,301 | 15,150 | 14,167 |
| 2022 | 57,298 | 18,116 | 17,220 |
| 2023 | 54,669 | 21,704 | 13,782 |
| 2024 | 58,310 | 25,254 | 13,147 |
| 2025 | 61,358 | 23,762 | 13,103 |
| 2026 (January only) | 5,873 | 2,280 | 1,209 |
How this was built
The pipeline is written in Python. It uses DuckDB and Parquet, with bronze, silver and gold layers and a star schema. The full dashboard is a Streamlit app in the repository. This page uses five aggregate files exported from the gold tables. The data records delay events only.
The route tables and the yearly chart count 9,171 fewer subway events than the total above, because subway events with no line recorded are not assigned to a route.