gizmobench

Work Schedule Maker for Repeating Shifts

Type your rotation as one code per day, such as D D O O N N O O, set the anchor date that step 1 falls on and the time zone the shifts are worked in, and every month you choose fills from it. Dates are counted in whole calendar days from the anchor, so a cycle keeps its place across month ends, year ends, leap days and dates before the anchor, and a 23-hour or 25-hour daylight-saving day cannot move it. A shift whose end time is at or before its start ends on the next date, and when it runs past midnight the next day's cell shows it running until its end time. When the clocks change at the edge of or during a shift, nothing moves quietly: a skipped start or end either moves later by the skipped time or stops the calendar with the date named, a time that happens twice uses the earlier or the later one as you choose, and every shift it touches carries a note, while the shift list gives its exact times and real length. Change any single date with an exception; exceptions are kept by date, so they reapply when you edit the rotation, the anchor or the months shown. Download up to 24 months as an ICS file with start and end times in UTC, print one month a page, copy the shift list as text, or save the project as JSON to open again later.

Loading the shift calendar.

Loading the shift calendar.

Common questions

How do I type a rotation like 4 on, 4 off?
Write one code per day in order: D D D D O O O O, or the shorthand D*4 O*4. O, OFF or a hyphen is a day off, and every other code must match a shift type in the table, where you set its name and its start and end times. A code is one to four letters or digits starting with a letter, and upper or lower case both work. A rotation can be up to 400 days long, and it repeats from the anchor date in both directions, so dates before the anchor are filled too.
How are night shifts and 24-hour shifts handled?
A shift whose end time is earlier than its start ends on the next date: a 19:00 to 07:00 night that starts on Saturday ends on Sunday at 07:00, and Sunday's cell shows it running until 07:00. An end time equal to the start time is a 24-hour shift, so 07:00 to 07:00 covers a 24 on, 48 off rotation. The shift type table shows each type's length and whether it ends the next day, and each ICS event carries its real end date.
What happens when the clocks change for daylight saving?
Times are resolved in the time zone you name, using this browser's own time zone data, and the page lists every clock change in the months shown. A night that spans a change keeps its wall times and shows its real length: in New York, 19:00 on 31 October 2026 to 07:00 the next morning lasts 13 hours, because the clocks go back an hour overnight. A start or end that falls in the skipped hour either moves later by the skipped time or stops the calendar with the date named, and one that falls in the repeated hour uses the earlier or the later occurrence. You choose both rules, and every shift they touch carries a note with its exact times.
Do exceptions survive when I change the rotation?
Yes. An exception belongs to a date, not to a step of the rotation, so editing the codes, moving the anchor date, changing the time zone or showing different months reapplies it to the same date. Exceptions outside the months shown are kept and counted, and they are saved with the project. If you remove a shift type that an exception uses, the page names the date that needs a new choice instead of dropping the exception.
What is in the ICS calendar file?
One event per shift in the months shown, with the start and end written in UTC so a calendar app places each one at the right moment, the shift name as the title, and a description with the wall-clock times, the time zone, the UTC offset, the length, any exception note and any clock-change note. Days off are not events. Each event's identifier is made from its date and this calendar's own random code, so a file made again from the same project reuses the same identifiers. Long lines are folded and text is escaped the way the iCalendar standard requires.
Does it work out pay, overtime or rest rules?
No. It shows the shifts you enter and adds up their clock time, which counts a night across a clock change as the hours that actually pass, 13 or 11 rather than 12. It does not calculate pay or overtime, check labor-law rest periods, know public holidays or holiday entitlement, or suggest who should work when.
Where is my schedule stored?
In this browser. After your first change the project is kept in local storage and restored on your next visit, and the Start over button above the tool forgets it. The ICS file, the JSON file and the printed pages are made on your device, and nothing is uploaded. Save project JSON writes the whole project to a file, and Open project JSON checks a file completely before replacing what is on the page, so a damaged or unrelated file changes nothing.

Displays the shifts you supply, with dates counted exactly from your anchor date and times resolved in the time zone you choose using this browser's time zone data. It does not calculate pay, labor-law rules, holiday entitlement or optimal staffing. Overnight shifts and daylight-saving choices are explicit.