Timetable Generator

Optimize your timetable at the University of Toronto!

There may be a better timetable out there for you...

Most of the courses you take have multiple lecture, tutorial, and perhaps practical sections. This means that for the same set of courses, you can have many different timetables.

How did you pick the timetable that you have right now? Chances are you didn't go through every single possibility and pick the best one, because there were just too many possibilities. As a result, you can't be sure that the timetable you've chosen is the best you could have.

Enter Timetable Generator. This handy little program that I've written will generate all the possible timetables (that don't have conflicts) for your course load. More importantly, you can sort the generated timetables by various criteria, such as number of days off, number of evening classes, number of long gaps between classes, and so on. You can choose which criteria are the most important to you, and instantly see the best possible timetable you can have.

This program is a work in progress. Stay tuned for many cool new features!

Skip ahead to Current Features, Upcoming Features, Screenshots, FAQ, or Related Software.


**NEW**: A web version of Timetable Generator is now available. It is currently in BETA status and may be unstable or buggy. It also doesn't support all the features of the desktop version yet (e.g. sorting timetables). If you encounter any problems while using it, please let me know, and use the desktop version until the problem is fixed.

The latest version is Timetable Generator 0.9.65. It works with the 2014 Summer and 2014-2015 Fall/Winter timetable data.
Download it here:
Older versions can be downloaded here.

Note: The Mac version has been discontinued because I no longer have access to a Mac computer. (Old Mac versions can be found on the old versions page, but they may not work with the latest timetable data.) Please use the web version instead, or take a look at the Related Software section for alternatives.

For developers: I have released an open-source API that allows you to build your own programs using the functionality of Timetable Generator.

Current Features

Upcoming Features (stay tuned!)


Windows Mac
Selecting your courses
Viewing your timetables
Sorting the timetables


I press the "-->" button to look at the next timetable, but the timetable on the screen does not change. Is this a bug?
Look at the timetable in the Spring Term tab and see if that has changed. Often, two different timetables will have the same times for fall courses but different times for spring courses.

The program hangs during the second half of the sort operation when sorting a large number of timetables
This is normal. The program has not crashed, it's just not responding while it's performing the sorting. This issue will be fixed in a future version. In the mean time, if this happens, just wait patiently while the sorting completes.

On Mac OS X, I get an error saying "Cannot read timetable data from inventory file" when I open up the program.
Are you trying to run the application directly from the disk image? Copy the application from the disk image to another location (e.g. Applications) and it should work fine.

On Windows, I used Notepad to modify the inventory.txt file, and now the program crashes on startup.
Avoid using Notepad, it can do funny things with character encodings and such. Use WordPad instead, or even better, Notepad++.

Related Software

Course Planner, a tool that allows you to assemble and see a single timetable

CourseFinder, U of T's official course search tool that helps you select courses (you can then use Timetable Generator to figure out how to arrange them in your schedule!)

CourseMate, a website designed to help U of T students pick their courses. CourseMate contains information about prerequisites, program requirements, and course statistics aggregated from the Anti-Calendar. Note: CourseMate has not been maintained for a while.

And of course, don't forget to check out the web version of Timetable Generator!

Contact Info

Your suggestions (and feature requests, bug reports, etc.) are welcome. Please send them to