School Timetable Generator
Enter your classes, teachers and teaching load, and get a clash-free weekly timetable you can drag to adjust.
Building a school timetable by hand is a week of somebody's life and it still comes back with a clash in it. Put in your classes, your teachers, your rooms if you use them, and the teaching load each one carries, and this builds the whole week for you — checking on every placement that no class, teacher or room is in two places at once. What comes out is not fixed: switch to the view for any class and drag a lesson to a different slot, and it re-checks the move as you go, refusing anything that would double-book somebody. There is a view per class, per teacher and per room, so the same timetable answers "what is Year 8 doing on Tuesday" and "when is the language lab free" without being rebuilt. Print any of them, or export to PDF, on a layout made for it. It runs entirely in your browser and keeps your work there, so no pupil or staff name is ever sent anywhere, and there is nothing to install and no account to make.
Common questions
How do I input my school data?
Start in the left sidebar. Enter your Classes, Teachers, and optional Rooms (one per line). Then use the "Add Row" button in the Assignments section to define the teaching load using the format: Subject, Class, Teacher, Room (optional), and the number of periods per week required.
How does the automated scheduling algorithm work?
The tool uses a multi-retry greedy constraint solver. It attempts to place your teaching assignments into a 10-period day (adjustable) while strictly enforcing that no Class, Teacher, or Room is double-booked at the same time. If it fails to find a solution within 500 attempts, it will report the exact assignment that caused the failure, allowing you to tweak your constraints (e.g., add more teachers, reduce periods, or expand the school week).
I generated a timetable, but I want to make manual tweaks. Can I do that?
Yes. When viewing the timetable by Class, you can simply click and drag a coloured subject tile and drop it onto another empty or occupied slot. The tool instantly runs a background conflict check. If the swap would cause the teacher or room to be double-booked, the target cell will turn red and block the move. If it is valid, the swap is instantly saved to your browser.
What is the "Room View" for?
If you use the optional "Rooms" field in your assignments, the tool will generate a dedicated Room View. This shows every teacher and class scheduled in that specific room across the week, making it easy to ensure labs, ICT suites or specialised classrooms are not being double-booked.
Can I print the timetables or save them as a PDF?
Yes. Click the "Print / Export PDF" button in the top toolbar. The tool uses an optimised CSS print stylesheet that automatically hides all setup controls, expands the grid to fill the page, and forces the colour-coding to print correctly. It creates a clean, professional, A3/A4 landscape-friendly document.
Does the timetable save automatically if I close the browser?
Yes. The tool saves your base entities (Classes, Teachers, Rooms), your full assignment list, and the last generated timetable layout directly to your browser's local storage. You can close the tab, come back tomorrow, and your complete schedule will be exactly where you left it.
How many periods per day are supported?
You can select anywhere from 4 to 10 periods per day in the global settings. You can also check or uncheck any of the 7 days of the week (Sun–Sat) to suit your specific school calendar. The solver automatically adapts to whatever grid you define.
Is any of my school's data sent to your servers?
No. The solver, the drag-and-drop and the printing all run in your browser, and your data is stored only in that browser. Nothing is uploaded, so real pupil, staff and room names can be used safely.
Every tool, no daily limit
Unlock the full set of Arabic tools and use them as much as you need. Cancel whenever you like.
See the plans