Count Workdays in a Repeating On-Off Roster — Free
A repeating roster rarely lines up with a calendar month. Count full cycles plus the unfinished final cycle rather than multiplying a weekly average by four.
The proof surface
Shift-handover tools measure overlap between workers. This counts scheduled workdays for alternative repeating patterns over a fixed horizon starting at a defined phase.
Why the flat version breaks
Starting mid-cycle
A different starting phase can change the short-horizon count.
Using four weeks as a month
Thirty days includes two more days than a four-week plan.
Treating scheduled days as payable days
Leave, holidays and employment terms can change pay without changing this pattern.
How to work the roster-cycle strip
The model assumes the first day is the first workday of the on-block. It cannot infer the current phase of an existing roster.
Use positive whole days. A split week or non-repeating pattern should be counted on a calendar instead.
Workdays = floor(horizon ÷ cycle) × on-days + min(on-days, horizon mod cycle). Four on/four off over 30 days yields 16 workdays, while five on/two off yields 22.
The summary selects the option with the fewest workdays; it is not one person’s combined schedule. Holidays, swaps, leave and partial days need separate treatment.
What the roster-cycle strip replaces
| Question | Before | Visible working |
|---|---|---|
| Starting mid-cycle | A different starting phase can change the short-horizon count. | Write down consecutive on and off days |
| Using four weeks as a month | Thirty days includes two more days than a four-week plan. | Count full cycles then the remainder |
| Treating scheduled days as payable days | Leave, holidays and employment terms can change pay without changing this pattern. | Compare options row by row |
A local arithmetic aid replaces hand calculation, not expert review. No paid AI service is needed.
Run it on the samples, right here
FIRST-LOAD
Research prototype — checkout unavailable. Input is processed locally and a draft is saved automatically in this browser profile when storage is available. Reset to sample clears that draft; Pro history has its own clear button. A state link encodes your inputs in its URL: share only non-sensitive rows. Browser history, clipboard and anyone receiving the link may retain it. Optional AI use below leaves this device; it is not required.
Pattern arithmetic, not a fatigue assessment or employment entitlement calculation. Review rest requirements and the actual dated roster with the responsible scheduler.
Data note: Everything runs in this browser tab on the roster-cycle strip: your roster option | consecutive workdays | consecutive off days stays on this device, nothing is uploaded, and the reading is rebuilt only when you press run.
Go deeper: the companion app files the same reading as a paper ticker strip
The article demo above runs without limits. The companion app keeps a local history, exports the rows as CSV, prints the roster-cycle strip reading, and holds your drafts on this device — one complete free run; the proposed $4 one-time filing layer is not currently for sale.
The roster-cycle strip reading is complete for free. The optional $4 layer adds print, row CSV and the last five local reading summaries; it does not add hidden answers. Checkout is not configured yet; the article demo remains unlimited.
Open the count workdays in a repeating on-off roster companionBoundary
Pattern arithmetic, not a fatigue assessment or employment entitlement calculation. Review rest requirements and the actual dated roster with the responsible scheduler.
What this is built on
- Method: Workdays = floor(horizon ÷ cycle) × on-days + min(on-days, horizon mod cycle). Four on/four off over 30 days yields 16 workdays, while five on/two off yields 22.
- All sample records are invented examples. The app does not fetch measurements, policies, files or personal records.
- Google’s official pricing page, fetched 2026-09-29, lists free-tier access including AI Studio. Optional formatting only; limits and availability can change. Free-tier content may be used to improve products. Never paste private records there.
Before: A different starting phase can change the short-horizon count. After: the roster-cycle strip shows the working beside each named row so the reader can change the assumption and inspect the consequence.
Optional AI formatting, not calculation
For this roster-cycle strip, use the free AI Studio interface only if available to you, with no paid API key. Manual entry completes the same workflow for free. Supply only fictional or non-sensitive notes. Review its output against the source; never paste unresolved questions into the numeric rows.
Format my non-sensitive notes for a roster-cycle strip. Return plain rows only: roster option | consecutive workdays | consecutive off days. Preserve supplied quantities exactly. Do not guess missing values; list questions separately. Do not calculate or add advice. I will check every row before pasting into the local tool.
Accepted schema: roster option | consecutive workdays | consecutive off days. No AI response is executed as code.