ProSheet Studio

How to Bid Commercial Cleaning Jobs: From Square Feet to a Monthly Price

By Roger Ramey· Updated · 8 min read· Every number shows its working

Short answer

Bid a commercial cleaning job by production rate: cleanable sq ft ÷ sq ft per cleaner-hour = hours per visit. Cost those hours at a loaded rate, add supplies and overhead, divide by (1 − margin), then multiply by visits a week × 52 ÷ 12. Example: 10,000 sq ft, 5 nights a week = $3,414.23 a month.

On this page
  1. How to calculate a janitorial bid (the formula)
  2. Commercial cleaning bid calculator (per visit)
  3. Worked example: bidding a 10,000 sq ft office
  4. How much to charge for commercial cleaning per square foot
  5. Step by step: how to bid a commercial cleaning job
  6. The three mistakes that sink cleaning bids
  7. Where to find commercial cleaning jobs to bid on
  8. Calculator, bidding software or spreadsheet?
  9. Janitorial bidding formulas in Excel
  10. Step-by-step
  11. FAQ

How to calculate a janitorial bid (the formula)

A janitorial bid is a cost per visit converted to a monthly price. The production rate, how many square feet one cleaner finishes in an hour, is the number that turns a building into labour hours.

  1. Hours per visit = cleanable sq ft ÷ production rate.
  2. Labour per visit = hours × loaded rate (wage × (1 + burden %)).
  3. Break-even per visit = labour + supplies + hours × overhead per sellable hour.
  4. Price per visit = break-even ÷ (1 − margin).
  5. Monthly price = price per visit × visits per week × 52 ÷ 12.
  6. Price per sq ft per month = monthly price ÷ sq ft.

This page is about the method. For the document you hand the client, the sheet's lines and layout, see the companion commercial cleaning bid template guide. Nothing here is an industry average: every rate, wage and supply cost is an assumption you replace with your own.

Commercial cleaning bid calculator (per visit)

The calculator below prices one visit. Enter the cleanable area, your production rate and supplies per visit, then multiply the price by visits per week × 52 ÷ 12 for the monthly figure.

For a whole contract, per visit and per month side by side, with a production-rate check against a published band, the commercial cleaning bid calculator template does the monthly conversion for you.

Worked example: bidding a 10,000 sq ft office

A 10,000 sq ft office cleaned 5 nights a week at an assumed 3,500 sq ft per cleaner-hour comes to $157.58 a visit and $3,414.23 a month, or $0.34 per sq ft per month.

Assumptions, all yours to replace: one cleaner at $18 an hour with 30% burden ($23.40 loaded); $12 of supplies a visit (liners, chemicals, paper if you supply it); $29,040 of yearly overhead across 2 people × 220 days × 8 hours = $8.25 per sellable hour; 35% margin. The 3,500 sq ft per hour is a blended rate for the whole building including restrooms and trash, and this example leaves out drive time. Add drive time as extra hours per visit if you have it.

Worked example: Per-visit cost: 10,000 sq ft office at 3,500 sq ft per cleaner-hour, 5 nights a week (assumed inputs)

Inputs (assumptions — replace with your own) and results
ItemValue
Workers (input)1
Hourly wage paid (input)$18.00
Labour burden % (input)30%
Materials (input)$12.00
Overhead for the year (input)$29,040.00
People in the field (input)2
Billable days a year (input)220
Target margin % (input)35%
Jobs a week (input)5
Area (sq ft) (input)10,000
Production rate (sq ft per hour) (input)3,500
Loaded labour rate (per hour)$23.40
Crew-hours2.86
Labour cost$66.86
Overhead per sellable hour$8.25
Overhead share$23.57
Break-even cost$102.43
Price to quote$157.58
Profit on the job$55.15
Price if you MARK UP instead$138.28
Margin you actually keep with markup25.93%
Lost per job by marking up$19.30
Lost per year by marking up$5,019.00
Hours on the job2.86
Price per sq ft$0.016
Break-even per sq ft$0.010

Computed with the same formulas as the free calculators on this site. Change any input in the calculator above to see your own numbers.

Monthly: $157.58 × 5 × 52 ÷ 12 = $3,414.23. Break-even per month is $2,219.32. Over a 12-month term the contract is worth $40,970.80.

Same office, same per-visit price, different frequency
Visits a weekVisits a month (× 52 ÷ 12)Monthly pricePer sq ft per monthAnnual value
14.33$682.85$0.07$8,194.16
28.67$1,365.69$0.14$16,388.32
313.00$2,048.54$0.20$24,582.48
521.67$3,414.23$0.34$40,970.80

In practice a building cleaned once a week often takes longer per visit than one cleaned nightly, because more dirt builds up between visits. If you see that on your walk-through, use a slower production rate for the low-frequency bid rather than the same one.

How much to charge for commercial cleaning per square foot

Work out the monthly price first, then divide by square feet. Price per sq ft is an output of your bid, not an input you pick from a chart.

The production rate moves it more than anything else. Same 10,000 sq ft office, same wage, supplies, overhead and margin, 5 nights a week:

Price per sq ft per month by production rate (10,000 sq ft, 5 nights a week, assumed costs)
Sq ft per cleaner-hourHours per visitPrice per visitMonthly pricePer sq ft per month
2,5004.0$213.23$4,619.98$0.46
3,0003.33$180.77$3,916.68$0.39
3,5002.86$157.58$3,414.23$0.34
4,0002.5$140.19$3,037.45$0.30
5,0002.0$115.85$2,510.08$0.25

Worked example: Same office at 2,500 sq ft per cleaner-hour (assumed inputs)

Inputs (assumptions — replace with your own) and results
ItemValue
Workers (input)1
Hourly wage paid (input)$18.00
Labour burden % (input)30%
Materials (input)$12.00
Overhead for the year (input)$29,040.00
People in the field (input)2
Billable days a year (input)220
Target margin % (input)35%
Jobs a week (input)5
Area (sq ft) (input)10,000
Production rate (sq ft per hour) (input)2,500
Loaded labour rate (per hour)$23.40
Crew-hours4
Labour cost$93.60
Overhead per sellable hour$8.25
Overhead share$33.00
Break-even cost$138.60
Price to quote$213.23
Profit on the job$74.63
Price if you MARK UP instead$187.11
Margin you actually keep with markup25.93%
Lost per job by marking up$26.12
Lost per year by marking up$6,791.40
Hours on the job4
Price per sq ft$0.021
Break-even per sq ft$0.014

Computed with the same formulas as the free calculators on this site. Change any input in the calculator above to see your own numbers.

At 2,500 sq ft an hour the monthly price is $4,619.98, which is $1,205.75 a month more than at 3,500. If you bid at 3,500 and your crew actually works at 2,500, the extra cost comes out of your profit: $9,404.20 a year on this one building. Time your first few visits and reprice at renewal if the rate is off.

10,000 sq ft warehouse: a light-use warehouse cleaned twice a week at an assumed 7,000 sq ft an hour with $6 of supplies comes to $78.79 a visit and $682.85 a month ($0.07 per sq ft). Bigger open floors, fewer restrooms and lower frequency all pull the per-sq-ft figure down.

Worked example: 10,000 sq ft light-use warehouse, 2 visits a week at 7,000 sq ft per hour (assumed inputs)

Inputs (assumptions — replace with your own) and results
ItemValue
Workers (input)1
Hourly wage paid (input)$18.00
Labour burden % (input)30%
Materials (input)$6.00
Overhead for the year (input)$29,040.00
People in the field (input)2
Billable days a year (input)220
Target margin % (input)35%
Jobs a week (input)2
Area (sq ft) (input)10,000
Production rate (sq ft per hour) (input)7,000
Loaded labour rate (per hour)$23.40
Crew-hours1.43
Labour cost$33.43
Overhead per sellable hour$8.25
Overhead share$11.79
Break-even cost$51.21
Price to quote$78.79
Profit on the job$27.58
Price if you MARK UP instead$69.14
Margin you actually keep with markup25.93%
Lost per job by marking up$9.65
Lost per year by marking up$1,003.80
Hours on the job1.43
Price per sq ft$0.008
Break-even per sq ft$0.005

Computed with the same formulas as the free calculators on this site. Change any input in the calculator above to see your own numbers.

Step by step: how to bid a commercial cleaning job

Walk the building, write the scope, set a production rate per area, price one visit, convert to a month, then write the proposal. Skipping the walk-through is how bids go wrong.

  1. Walk the site. Measure or confirm cleanable square footage (not the lease figure), count restrooms and fixtures, note floor types, trash points, kitchens and access hours.
  2. Write the scope by frequency. Nightly, weekly, monthly and periodic tasks (carpet extraction, floor refinishing) listed separately.
  3. Set production rates by area type. Open office, corridors, restrooms and break rooms do not clean at the same speed. Time a sample if you can.
  4. Price one visit with the formula above, including drive time.
  5. Convert to monthly with × 52 ÷ 12.
  6. Price periodic work separately and spread it across months or bill it when done.
  7. Write the proposal: scope, frequency, monthly price, term, what is excluded.

Cleaning Contract Pricing Calculator

The spreadsheet version of this guide for Excel & Google Sheets: type your numbers into the highlighted cells and the formulas do the rest. One-time $39, no subscription, instant download.

See the Cleaning Contract Pricing Calculator →Buy now — $39

Instant access by email after checkout via Payhip. Want to try the maths first? Use the free calculator — no signup.

The three mistakes that sink cleaning bids

Multiplying by 4 weeks, pricing at the wage, and adding margin as markup. All three bill less than your costs require, every month of the contract.

Common janitorial bidding errors on the 10,000 sq ft example
MistakeWhat it bills a monthCorrect
Visits × 4 weeks$3,151.60$3,414.23 (× 52 ÷ 12)
35% as markup$2,996.07$3,414.23 (÷ 0.65)
Labour at $18, not $23.40 loaded$5.40 short every cleaner-hourwage × (1 + burden %)

The × 4 mistake alone costs $3,151.60 a year on this contract. A year has 52 weeks, and 52 ÷ 12 = 4.33 weeks a month, so four "missing" visits a year go unbilled on a weekly schedule, and twenty on a 5-night one. Markup vs margin is explained in the markup vs margin guide; the loaded-rate error in the labour burden guide.

Where to find commercial cleaning jobs to bid on

Private buildings come from direct outreach to property managers and office managers; public contracts come from procurement portals. Federal notices are posted free on SAM.gov.

SAM.gov Contract Opportunities is the federal system where contracting offices post procurement notices, including solicitations, and anyone can search it. State, county, city and school-district purchasing offices usually run their own bid portals; search your state's name plus "procurement" or "bid opportunities".

Public bids are usually decided on a written response to a fixed scope, so your costing has to hold up on paper. Private buildings are more often won on the walk-through and a clear proposal. In both, a bid that shows the scope, frequency and a monthly price the client can check is easier to say yes to than a single number.

Calculator, bidding software or spreadsheet?

Use whatever forces you to state a production rate and converts visits to months correctly. The tool is secondary to those two numbers.

Ways to price a cleaning bid
OptionCostSuits
Free cleaning price calculatorFree, no signupPricing one visit quickly
Janitorial bidding softwareUsually a subscriptionTeams bidding many buildings with task-level timing
Cleaning contract spreadsheet$39 one-timeOwner-operators who want per-visit and per-month break-even on one sheet

The cleaning contract pricing template shows break-even per visit and per month, the monthly price, annual contract value, an "am I underpricing?" check, and your production rate against the published ISSA 612 band for six facility types. Just starting? The free Job Pricing Starter handles one job at a time. Related: pricing window cleaning.

Janitorial bidding formulas in Excel

Layout: B2 = cleanable sq ft, B3 = production rate, B4 = wage, B5 = burden %, B6 = supplies per visit, B7 = yearly overhead, B8 = people in the field, B9 = billable days, B10 = margin %, B11 = visits per week.

Hours per visit

=B2/B3

Cleanable sq ft ÷ sq ft per cleaner-hour.

Price per visit

=(B2/B3*B4*(1+B5)+B6+B2/B3*B7/(B8*B9*8))/(1-B10)

Loaded labour + supplies + overhead share, divided by (1 − margin). Burden and margin as percents.

Monthly contract price

=B12*B11*52/12

B12 = price per visit. 52 ÷ 12 converts weekly visits to average monthly visits.

Price per sq ft per month

=ROUND(B13/B2,4)

B13 = monthly price. Four decimals, because a tenth of a cent matters across 10,000 sq ft.

Keep production rates on their own tab by area type, and look them up, so one change reprices every bid.

Step-by-step: How to Bid Commercial Cleaning Jobs: From Square Feet to a Monthly Price

  1. Walk the building. Confirm cleanable square footage, count restroom fixtures, note floor types, trash points and access hours.
  2. Set a production rate. Choose sq ft per cleaner-hour for each area type, ideally from timing your own crew, and divide area by rate for hours per visit.
  3. Price one visit. Hours × loaded rate + supplies + hours × overhead per sellable hour = break-even. Divide by (1 − margin) for the visit price.
  4. Convert to a monthly price. Multiply the visit price by visits per week × 52 ÷ 12. Never × 4.
  5. Check price per sq ft. Divide the monthly price by square footage and compare with what local buildings pay. If yours is far above, look at your production rate and costs.
  6. Write the proposal. List scope by frequency, monthly price, term, exclusions and periodic work priced separately.

Skip the setup: Cleaning Contract Pricing Calculator

The spreadsheet version of this guide for Excel & Google Sheets: type your numbers into the highlighted cells and the formulas do the rest. One-time $39, no subscription, instant download.

See the Cleaning Contract Pricing Calculator →Buy now — $39

Instant access by email after checkout via Payhip. Want to try the maths first? Use the free calculator — no signup.

Frequently asked questions

How do I calculate a cleaning bid?

Divide cleanable square feet by your production rate to get hours per visit, cost the hours at a loaded labour rate, add supplies and overhead, and divide by one minus your margin. Multiply that visit price by visits per week and by 52 ÷ 12 to get the monthly bid.

How much should I charge per square foot for commercial cleaning?

Calculate it rather than picking it. Your monthly price divided by square feet is your per-square-foot rate. In this page's example, a 10,000 sq ft office cleaned five nights a week at 3,500 sq ft per hour comes to $0.34 per sq ft per month.

What is the common pricing to clean a 10,000 sq ft warehouse?

It depends on frequency and production rate, so derive it. A light-use warehouse cleaned twice a week at an assumed 7,000 sq ft per hour, with this page's costs, comes to $682.85 a month. Replace the rate and costs with your own before quoting.

How to win cleaning contracts?

Walk the site, price from a stated production rate, and hand over a proposal that lists scope by frequency, the monthly price and exclusions. A clear, checkable bid is easier to approve than a single number. Follow up on renewal dates for buildings you lost.

What are some free websites for janitorial bidding?

Federal cleaning solicitations are posted on SAM.gov Contract Opportunities, which anyone can search free. State, county, city and school-district purchasing offices usually publish bids on their own procurement portals. Private buildings are found through property managers directly.

How do I convert weekly cleaning visits to a monthly price?

Multiply the price per visit by visits per week, then by 52 and divide by 12. That gives 4.33 weeks a month on average. Multiplying by 4 instead leaves roughly one month of visits a year unbilled.

Is there a free calculator for commercial cleaning services?

Yes. The free cleaning calculator on this site prices one visit from your area, production rate, wage, supplies, overhead and margin, with no signup. Multiply its price by visits per week × 52 ÷ 12 for the monthly figure.

Sources

Roger Ramey
Written by Roger Ramey
I'm not a contractor, landlord or accountant. I build the pricing maths, and every number on this page shows its working so you can check it instead of trusting it. Watch the breakdowns on YouTube →
ProSheet Studio · Templates · Guides · Free calculators · Free spreadsheet · Custom build · Privacy
Pricing maths and templates, not financial, tax or legal advice. Calculators run in your browser; the numbers you type are never sent anywhere.