FREE · PLANNING & SCHEDULING TOOLS
School Timetable Generator.
Generate a school timetable automatically from classes, teachers, subjects and rooms: no clashes, availability respected, drag-and-drop editing, PDF and Excel.
Your data stays in your browser: nothing is uploaded.
Step 1 of 7: School
School
Working days, the periods of a day (lessons and breaks) and the slots closed for everyone.
Checks
Steps to use School Timetable Generator
Follow the six steps: school days and periods, subjects, teachers with their availability, weekly hours of each class, shared rooms and preferences. Press Generate; then view the timetable by class, teacher or room, drag lessons to adjust it and export it.
How School Timetable Generator processes your input
Hard constraints: no teacher, class or room double-booked, teacher unavailability, closed slots, weekly maxima, special rooms and double periods without a break. Soft preferences (gaps, spread, consecutive periods, heavy subjects in the morning, slots to avoid) are weighted and minimised by tabu search in a Web Worker with a seeded random generator, so the same data and seed give the same timetable.
School Timetable Generator: worked example
The built-in example (a fictitious school with 6 classes, 11 teachers, 5 days of 7 periods, a lab, a sports hall and a computer room) is generated with every hard constraint met in about a second on a desktop computer.
Build a timetable in six steps
- School: tick the working days (Monday–Friday, Monday–Saturday or Sunday–Thursday presets), list the periods of the day with their breaks and lunch, and close the slots that are free for everyone, such as a free afternoon.
- Subjects: give each one a colour, the room it needs (laboratory, computer room, sports hall or another type) and whether its lessons are single periods, may be doubled or must be doubled.
- Teachers: tick the subjects each person teaches, set optional daily and weekly maxima and click their availability grid: once for unavailable, twice for “rather avoid”.
- Classes: enter the hours per week of each subject and choose the teacher. A live counter compares the hours requested with the lesson slots of the week, and you can duplicate a class to create a parallel one.
- Rooms and preferences: add the shared rooms, then choose how strongly to avoid gaps, spread subjects over the week, limit consecutive periods and keep heavy subjects in the morning.
Lists of names can be pasted, one per line. Load the example (a fictitious school with 6 classes and 11 teachers) to see a complete project before entering your own.
Generate, check and adjust
Before the calculation, the tool checks the data and explains each blocking problem, for example a teacher assigned 26 hours with only 22 available slots, or a class asking for more hours than the week contains. Each message takes you to the step to fix.
The calculation runs in your browser and shows its progress; you can cancel it. The result lists any preference issues left; click one to highlight the slots concerned. Switch between the views by class, by teacher and by room.
To adjust the result, drag a lesson to another slot, or click it and then click the target. Green slots are allowed; red slots are refused and say why (teacher busy, room taken, closed slot). Dropping a lesson on another lesson of the same class swaps them. Lock the lessons you want to keep, then press Regenerate: locked lessons stay where they are.
Export, print and share
Export one timetable or all of them as an A4 landscape PDF (one page per class, teacher or room, Arabic and other scripts included), a PNG image, an Excel workbook with one sheet per class and teacher, or a CSV list of every lesson. Print uses a clean layout without the page around it.
Each teacher’s week can be exported as a recurring calendar (.ics) for Google Calendar, Outlook or Apple Calendar; for single events see the ICS Event Generator. Save the whole project as a .json file to continue later or on another computer, or copy a share link: the data travels inside the link. To plan the school year itself, use the Printable Calendar.
Questions about School Timetable Generator
How large a school can it handle?
It is designed and tested for up to about 30 classes, 60 teachers and 1,000 lessons per week. Larger projects work but take longer. University timetables with split groups and cross-class options are not supported.
Are my school’s data sent anywhere?
No. Everything is calculated in your browser and saved only in this browser, unless you save a .json file or copy a share link yourself. A share link contains the project in its address, after the # sign, which browsers do not send to the server.
What if the generation fails or some lessons are not placed?
The tool says which lessons are missing and why, for example a teacher with no free slot left at the same time as the class. Free some slots, spread the hours between more teachers, add a room, or raise the calculation time, then generate again.
Will I always get the same timetable?
Yes for the same data and the same seed, which is shown with the result and saved in the project file. Regenerate uses a new seed to propose a different timetable.
Does the PDF support Arabic?
Yes. The PDF embeds fonts for Arabic and the other scripts of the site, with right-to-left tables on the Arabic page, and the text remains selectable.
Is School Timetable Generator free, and do I need an account?
Yes. This tool is free to use in your browser without an account. Processing takes place on your device.
What are the limits and what should I check?
For schools and training centres up to about 30 classes, 60 teachers and 1,000 lessons per week. No university-style split groups or cross-class options, no CSV/Excel import. The result is a proposal to check: it is not guaranteed to be the best possible timetable. Review the result before using it in your work.
Is my input sent to a server?
Your input is processed in your browser and is not uploaded by this tool. Files and pasted text are cleared when the page is refreshed. Normal website requests are still required to load the page and its libraries. Read the privacy explanation.