Skip to main content
NyankoTools

Shift Schedule & Duty Roster Maker (Printable)

Enter your team, a month and how many people you need each day, and the tool builds a members-by-dates roster with workloads spread as evenly as possible. It respects requested days off and a maximum streak of working days, and warns you about days it cannot fully staff. Print it or export CSV for a spreadsheet. Everything runs in your browser, and nothing you enter is sent to a server. To look up the days of a month first, try the Calendar Generator.

🔒 Runs in your browser · Your data is never sent to a server

When everything else is equal, earlier names are picked first.

Use "Name: days". Separate days with commas, and write a run of days as a range such as 15-17.

Requested days off (click a day to mark it off)

Click (or tap) the days each member wants off. Click again to clear. Selected days are never assigned.

How to use

  1. Enter names under "Members (one per line)", then set the year, month, "People needed per day" and "Max consecutive working days".
  2. If someone needs days off, add a line such as "Alice: 3, 10" under "Requested days off as text (one member per line, synced with the grid above)".
  3. Toggle "Weekends and Japanese holidays off (no assignments)" if needed, and adjust the settings for any day that shows a warning.
  4. Press "Print" to print, or "Copy CSV" / "Download CSV" to use the roster in a spreadsheet.

Notes

  • Assignment favors whoever has worked the fewest days, then whoever worked longest ago. No randomness is used, so the same input always gives the same roster.
  • Requested days off are always honored; rest days are then arranged within the streak limit to minimize understaffing, keeping workloads as even as possible. If the constraints are still too tight, some days are flagged as understaffed.
  • Shift hours, night-shift counts, roles and different headcounts for different weekdays are not handled.
  • Japanese holidays are calculated under current law for 2000–2099 only and do not reflect future changes. For other years only weekends are closed.
  • Printing outputs one large table per week (A4 landscape), one week per page. The per-day assignment list is not printed.

Glossary

Round-robin

Taking turns in order. Here, among people with the same number of days worked, the one who worked longest ago is chosen first.

Consecutive working days

A run of working days with no day off in between. The tool never assigns more days in a row than the limit you set.

FAQ

How does the tool decide who works each day?

Day by day, it looks at everyone who is available (not on requested leave and not at the streak limit) and picks those who have worked the fewest days so far. Ties go to whoever worked longest ago, then to whoever is higher in the member list. No randomness is used, so the same input always produces the same roster.

What should I do about a day with a warning?

That day could not be fully staffed. The warning shows how many people were unavailable because of requested leave and how many because of the streak limit. Try adding members, lowering the people needed, raising the streak limit or adjusting requested days off. The roster still shows whoever could be assigned.

How do I enter requested days off?

Use one line per member: the name, a colon, then the days, for example "Alice: 3, 10, 15-17". A range such as 15-17 works too. Names that are not in the member list and days that are not in the month are ignored and listed below the field.

Which holidays count when weekends and holidays are off?

Japanese national and substitute holidays are recognized for 2000–2099. For other years only Saturdays and Sundays are closed. Company-specific closures are not known to the tool, so enter them as requested days off for everyone or edit the printout afterwards.

Can I use the roster in Excel or Google Sheets?

Yes. Download the CSV or copy it and paste it into a spreadsheet: the first row holds the dates and the first column holds the names. The downloaded file is UTF-8 with a BOM so Excel opens non-English names correctly.

Share this page

↑↓ Select Enter Open Esc Close