{
    "name": "Workforce Scheduling Coverage Calculator",
    "url": "https://calculators.geekmidst.com/calculators/workforce-scheduling-coverage-calculator",
    "markdown": "https://calculators.geekmidst.com/calculators/workforce-scheduling-coverage-calculator.md",
    "category": "Salary, HR & payroll",
    "description": "Check whether your roster covers opening hours at minimum staffing after shrinkage, and how many staff you need to cover them fully.",
    "summary": "Coverage compares the staff-hours you need on the floor with the hours your roster actually delivers after absence, training and other shrinkage.",
    "also_called": [
        "Staffing calculator",
        "Shift coverage calculator"
    ],
    "applies_to": "Worldwide",
    "last_updated": "2026-10-29",
    "computation": "Results are computed in the visitor’s browser on the HTML page. This API describes the calculator; it does not compute results.",
    "inputs": [
        {
            "name": "open_hours",
            "label": "Hours open per day",
            "type": "number",
            "default": "12",
            "unit": "h"
        },
        {
            "name": "open_days",
            "label": "Days open per week",
            "type": "number",
            "default": "7",
            "unit": "days"
        },
        {
            "name": "min_staff",
            "label": "Staff needed on duty at all times",
            "type": "number",
            "default": "3",
            "unit": "people"
        },
        {
            "name": "staff",
            "label": "Staff on the roster",
            "type": "number",
            "default": "8",
            "unit": "people"
        },
        {
            "name": "shifts",
            "label": "Shifts per person per week",
            "type": "number",
            "default": "5"
        },
        {
            "name": "shift_hours",
            "label": "Hours per shift on duty",
            "type": "number",
            "default": "8",
            "unit": "h"
        },
        {
            "name": "shrinkage",
            "label": "Shrinkage (absence, training, leave)",
            "type": "number",
            "default": "15",
            "unit": "%",
            "optional": true
        }
    ],
    "outputs": [
        {
            "key": "coverage",
            "label": "Coverage",
            "format": "percent"
        },
        {
            "key": "required_hours",
            "label": "Staff-hours needed per week",
            "format": "number"
        },
        {
            "key": "effective_hours",
            "label": "Staff-hours delivered per week",
            "format": "number"
        },
        {
            "key": "difference",
            "label": "Surplus (+) or shortfall (−)",
            "format": "number"
        },
        {
            "key": "staff_needed",
            "label": "Staff needed for full coverage",
            "format": "integer"
        }
    ],
    "formula": {
        "text": "Needed = Hours open × Days open × Minimum staff;  Delivered = Staff × Shifts × Shift hours × (1 − Shrinkage);  Coverage = Delivered ÷ Needed × 100;  Staff needed = ⌈Needed ÷ (Shifts × Shift hours × (1 − Shrinkage))⌉",
        "variables": {
            "Shrinkage": "share of rostered time lost to leave, sickness, training and breaks"
        }
    },
    "worked_example": {
        "inputs": {
            "open_hours": "12",
            "open_days": "7",
            "min_staff": "3",
            "staff": "8",
            "shifts": "5",
            "shift_hours": "8",
            "shrinkage": "15"
        },
        "steps": [
            "Needed = 12 × 7 × 3 = 252 staff-hours a week.",
            "Each person delivers 5 × 8 × 0.85 = 34 hours, so 8 people deliver 272 (107.94%).",
            "Staff needed = 252 ÷ 34 = 7.4, rounded up to 8."
        ],
        "result": "Eight staff on five 8-hour shifts cover 108% of the 252 staff-hours needed, so the roster works with a 20-hour buffer."
    },
    "interpretation": "Coverage above 100% in total does not guarantee every hour is covered; check the rota so shifts line up with opening hours and peaks.",
    "assumptions": [
        "Demand is flat: the same minimum staffing for every open hour.",
        "Shrinkage is spread evenly across the roster."
    ],
    "limitations": [
        "Peaks, skills mix, breaks within shifts and legal rest rules need a detailed rota or workforce-management tool."
    ],
    "rules": null,
    "faqs": [
        {
            "question": "What is shrinkage?",
            "answer": "The share of paid, rostered time when people are not available to work: leave, sickness, training and meetings. Use your own history."
        },
        {
            "question": "Why round staff up?",
            "answer": "Because 7.4 people cannot be hired; 7 would leave hours uncovered. The fraction can also be covered with part-time staff or overtime."
        }
    ],
    "sources": [],
    "related": [
        {
            "name": "FTE Headcount Calculator",
            "url": "https://calculators.geekmidst.com/calculators/fte-headcount-calculator"
        },
        {
            "name": "Team Utilization Calculator",
            "url": "https://calculators.geekmidst.com/calculators/team-utilization-calculator"
        },
        {
            "name": "Part-Time Equivalent Calculator",
            "url": "https://calculators.geekmidst.com/calculators/part-time-equivalent-calculator"
        }
    ],
    "disclaimer": null,
    "publisher": "GM¹X CalcVerse"
}