On a small team, on-call fairness is about more than the number of shifts. Weekends and public holidays cost more than weekdays, leave has to be respected, and nobody should get two shifts in a row. Here's a simple method that holds up.
Free tool: Plan a fair rota: leave, public holidays, weighted fairness and an .ics calendar
Runs in your browser. Public holidays come from Nager.Date; change any shift and the fairness tally updates.
Count each day: weekday 1, weekend day about 1.5, public holiday about 2. Fairness is the total weight per person, not the number of shifts. Pick weights with the team and write them down.
Export the rota as a calendar file (.ics) with one event per shift and the handover time, and share it as a team calendar. Swaps happen in the plan, then re-export. Your paging tool can keep doing the paging.
After each cycle, look at weekend and holiday counts per person, not just totals. Carry imbalances into the next plan rather than resetting to zero.
Free tool: Plan a fair rota: leave, public holidays, weighted fairness and an .ics calendar
Runs in your browser. Public holidays come from Nager.Date; change any shift and the fairness tally updates.