Production rates: the unit of janitorial estimating
A production rate is the area one operator cleans per hour on a given surface with a given method. Divide area by rate and you have hours. That single division is the whole of floor-care estimating, and everything else in a bid is either a different rate, a fixed time, or an uplift.
Rates are method-specific and building-specific, which is why they cannot be borrowed. Vacuuming an open floor plate with a wide-path machine is several times faster than vacuuming the same square footage broken into cubicles, private offices and corridors, because the operator spends the difference turning, moving furniture and switching outlets. Damp mopping is slower than dust mopping; an automatic scrubber is faster than both. A rate quoted without the method and the layout attached is not information.
Restrooms break the pattern deliberately. The work in a restroom scales with fixtures — toilets, urinals and sinks each need the same sequence regardless of how much floor surrounds them — so the industry estimates restrooms in minutes per fixture and folds the floor, mirrors, dispensers and trash into that figure. Using a square-foot rate on restrooms is the most common reason a bid comes in low.
The authoritative published rate tables are ISSA's Cleaning Times, which lists times for hundreds of task and equipment combinations and is what most estimators start from. Whatever source you use, the correct final step is the same: time your own crew on a representative area of this building and adjust. A rate that is 15% optimistic turns a profitable contract into an unprofitable one before anyone notices, because the error is invisible until the labour hours run over.
From task hours to crew size and headcount
Start with cleanable area, not gross area. Gross square footage includes walls, shafts, fixed casework and rooms you do not service. Cleanable area is what the operator actually covers, and on a typical office floor it is meaningfully less than the number on the lease.
Add fixed time. Travel between floors, loading and unloading the cart, filling and emptying the mop bucket, clocking in and locking up are per-visit costs that do not scale with area. On a small site they can be a fifth of the visit, which is why small buildings have worse rates per square foot than large ones and why route density matters so much to a contractor's margin.
Add the periodic allowance. High dusting, carpet extraction, floor burnishing, vent and ledge cleaning and window work happen on a cycle rather than every visit, but they have to be paid for. Spreading them as a percentage uplift on every visit is the standard simplification; the alternative is to schedule each periodic task explicitly and add its annual hours separately.
Now separate the two things people confuse. Labour hours are what you sell and what you pay for. Elapsed time is what the building gives you. If the visit takes 7 labour hours and the building must be finished in a 4 hour window, you need two people — 7 ÷ 4 = 1.75, rounded up. Crew size is set by the window; monthly hours are set by frequency; and only monthly hours convert into full-time equivalents, at 173.33 hours per FTE-month, which is 2,080 annual hours divided by twelve.
Note that visits per month is 52 ÷ 12 = 4.3333 times the weekly frequency, not 4. Using 4 understates monthly hours by about 7.7%, which is roughly the entire margin on many janitorial contracts.
Worked example: an 18,000 ft² office cleaned five nights a week
The building has 12,000 ft² of carpet and 6,000 ft² of hard floor, with 24 restroom fixtures. Your timed rates are 3,500 ft²/hr for vacuuming and 4,000 ft²/hr for dust and damp mopping, and you allow 3 minutes per fixture. Travel and setup run 20 minutes a visit, you carry a 10% periodic allowance, the contract is five nights a week, and the building must be clear by the end of a 4 hour window.
- Carpet. 12,000 ÷ 3,500 = 3.4286 hr.
- Hard floor. 6,000 ÷ 4,000 = 1.5000 hr.
- Restrooms. 24 × 3 ÷ 60 = 1.2000 hr.
- Travel and setup. 20 ÷ 60 = 0.3333 hr.
- Task hours. 3.4286 + 1.5000 + 1.2000 + 0.3333 = 6.4619 hr.
- With the 10% allowance. 6.4619 × 1.10 = 7.1081 hr per visit.
- Crew size. 7.1081 ÷ 4 = 1.777, so schedule 2 cleaners. Two people over 4 hours is 8 labour hours available against 7.11 required, leaving 0.89 hours of slack.
- Visits per month. 5 × 52 ÷ 12 = 21.667.
- Monthly hours. 7.1081 × 21.667 = 154.01 hr.
- Full-time equivalents. 154.01 ÷ 173.33 = 0.888 FTE.
- Overall rate achieved. 18,000 ÷ 7.1081 = 2,532 ft² per labour hour.
That last figure is the one worth internalising. Your vacuuming rate is 3,500 ft²/hr, but the loaded rate across the whole visit is 2,532 — the two floor tasks alone take 3.4286 + 1.5000 = 4.9286 hours, so restrooms, travel and the periodic allowance add 7.108 − 4.929 = 2.179 hours, 30.7% of the visit. When a competitor quotes 3,000 square feet an hour, ask which of these two numbers they mean, because the difference between them is the entire bid.
Now test the sensitivity that matters most. Raise the carpet rate from 3,500 to 4,000 ft²/hr — a 14% improvement in the largest task — and carpet time falls to 12,000 ÷ 4,000 = 3.0000 hr. Task hours become 6.0333, hours per visit become 6.6367, and monthly hours fall to 143.79. The saving is 154.01 − 143.79 = 10.22 hours a month, about 6.6% of the labour. A rate assumption you never verified can be worth more than the profit on the contract.
Reading the estimate before you price it
Look at the task split first. If travel and setup exceed about a fifth of the visit, the site is too small for a standalone route and should be paired with a neighbouring building — that is a routing decision, not a pricing one. If restrooms exceed a third of the visit, the fixture count rather than the square footage is driving the contract, and the bid should be built around fixtures.
Then check the crew rounding. Crew size rounds up to whole people, so a visit needing 1.05 cleaner-equivalents costs the same as one needing 2.00, and the slack is pure margin loss. Where a job lands just above a whole number, the cheapest fix is usually a longer cleaning window rather than a faster rate, because the window is often negotiable with the tenant and the rate is not.
Compare the overall achieved rate against your own history rather than against a published figure. A loaded rate carries every fixed cost and every allowance, so it is comparable only between estimates built the same way. Building a small library of achieved rates by building type — open-plan office, medical suite, school, warehouse — is worth more than any external benchmark, because it is calibrated to your crews and your equipment.
Finally, remember what this estimate is not. It is labour hours, not price. Price adds wages, payroll burden, supplies, equipment, insurance, supervision, overhead and profit on top of these hours, and it adds them at rates that differ by market. Nor does it cover project work: strip and refinish, deep extraction and post-construction cleaning are quoted separately, at their own production rates.
Hours, crew and monthly labour by building size
| Cleanable area (ft²) | Fixtures | Hours per visit | Cleaners needed | Monthly hours | Loaded rate (ft²/hr) |
|---|---|---|---|---|---|
| 6,000 | 8 | 2.61 | 1 | 56.6 | 2,296 |
| 12,000 | 16 | 4.86 | 2 | 105.3 | 2,469 |
| 18,000 | 24 | 7.11 | 2 | 154.0 | 2,532 |
| 24,000 | 32 | 9.36 | 3 | 202.7 | 2,565 |
| 36,000 | 48 | 13.85 | 4 | 300.1 | 2,599 |
| 60,000 | 80 | 22.84 | 6 | 494.8 | 2,627 |
Every row is produced by running this calculator's formula at the stated assumptions. Watch the last column: the loaded rate improves as the building grows, because the fixed 20 minutes of travel and setup is spread over more area. That effect is the whole reason large contracts price below small ones per square foot.
Mistakes that lose money on a janitorial bid
- Using gross square footage. Walls, shafts, fixed casework and unserviced rooms are not cleanable area, and the difference on an office floor is material.
- Estimating restrooms by square foot. Restroom work scales with fixtures, not floor. This single error is the most reliable way to underbid a building.
- Multiplying weekly visits by 4. A month averages 52 ÷ 12 = 4.3333 weeks, so using 4 understates monthly hours by 7.7%.
- Confusing labour hours with elapsed time. Crew size is hours per visit divided by the window; monthly hours is hours per visit times frequency. They answer different questions.
- Omitting the periodic allowance. High dusting, extraction and burnishing happen whether or not they were priced.
- Borrowing production rates. Rates depend on layout, equipment and crew. Time your own on this building before you sign.
- Ignoring the crew rounding. A job needing 2.05 cleaner-equivalents is staffed with three people, and the third one's idle time comes out of margin.
- Forgetting that this is hours, not price. Wages, burden, supplies, equipment, supervision, overhead and profit are all still to come.
The cheapest hour to remove is usually a fixed one
Estimators reflexively attack production rates, because that is where the biggest numbers are. But rate improvements are hard-won and often need capital — a wider vacuum, a ride-on scrubber, a re-layout of the furniture. Fixed time is frequently free. In the worked example, travel and setup is 0.333 hours of a 7.108 hour visit; halving it by staging a second cart on the upper floor cuts 0.167 hours from the task base, which is 0.183 hours a visit once the 10% allowance is applied and 0.183 × 21.667 = 3.97 hours a month at five visits a week. Getting the same saving from the carpet rate would require lifting it from 3,500 to 12,000 ÷ 3.2619 = about 3,680 ft²/hr. On small sites the balance tips further: at 6,000 ft², travel and setup is 12.7% of the visit rather than 4.7%.
Where cleaning hours sit in the wider facilities picture
Labour hours are the input to price, and the conversion needs a fully loaded hourly cost rather than a wage. Payroll taxes, insurance, paid time off, supplies, equipment depreciation, supervision and overhead all sit between the two, and the arithmetic is the same one a contractor uses to set a billing rate anywhere — the hourly rate calculator lays that structure out, with utilisation playing the role that route density plays here.
The estimating method itself is shared with the building trades. Any crew-based task with a measurable output per hour estimates the same way, which is what the construction labour hours calculator does with crew sizes and unit rates, and what the paint coverage calculator does with coverage per gallon instead of area per hour.
On the operations side, cleaning is a physically demanding job with real injury exposure — slips on wet floors, chemical handling, repetitive strain and manual handling — and a contractor's recordable incident rate is increasingly part of the prequalification package for commercial work, alongside the price.
One last point about tendering. Because this calculator produces hours rather than price, it is also the right tool for auditing an incumbent's contract. Take the building's actual areas and fixture counts, apply rates you have timed yourself, and compare the result against the hours being billed. A gap in either direction is worth understanding: too few hours usually shows up as complaints, and too many usually shows up as a renewal you should have won.
