{
  "slug": "agency-blended-rate",
  "title": "Agency Blended Hourly Rate Calculator",
  "heading": "Agency Blended Rate Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/agency-blended-rate",
  "summary": "Find the single hourly rate a mixed delivery team has to bill to hit target margin.",
  "description": "Agencies rarely staff a project with one seniority level — a strategist, a senior, and a junior all touch the same retainer. The blended rate is the weighted average bill rate across that mix, and it's the number you quote when a client asks 'what's your hourly?'. This calculator weights each role's cost by the hours they actually contribute, adds the agency overhead load, then grosses the result up to your target gross margin. The output is both the blended cost per hour (your floor) and the blended bill rate (your quote). Most independent agencies run 50-60% gross margin on delivery; anything under 40% means overhead eats the account before it reaches net profit.",
  "formula": "Blended cost/hr = Σ(role cost/hr × role hours) ÷ Σ(role hours), then × (1 + overhead load). Blended bill rate = blended cost ÷ (1 − target gross margin).",
  "dateModified": "2026-08-25",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=agency-blended-rate",
  "inputs": [
    {
      "id": "srHours",
      "label": "Senior hours per month",
      "kind": "number",
      "hint": null,
      "default": 20,
      "unit": "hrs",
      "min": 0,
      "max": null
    },
    {
      "id": "srCost",
      "label": "Senior cost per hour",
      "kind": "number",
      "hint": "Salary ÷ 2,080, fully burdened",
      "default": 78,
      "unit": "$/hr",
      "min": 1,
      "max": null
    },
    {
      "id": "midHours",
      "label": "Mid-level hours per month",
      "kind": "number",
      "hint": null,
      "default": 60,
      "unit": "hrs",
      "min": 0,
      "max": null
    },
    {
      "id": "midCost",
      "label": "Mid-level cost per hour",
      "kind": "number",
      "hint": null,
      "default": 48,
      "unit": "$/hr",
      "min": 1,
      "max": null
    },
    {
      "id": "jrHours",
      "label": "Junior hours per month",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": "hrs",
      "min": 0,
      "max": null
    },
    {
      "id": "jrCost",
      "label": "Junior cost per hour",
      "kind": "number",
      "hint": null,
      "default": 29,
      "unit": "$/hr",
      "min": 1,
      "max": null
    },
    {
      "id": "overhead",
      "label": "Overhead load on delivery cost",
      "kind": "number",
      "hint": "Rent, tools, admin, non-billable staff",
      "default": 25,
      "unit": "%",
      "min": 0,
      "max": null
    },
    {
      "id": "margin",
      "label": "Target gross margin",
      "kind": "number",
      "hint": null,
      "default": 55,
      "unit": "%",
      "min": 5,
      "max": 90
    }
  ],
  "outputs": [
    {
      "id": "billRate",
      "label": "Blended bill rate to quote",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "costPerHour",
      "label": "Loaded blended cost per hour",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "hours",
      "label": "Total delivery hours",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "monthlyRevenue",
      "label": "Revenue at this rate",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "monthlyGP",
      "label": "Gross profit per month",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Senior hours per month: 20 hrs",
      "Senior cost per hour: 78 $/hr",
      "Mid-level hours per month: 60 hrs",
      "Mid-level cost per hour: 48 $/hr",
      "Junior hours per month: 40 hrs",
      "Junior cost per hour: 29 $/hr",
      "Overhead load on delivery cost: 25 %",
      "Target gross margin: 55 %"
    ],
    "outputs": [
      "Blended bill rate to quote: $129.63",
      "Loaded blended cost per hour: $58.33",
      "Total delivery hours: 120",
      "Revenue at this rate: $15,555.56",
      "Gross profit per month: $8,555.56"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter senior hours per month (hrs).",
      "Enter senior cost per hour ($/hr) — Salary ÷ 2,080, fully burdened.",
      "Enter mid-level hours per month (hrs).",
      "Enter mid-level cost per hour ($/hr).",
      "Enter junior hours per month (hrs).",
      "Enter junior cost per hour ($/hr).",
      "Enter overhead load on delivery cost (%) — Rent, tools, admin, non-billable staff.",
      "Enter target gross margin (%).",
      "Read your blended bill rate to quote 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": {
        "srHours": 12,
        "srCost": 47,
        "midHours": 36,
        "midCost": 29,
        "jrHours": 24,
        "jrCost": 17,
        "overhead": 15,
        "margin": 33
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "srHours": 20,
        "srCost": 78,
        "midHours": 60,
        "midCost": 48,
        "jrHours": 40,
        "jrCost": 29,
        "overhead": 25,
        "margin": 55
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "srHours": 32,
        "srCost": 125,
        "midHours": 96,
        "midCost": 77,
        "jrHours": 64,
        "jrCost": 46,
        "overhead": 40,
        "margin": 88
      }
    }
  ],
  "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": "Should I quote the blended rate or per-role rates?",
      "a": "Quote blended when the client buys an outcome or a retainer, because it hides staffing mix changes and lets you swap seniority without renegotiating. Quote per-role when the client procures by role (common in enterprise and government MSAs) — but then set each role's rate off the same margin math so the mix can't quietly erode profit."
    },
    {
      "q": "What counts as fully burdened cost per hour?",
      "a": "Salary plus employer payroll taxes, benefits, PTO accrual, and equipment, divided by realistically billable hours — not 2,080. If a delivery person bills 1,400 hours a year, dividing by 2,080 understates cost by about a third."
    },
    {
      "q": "Why apply overhead as a percentage instead of a fixed add?",
      "a": "Percentage loading scales with the size of the engagement, which matches how agency overhead actually behaves: bigger accounts consume more account management, QA, and tooling. If your overhead is genuinely fixed, model it in a break-even calculator instead and keep this rate purely delivery-cost driven."
    },
    {
      "q": "Is 55% gross margin realistic?",
      "a": "For services delivered by employees, 50-60% is the common healthy band, with 60%+ typical for strategy-heavy work and 35-45% for production-heavy or subcontractor-heavy work. Track it monthly per account — the blended rate you quoted is meaningless if scope creep pushes actual hours past what you priced."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/agency-utilization-target",
    "https://www.revenuelab.fyi/toolbox/retainer-scope-creep",
    "https://www.revenuelab.fyi/toolbox/agency-effective-hourly"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Agency Blended Hourly Rate Calculator (https://www.revenuelab.fyi/toolbox/agency-blended-rate)"
}