Skip to content
All articlesEstimating

How to Bid on Janitorial Contracts Without Cleaning at a Loss

Turn square feet into hours with production rates, cost the hours and bid the month. Includes a 6,000 sq ft office priced at $37,840 a year.

How to Bid on Janitorial Contracts Without Cleaning at a Loss

To bid on a janitorial contract, measure the cleanable square feet by area type, turn them into hours per clean with a production rate, multiply by the cleans per year, cost those hours with loaded labor, overhead and supplies, then divide by one minus your margin. Bid it as a monthly price with the scope and frequency written in.

Price = (hours per clean × cleans per year × hourly cost + supplies) ÷ (1 − margin).

A 6,000 sq ft office cleaned five nights a week: $28,380 a year in costs ÷ 0.75 = $37,840 at a 25% margin, or $3,153.33 a month. Hypothetical, worked below.

Commercial cleaning contracts are steady money, and a bad bid is steady too. Price the hours wrong and you'll clean that building at a loss every night until someone cancels.

This guide covers small office and retail accounts a solo cleaner or small crew can win: the walk-through, the production math, the bid itself and where to find bids. US dollars, a hypothetical example, your rates swapped in. Residential house cleaning has its own math in the house cleaning calculator.

1. Walk the building and measure by area type

Every janitorial bid starts with a walk-through and a list of cleanable square feet, split by what the space is. A carpeted office, a tiled break room and a restroom take very different time per square foot, so one total number hides the work.

  • Offices and open work areas, carpet or hard floor.
  • Restrooms, with the count of toilets, urinals and sinks.
  • Break rooms, lobbies and entries, usually hard floor and high traffic.
  • Frequency per area. Restrooms nightly, offices maybe three nights, glass weekly.
  • What the client supplies. Paper towels, toilet paper and hand soap are often theirs. Write it down either way.

Ask for the floor plan or measure the rooms on the walk. Note the things that slow you down: stairs with no elevator, alarm codes, locked suites, a dumpster across the lot.

2. Turn square feet into hours with production rates

A production rate is how many square feet one cleaner can do in an hour, for a given type of space at a given level of clean. Divide each area's square feet by its rate and you get hours per clean.

One public reference is APPA's Custodial Staffing Guidelines, which list square feet per 7-hour shift (420 minutes) for each space type and each of APPA's five levels of clean. A Chabot-Las Positas Community College District staffing plan reproduces the chart (Chabot-Las Positas CCD staffing plan, citing APPA). At Level 2, "Ordinary Tidiness":

Space type (APPA Level 2)Sq ft per 7-hour shiftAbout sq ft per hour
Office with carpet floor18,2002,600
Office with hard floor14,6002,086
Washroom (restroom)2,600371

Look at the restroom row. A square foot of restroom takes about seven times as long as a square foot of carpeted office. That's why per-square-foot bids from a single rate go wrong.

These rates were built for school and college buildings, and your crew, equipment and the building's condition change them. Use them as a starting point, then time your own crew on the first two weeks and adjust.

3. Cost an hour: labor, overhead and supplies

Cost each hour with your loaded labor rate, add overhead per hour, and put supplies on their own line. Loaded means wage plus payroll taxes, workers' comp, insurance and paid time off.

For a reference point, the national median wage for janitors and cleaners is $17.71 an hour (O*NET, from BLS 2025 wage data). The example uses a $22 loaded rate, about 24% on top of that median, which is an assumption. The hourly rate calculator builds yours from your own numbers. Trades with repeat tasks turn the same hourly math into a menu of fixed prices; see the plumbing flat rate pricing guide.

  • Overhead: vehicle, insurance and bonding, equipment wear, phone, software, your time selling and managing. Spread a year of it over your billed hours.
  • Supplies: trash liners, chemicals, microfiber, vacuum bags. A monthly allowance per account is simpler than counting bottles.
  • Equipment: a backpack vacuum or an auto scrubber changes your production rate. Price the time with the equipment you'll actually bring.

4. Worked example: a 6,000 sq ft office, five nights a week

Hypothetical bid. A single-tenant office with 5,000 sq ft of carpeted offices, a 600 sq ft hard-floor lobby and break room, and 400 sq ft of restrooms. Cleaned Monday to Friday nights. Client supplies paper and soap.

AreaSq ftRate per shiftMinutes per clean
Carpeted offices5,00018,200115.4
Lobby and break room, hard floor60014,60017.3
Restrooms4002,60064.6
Total6,000197.3 (3.3 hr)

Minutes per clean = sq ft ÷ rate per shift × 420. Add 0.2 hours a night for unlocking, setup, trash run and lockup, and the clean is 3.5 hours. Five nights a week is 260 cleans a year, so 910 hours.

Annual cost lineQtyRateCost
Labor, loaded (assumption)910 hr$22$20,020
Overhead (assumption)910 hr$8$7,280
Supplies (assumption)12 months$90$1,080
Total cost$28,380
Price at 25% margin ($28,380 ÷ 0.75)$37,840

That's $9,460 of profit for the year after everyone's wages, including yours. Billed monthly it's $3,153.33, about $0.53 per square foot per month, or $145.54 per clean. The hourly equivalent is $41.58 ($37,840 ÷ 910 hours), which is the number to quote for extra work.

Cost stack for a $37,840 janitorial contract: labor $20,020, overhead $7,280, supplies $1,080, profit $9,460
Labor is more than half the price. The production rate decides the hours, so it decides the bid.

Want to see the same costs at 20% or 30%? The profit margin calculator shows margin and markup side by side.

5. What the janitorial bid should say

A janitorial bid is a service contract, so write the scope like one. Facility managers compare bids line by line, and the clearest scope often wins over the cheapest number.

  1. Building address, cleanable square feet and the areas included.
  2. A task list by frequency: nightly, weekly, monthly.
  3. Days and hours of service, and who holds keys and alarm codes.
  4. What the client supplies and what you supply.
  5. Extra work at a stated rate: floor stripping and waxing, carpet extraction, windows, day porter hours.
  6. Monthly price, invoice date, due date and payment methods.
  7. Term, renewal, price review and how either side can end it.

Spell out the payment side the same way you would on any job; the wording for due dates and late payment is in contractor payment terms. A monthly contract is the same idea as a season of commercial mowing, which is worked in how to price commercial lawn care.

6. Where to find janitorial bids

For small accounts, start with property managers, building owners and office managers. Ask your current clients who manages their building, and get on that manager's vendor list.

Public bids are posted online. Federal opportunities are on SAM.gov Contract Opportunities, and cities, counties and school districts post their own on their purchasing pages. Expect a formal walk-through, insurance minimums and a set due date.

Federal service contracts over $2,500 carry a wage rule: under the Service Contract Act, the contract and bid specification must state the minimum wage for each class of service employee, based on prevailing rates in the locality (41 U.S.C. § 6702 and § 6703). Price your labor line from that wage determination, not your usual rate, or the bid is wrong before you submit it.

7. When the math changes

Three situations break the simple per-night bid.

  • Day porter service. A person on site during business hours is priced by the hour, not by the square foot.
  • Periodic floor work. Stripping and waxing or carpet extraction is priced per square foot per service and billed when it's done, not buried in the monthly.
  • A first deep clean. If the building has been neglected, the first clean takes far longer. Price it as a one-time startup line.

In WinPal you can build the bid from a voice note on the walk-through and send it before you leave the parking lot, then invoice the account every month from the same job.

Common janitorial bidding questions

How do you calculate a janitorial bid?

Divide each area's square feet by a production rate to get hours per clean, multiply by cleans per year, then cost the hours with loaded labor and overhead and add supplies. Divide the total by one minus your margin. The example office comes to $37,840 a year at 25%.

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

Work it out from hours, then convert. The example comes to about $0.53 per square foot per month for five nights a week. Restroom-heavy buildings, more frequent service or a higher level of clean push it up, so don't bid from a per-square-foot number you didn't build.

How many square feet can one cleaner clean in an hour?

It depends on the space and the level of clean. APPA's Level 2 figures work out to about 2,600 sq ft an hour for carpeted offices and about 371 sq ft an hour for restrooms. Time your own crew and adjust from there.

What margin should a cleaning business use on contracts?

Pick the margin that covers your risk and still wins work; this guide uses 25% as an example. Price with margin, cost ÷ (1 − margin), not markup. A 25% markup only leaves 20% of the price as profit, and on a monthly contract that gap repeats every month.

What to do before your next walk-through

Measure by area type, convert to hours with a production rate, add setup time, count the cleans, cost the hours, add supplies and divide by one minus your margin. Then write the frequency and the extras into the bid.

Already sent a cleaning bid? Upload it to the estimate checker and see if it's priced too low.

Send your next estimate with WinPal.

Get the app Available for iPhone & Android