{
  "slug": "salon-stylist-hourly-productivity",
  "title": "Stylist Hourly Productivity Calculator",
  "heading": "Salon Stylist Hourly Productivity Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/salon-stylist-hourly-productivity",
  "summary": "Turn your schedule and service mix into a true revenue-per-hour number.",
  "description": "Booked hours and worked hours are not the same thing. This calculator measures how much revenue a stylist actually generates per hour they are physically on the clock, including gaps between appointments, consultations, and processing time where the chair sits empty. Enter your weekly scheduled hours, average client ticket, clients served per week, and typical gap time, and you get productivity per booked hour and per total worked hour side by side. Salon owners use this number to set commission tiers and staffing levels; stylists use it to see whether raising prices or tightening their schedule would do more for their paycheck. A stylist working 32 hours but only filling 22 with paying clients has a very different real hourly rate than the schedule suggests, and this gap is the single biggest lever in salon profitability.",
  "formula": "Booked hourly = weekly revenue ÷ hours with clients in chair. Worked hourly = weekly revenue ÷ total hours on schedule (including gaps).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=salon-stylist-hourly-productivity",
  "inputs": [
    {
      "id": "clients",
      "label": "Clients served per week",
      "kind": "number",
      "hint": null,
      "default": 22,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "avgTicket",
      "label": "Average ticket per client",
      "kind": "number",
      "hint": null,
      "default": 95,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "avgServiceMin",
      "label": "Average service length",
      "kind": "number",
      "hint": null,
      "default": 75,
      "unit": "min",
      "min": 5,
      "max": null
    },
    {
      "id": "scheduledHours",
      "label": "Total hours scheduled per week",
      "kind": "number",
      "hint": null,
      "default": 32,
      "unit": "hrs",
      "min": 1,
      "max": null
    },
    {
      "id": "gapMinPerDay",
      "label": "Unbooked gap time per day",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": "min",
      "min": 0,
      "max": null
    },
    {
      "id": "daysPerWeek",
      "label": "Days worked per week",
      "kind": "number",
      "hint": null,
      "default": 5,
      "unit": null,
      "min": 1,
      "max": 7
    }
  ],
  "outputs": [
    {
      "id": "workedHourly",
      "label": "Revenue per scheduled hour",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "bookedHourly",
      "label": "Revenue per booked hour",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "revenue",
      "label": "Weekly revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "utilization",
      "label": "Chair utilization",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "gapHours",
      "label": "Unbooked hours per week",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Clients served per week: 22",
      "Average ticket per client: 95 $",
      "Average service length: 75 min",
      "Total hours scheduled per week: 32 hrs",
      "Unbooked gap time per day: 40 min",
      "Days worked per week: 5"
    ],
    "outputs": [
      "Revenue per scheduled hour: $65.31",
      "Revenue per booked hour: $76.00",
      "Weekly revenue: $2,090",
      "Chair utilization: 85.9%",
      "Unbooked hours per week: 3.3"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter clients served per week.",
      "Enter average ticket per client ($).",
      "Enter average service length (min).",
      "Enter total hours scheduled per week (hrs).",
      "Enter unbooked gap time per day (min).",
      "Enter days worked per week.",
      "Read your revenue per scheduled hour 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": {
        "clients": 13,
        "avgTicket": 55,
        "avgServiceMin": 45,
        "scheduledHours": 19,
        "gapMinPerDay": 25,
        "daysPerWeek": 3
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "clients": 22,
        "avgTicket": 95,
        "avgServiceMin": 75,
        "scheduledHours": 32,
        "gapMinPerDay": 40,
        "daysPerWeek": 5
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "clients": 35,
        "avgTicket": 150,
        "avgServiceMin": 120,
        "scheduledHours": 51,
        "gapMinPerDay": 65,
        "daysPerWeek": 7
      }
    }
  ],
  "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": "Why track worked hourly instead of just booked hourly?",
      "a": "Booked hourly only counts the minutes a client is in the chair, so it always looks good. Worked hourly counts every hour you're clocked in or scheduled, including the 20-minute gaps between appointments that silently eat a third of a day. That's the number that matches your actual paycheck-per-hour reality."
    },
    {
      "q": "What's a healthy utilization rate?",
      "a": "75-85% is strong for an established stylist with a loyal book. New stylists building clientele often run 40-55% and should focus on filling gaps with walk-ins, add-on services, or marketing rather than raising prices, since raising prices on an empty schedule doesn't fix the underlying problem."
    },
    {
      "q": "How do I raise my worked hourly rate?",
      "a": "Three levers: raise average ticket (retail add-ons, upsells), reduce average service time without cutting quality (better prep, double-booking processing time), or tighten the schedule so gaps get filled with standby clients. Raising prices only helps if demand holds; the other two levers are usually faster wins."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/salon-chair-utilization",
    "https://www.revenuelab.fyi/toolbox/salon-service-pricing-target-hourly",
    "https://www.revenuelab.fyi/toolbox/booth-rent-vs-commission"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Stylist Hourly Productivity Calculator (https://www.revenuelab.fyi/toolbox/salon-stylist-hourly-productivity)"
}