Plainwork

Plainwork / Turnkeep / On-call schedule generator with fair weekend points

On-call schedule generator

Paste your team, pick weekly or daily shifts and get a rota where weekends and holidays count as heavier days, nobody works back-to-back unless it is the only fair option, and leave is respected. Download it as a calendar file or CSV. It all runs in your browser and nothing you type is sent anywhere.

Add ": 50" after a name for someone who takes half the load.
One per line, for example: Ana 2026-11-02 2026-11-06
Weeks line up with this day, so the first shift can start on the last such day on or before your start date.
For the calendar file, for example Europe/London.

How the rota is worked out

  • Points, not just turns. Every day on call earns points: a weekday, a weekend day and a listed holiday are worth different amounts (you set them). A weekly shift is the sum of its days.
  • Least loaded first. Each shift goes to the available person whose capacity-weighted total would be lowest after taking it. A half-time person ends up with about half the points.
  • Rest first. Taking two shifts in a row costs a small penalty, so a person only works back-to-back when the numbers say it is the fair option.
  • Leave blocks the whole shift. If someone is away on any day of a weekly shift, they are not given that week. If everyone is away, the gap is listed instead of hidden.
  • Same input, same rota. Ties are broken by who rested longest, then list order, so regenerating does not shuffle a rota for no reason.

For the reasoning behind the weighting, swaps and the 25% rule of thumb, read how to make an on-call rota fair. To keep the rota, swap shifts and remember who covered what over months, open Turnkeep. The engine behind this page is open source (MIT).

More from the catalogue

Other small tools

See everything →