{
  "slug": "substitute-teacher-cost",
  "title": "Substitute Teacher Cost Calculator",
  "heading": "Substitute Teacher Cost Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/substitute-teacher-cost",
  "summary": "Project your annual substitute budget from absence rates and sub pay.",
  "description": "Substitute coverage is a recurring, budgetable cost, not a surprise, once you know your staff's average absence rate. This calculator takes headcount, average sick/personal days used per teacher per year, and your substitute day rate (or hourly rate times hours) to project total annual substitute spend, then compares that to what you'd pay if uncovered absences forced ratio violations and temporary agency staff at a premium rate. It also computes cost per classroom day, useful for building substitute costs into your per-classroom budget rather than lumping it into a vague 'other staffing' line. Centers relying heavily on last-minute staffing agencies instead of an internal sub pool typically pay a 30-60% premium per shift, so this tool includes a comparison so you can see the dollar impact of building an internal float-staff pool versus staying reactive.",
  "formula": "Total sub days needed = headcount × avg absence days per teacher; internal sub cost = sub days × internal day rate; agency cost = sub days × agency day rate; savings = agency cost − internal cost.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=substitute-teacher-cost",
  "inputs": [
    {
      "id": "headcount",
      "label": "Teacher headcount",
      "kind": "number",
      "hint": null,
      "default": 25,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "absenceDays",
      "label": "Average absence days per teacher / year",
      "kind": "number",
      "hint": null,
      "default": 9,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "internalRate",
      "label": "Internal / float sub day rate",
      "kind": "number",
      "hint": null,
      "default": 130,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "agencyRate",
      "label": "Agency sub day rate",
      "kind": "number",
      "hint": null,
      "default": 200,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "classroomDays",
      "label": "Operating days per year",
      "kind": "number",
      "hint": null,
      "default": 250,
      "unit": null,
      "min": 1,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "internalCost",
      "label": "Annual internal sub cost",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "agencyCost",
      "label": "Annual agency-only cost (comparison)",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "savings",
      "label": "Annual savings vs. agency-only",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "subDays",
      "label": "Total sub days needed / year",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "costPerOperatingDay",
      "label": "Sub cost per operating day",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Teacher headcount: 25",
      "Average absence days per teacher / year: 9",
      "Internal / float sub day rate: 130 $",
      "Agency sub day rate: 200 $",
      "Operating days per year: 250"
    ],
    "outputs": [
      "Annual internal sub cost: $29,250",
      "Annual agency-only cost (comparison): $45,000",
      "Annual savings vs. agency-only: $15,750",
      "Total sub days needed / year: 225",
      "Sub cost per operating day: $117"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter teacher headcount.",
      "Enter average absence days per teacher / year.",
      "Enter internal / float sub day rate ($).",
      "Enter agency sub day rate ($).",
      "Enter operating days per year.",
      "Read your annual internal sub cost on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "headcount": 15,
        "absenceDays": 5,
        "internalRate": 80,
        "agencyRate": 120,
        "classroomDays": 150
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "headcount": 25,
        "absenceDays": 9,
        "internalRate": 130,
        "agencyRate": 200,
        "classroomDays": 250
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "headcount": 40,
        "absenceDays": 14,
        "internalRate": 210,
        "agencyRate": 320,
        "classroomDays": 400
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "What's a typical teacher absence rate in childcare and schools?",
      "a": "Public school teacher absence data commonly shows 8-12 sick/personal days used per year on average; childcare and private school staff tend to fall in a similar range, sometimes higher in infant/toddler rooms due to illness exposure. Pull your own attendance system data rather than assuming a national number, since it varies a lot by center culture and benefits structure."
    },
    {
      "q": "Why build an internal float pool instead of calling an agency every time?",
      "a": "Agency subs typically charge a placement fee or premium hourly rate on top of the worker's pay, and quality is inconsistent since they don't know your kids or routines. A part-time internal float staff person paid a flat day rate is usually 30-50% cheaper per shift and produces better continuity for the classroom, though it requires having someone available and cross-trained."
    },
    {
      "q": "Does this cost belong in the classroom staffing budget?",
      "a": "Yes — treat it as a predictable line item rather than an emergency expense. Spread the annual total across classrooms by headcount share, or track it centrally if you run a shared float pool across multiple rooms, and review actual usage against budget quarterly since absence patterns shift seasonally (cold and flu season spikes utilization)."
    },
    {
      "q": "How does chronic short-staffing affect this number?",
      "a": "If you're already understaffed, absences often go uncovered rather than filled by subs, which shows up as ratio violations or exhausted remaining staff rather than as a substitute cost line. A suspiciously low sub cost paired with high staff turnover is often a sign absences aren't being covered at all, not that your team never gets sick."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/teacher-salary-scale-budget",
    "https://www.revenuelab.fyi/toolbox/staff-turnover-cost",
    "https://www.revenuelab.fyi/toolbox/childcare-staffing-ratio-cost"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Substitute Teacher Cost Calculator (https://www.revenuelab.fyi/toolbox/substitute-teacher-cost)"
}