Every cost on CostRule is built from three separately sourced parts (material, labor, and the accessories a standard installation needs), each priced on its own and then added together. A 340 sq ft carpet job at mid grade works out to $1,301.33 of material, $535.65 of labor and $446.05 of extras: $2,283.03 installed, or $6.71 per square foot, on data current as of August 27, 2026. This page shows the formula, the numbers that feed it, the checks it has to survive, and the points where it stops being able to help you.
What a range on this site means
Low, average and high are three complete runs of the same formula. They are not one number with a percentage tacked on either side.
| Scenario | Material price | Waste allowance | Margin | Labor hours |
|---|---|---|---|---|
| Low | 25th percentile of the products we priced in that grade | low end | low end | low end |
| Average | median | midpoint | midpoint | midpoint |
| High | 75th percentile | high end | high end | high end |
The headline range on a cost page is one step wider still, because it spans grades rather than sitting inside one: the low end is the low case of the cheapest grade, the high end is the high case of the most expensive grade, and the average is the mean of the three grades, each in its own average case. That is why the carpet page opens at $3.25 to $14.75 per square foot with a $7.25 average, while the calculator set to mid grade works from a material rate of $3.83. Both are correct; they answer different questions. The page range describes the market from budget to premium. The calculator describes one grade, one room, one state.
The formula
Each of the three parts is a straight line: a rate per square foot, times your area, plus a flat amount.
component = (rate per sq ft × area) + flat amount
total = material + labor + extras
Four things act on that skeleton, in this order:
- Size band. Larger jobs carry less setup time per square foot, so the labor rate steps down as area grows. Material and extras rates do not move with size.
- State factor. One number per state, applied to the labor rate and to the part of the extras that is mostly somebody’s time. It never touches material.
- Minimum job charge. If the calculated work comes to less than $300, the shortfall is added.
- Rounding. Cents, half-up, at each step: the same arithmetic in the same order on both sides of the site, so the browser and the pipeline cannot drift apart.
Worked example: 340 sq ft of carpet, mid grade, national average
These are the exact steps the calculator runs for its default room. Nothing is summarized or re-derived for this page.
| # | Step | The arithmetic | Result |
|---|---|---|---|
| 1 | Project size | 340 sq ft (default project size) | 340 sq ft |
| 2 | Size band | 340 sq ft falls into band d2 (up to 500 sq ft) | n/a |
| 3 | Material | $3.82743 per sq ft × 340 sq ft + $0.00 | $1,301.33 |
| 4 | Labor | (1 × $1.575436) per sq ft × 340 sq ft + (1 × $0.00) | $535.65 |
| 5 | Extras | ($1.311902 + 1 × $0) per sq ft × 340 sq ft + ($0.00 + 1 × $0.00) | $446.05 |
| 6 | Subtotal | $1,301.33 + $535.65 + $446.05 | $2,283.03 |
| 7 | Minimum job charge | max(0, $300.00 − $2,283.03) added to extras | $0.00 |
| 8 | Total (average) | $2,283.03 + $0.00 | $2,283.03 |
| 9 | Per square foot | $2,283.03 ÷ 340 sq ft | $6.71 |
The 1 in steps 4 and 5 is the state factor for the national average. Pick a state and that single number changes; every other figure in the table stays where it is. Run the same nine steps with the low coefficients and the same room costs $1,587.36; with the high coefficients, $3,187.54.
What the size band does
Carpet, mid grade, average scenario: the four bands, and what each part of the price does across them:
| Band | Project size | Labor rate | Material rate | Extras rate |
|---|---|---|---|---|
| d1 | under 100 sq ft | $1.969295 | $3.82743 | $1.311902 |
| d2 | 100 to 500 sq ft | $1.575436 | $3.82743 | $1.311902 |
| d3 | 500 to 1,500 sq ft | $1.417893 | $3.82743 | $1.311902 |
| d4 | above 1,500 sq ft | $1.339121 | $3.82743 | $1.311902 |
Labor per square foot falls by about a third between the smallest and the largest band. A closet does not get a volume discount on carpet, and it does not get one on pad: it gets one on the installer’s setup time, spread over more floor.
The material term
Our material rate is not a shelf price. For each grade, and for each of the three scenarios, the same short chain runs:
list-price percentile × (1 + waste allowance) × (1 + margin) = material rate
For mid-grade carpet, the priced set is 7 products from 3 retailers at $2.09, $2.19, $2.39, $2.58, $2.89, $3.21 and $3.50 per square foot, which gives a 25th percentile of $2.29, a median of $2.58 and a 75th percentile of $3.05.
| Scenario | Price | Waste | Margin | Material rate |
|---|---|---|---|---|
| Low | $2.29 | 5% | 33% | 2.29 × 1.05 × 1.33 = $3.197985 |
| Average | $2.58 | 7.5% | 38% | 2.58 × 1.075 × 1.38 = $3.82743 |
| High | $3.05 | 10% | 43% | 3.05 × 1.10 × 1.43 = $4.79765 |
The waste allowance is the published overage for the material and installation pattern, not a buffer we invented. The margin covers contractor overhead and profit and comes from NAHB Remodelers’ gross-margin data, converted from margin on revenue into a markup on direct costs: the record-low year (24.9% gross margin) works out to 33%, the two-decade-high year (29.9%) to 43%, and 38% is the midpoint of the two documented years.
The margin sits inside each part, not on top of the sum. The calculator shows material, labor and extras as three separate lines, so each carries its own margin before the three are added. There is no fourth step in which a markup is applied to the total.
Materials-only mode uses online consumer list prices without contractor markup; the installed mode applies the contractor overhead-and-profit margin to materials, labor and extras. Someone who lays the floor themselves buys at the shelf and pays no one’s overhead, so the calculator takes the margin back out of material and supplies when you switch to self-install.
Four things that are not in the material rate, because they are the questions people ask most often:
- No base fee. The material rate is pure dollars per square foot; its flat amount is zero.
- No blending across grades. Basic, mid and premium each carry their own independently computed rate. The 3.3× spread between basic and premium is price spread from the survey, not a model setting.
- No size discount. The rate is identical in all four bands.
- No pad. Cushion and tack strip are their own required lines and run through extras.
The labor term
Labor is a wage times an amount of time, and both halves are sourced separately.
- The wage comes from the U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics, May 2025 release, read by occupation code and state. Each item on the site is tied to one code (carpet installation to SOC 47-2041) rather than to a generic construction wage. BLS data is public domain (17 U.S.C. §105) and the release is linked on every page that uses it.
- A published wage is not what an hour costs an employer, so the wage is lifted to full employer cost using a factor of 1.44 for construction, inside a band of 1.39 to 1.67 across nonunion and union compensation structures. All three come from the BLS Employer Costs for Employee Compensation survey, the ratio of total compensation per hour worked to wages and salaries alone.
- The time comes from published productivity figures: public-domain estimating handbooks issued by U.S. military engineering commands, trade sources that state a crew, an area and a duration, and installer figures with a stated quantity behind them. Sources are recorded per item and listed on the page that uses them. For carpet, the model works from 0.011, 0.021 and 0.029 labor hours per square foot, which is 3.74, 7.14 and 9.86 hours for that 340 sq ft room.
Where a source measures hands-on installation only, its figure is scaled once to full job time, which is what a homeowner is actually billed for. That adjustment applies to hours, never to prices, and it is applied a single time rather than tuned until the output matches something.
We publish the honest caveat that goes with those hours: several underlying sources do not state crew size or the exact scope of work, so the hours behind an estimate are a range, not a measured crew day.
Why 44 states and not 50
State figures cover 44 of the 51 US state-level areas (the 50 states plus the District of Columbia). Six are absent because the May 2025 BLS release does not publish a wage for the relevant occupation there: District of Columbia, Maine, North Carolina, North Dakota, Rhode Island and Wyoming. One more, New Jersey, has a published wage that produces a state factor outside the plausibility band we fixed before looking at the data, so we treat it as an artifact. In all seven cases we leave the row out rather than quietly show a national number wearing a state’s name.
Because only labor moves with geography, the geographic spread on the finished price is far narrower than the spread on wages. For carpet the state factor runs from 0.6715 to 1.7066 (roughly two and a half times on that one line) while the installed average across the 44 states travels only from $6.75 to $8.50 per square foot.
Why your state moves the total less than the wage gap suggests
This is the widest seam in the model, so it gets a section rather than a footnote.
The two halves of the number are not sourced the same way. Labor is resolved to 44 states from the BLS release. Material is one national figure, built from list prices we collected item by item at a single reference market on a stated date. The state selector therefore moves the labor share of your total, and nothing else.
On three of the four floors we publish, that share is the smaller half:
| Floor | Labor share of the average | State average, lowest to highest | Spread |
|---|---|---|---|
| Carpet | 21% | $6.75 to $8.50 per sq ft | 26% |
| Vinyl plank | 45% | $7.25 to $11.00 per sq ft | 52% |
| Engineered hardwood | 21% | $9.75 to $11.75 per sq ft | 21% |
| Solid hardwood | 20% | $10.25 to $12.50 per sq ft | 22% |
Read the carpet row against the wage figure above. The state factor on the labor line spans 0.6715 to 1.7066, roughly two and a half times, and it lands on a fifth of the bill. Vinyl plank is the exception: labor is nearly half of that job, which is why its state spread is twice the others. On solid hardwood, material is more than three quarters of the price, so the 22% spread you see in the table is almost the whole effect a wage difference can have there.
What that means when you use the number. Choose your state and the labor half is properly local. The material half is a national list price. It carries no local freight, no local dealer competition, and no regional promotion. Where those things are unusual, our material side will be off in a direction the state factor cannot see, and your total will be off with it.
How thin the price sample is, stated plainly. The material term rests on 83 priced products across 7 retailers, read between August 24 and September 2, 2026: 29 products from 4 retailers for vinyl plank, 23 from 3 for carpet, 22 from 3 for solid hardwood, and 9 from 2 for engineered hardwood. Engineered hardwood is the weak one. Nine products across three grades is exactly three per grade, the minimum our own band rule accepts before it falls back to minimum and maximum. We publish that page because the figures pass every plausibility gate, and we are saying here that its material side rests on less evidence than the other three.
What a crawl of 150,268 retailer pages is for, and what it has not yet changed. Between September 13 and 14, 2026, our crawler requested 157,501 product addresses at 450 US retailers, received 150,268 pages, and moved no price on this site. The addresses came from the retailers’ own sitemaps, 233,551 in all; the ones we never requested were category and brand listings, company and blog pages, and the addresses of 19 retailers who refused access and were not asked again. The rules are fixed: robots.txt obeyed, one request at a time per retailer, at least three seconds apart, an honest identifier with a contact address. Prices come only from a page’s structured product data (JSON-LD, microdata, product meta tags), never from running text.
Of those pages, 35,017 carried a price, and a price counts only when the page states what it covers: per square foot, per carton with stated coverage, per piece with stated size. That left 5,154 flooring products from 23 retailers with a verified area unit, across carpet, vinyl plank, sheet and tile vinyl, solid and engineered hardwood, laminate, porcelain and ceramic tile, and stone. That population is online specialty retailers; the large home centers were blocked or stated no unit. The catalog has three jobs: cross-check the material prices we publish, become the price base once it clears our gate, and cover further floors without another crawl.
The catalog is cut into price tiers, the lower, middle and upper third of listed prices for a floor; the grades on the cost pages remain the chosen product sets described above. This first run was a feasibility read, and no figure was taken from it. The gate was written down after it and before the second run, and it will not be loosened for that run. Per tier: at least 8 retailers with at least 5 products each, no retailer above a fifth of the weight, an effective sample of at least 30 once retailers are weighted equally, a band of at most 15 percent either side of the median, and low and high figures that hold within 20 percent when the largest retailer is left out. No tier clears it today, mostly because a few retailers supply most of the readable prices; a second round is underway.
Catalog figures stay unpublished until every tier of a floor passes. Then the catalog replaces the reference-market survey for that floor as a whole, every affected page carries the new data date, and the change is named here.
What we have committed to changing. Applying a published state price level to the material term is a registered change, not an idea: the Bureau of Economic Analysis publishes Regional Price Parities for goods by state, in the public domain, and for 2024 they run from 0.936 to 1.116 across the 44 states we price. Multiplying the material term by that factor widens the state spread on carpet from 26% to 29%, on vinyl plank from 52% to 61%, on engineered hardwood from 21% to 31%, and on solid hardwood from 22% to 34%. We have not applied it yet, because it changes every published state figure and has to pass the same gates as any other model change. It is also a broad basket of goods rather than a flooring index, which is an improvement on assuming material costs the same everywhere, not a measurement of what a pallet of oak costs in Montana. When it goes in, every page it touches will carry the new data date, and the change will be named here.
Extras: what is in the base price, and what is a switch
The extras line is not a contingency. It holds named items with their own sourced prices, split into two groups.
Required, because the standard method needs them. Each item has one standard installation method (the method its labor hours were researched for) and whatever that method cannot be done without is in the base price. Carpet is stretch-in over cushion, so the base price carries carpet pad ($0.46–$1.17 per sq ft), tack strip ($0.05–$0.07 per sq ft) and transition strips ($0.02–$0.13 per sq ft). Alternative methods are documented in the text, not added as extra charges: gluing a floor down instead of nailing it is a different job, not a surcharge on the same one.
Optional, and off until you switch them on. For carpet that is four switches: removing old carpet ($0.70–$1.60 per sq ft), moving furniture ($25–$75 per room, figured for one room), stairs ($10.00–$45.00 per step, figured for a 13-step run) and subfloor preparation ($1.75–$10.00 per sq ft). They are off by default because they are not part of the job everyone means when they ask what a floor costs, and because the published prices for them disagree with each other more than any other line in the model.
How the band around each item is set. With three or more independent data points, the low and high ends are the 25th and 75th percentiles, which keeps a single outlying price from stretching the band. With one or two, we use the minimum and maximum instead. Narrowing a source’s own published spread by 25% on each side, purely because we only have one source for it, would make the model look more certain than the evidence is.
The $300 minimum job charge
Below $300 of calculated work, the shortfall is added and the difference goes to the extras line, which keeps material + labor + extras equal to the total in every case. Small jobs really are priced this way: most of what you pay for a closet is the trip, the measure and the setup, not the floor. The consequence is visible and intended: the per-square-foot number for a tiny room is much higher than for a bedroom.
Where each number comes from
| Layer | Source | Vintage | What we do with it |
|---|---|---|---|
| Wages | BLS Occupational Employment and Wage Statistics, by SOC code and state | May 2025 release | Base hourly wage per trade per state |
| Employer cost factor | BLS Employer Costs for Employee Compensation | Construction, Q4 2025; union/nonunion band from the 2022 release | 1.39 / 1.44 / 1.67 |
| Margin | NAHB Remodelers’ Cost of Doing Business Study | FY2021 and FY2024 gross margins | 33% / 38% / 43% markup on direct costs |
| Material prices | Online list prices, collected item by item at one reference market (Dallas, Texas) with product, retailer, price and date recorded | 83 products from 7 retailers, read August 24 to September 2, 2026 | Percentiles per grade |
| Retailer price catalog | Structured product data (JSON-LD, microdata, product meta tags) read from US retailer sites, robots.txt obeyed | 150,268 pages from 448 retailers, out of 450 asked, read September 13 to 14, 2026 | Cross-check on the published material prices; no published figure comes from it yet; the price base for a floor once every tier clears the gate |
| Labor hours | Public-domain government estimating handbooks and trade sources that state a quantity | Recorded per item, listed per page | Consolidated hours per square foot |
| Accessories and job extras | Published product and service prices, per line item | August 2026 | Band per item, per the rule above |
Every page carries the sources behind its own numbers, with the date each was retrieved.
What the number does not include
- Removal and disposal of the floor you have now: optional switch, off by default.
- Furniture, stairs and subfloor repair: optional switches. The furniture line is figured for one room per job, so a whole-home quote needs more than the box allows.
- Sales tax, permits and floor-level surcharges. The model has no line for them.
- Local material pricing. Material is priced at one reference market and does not move by state; only labor does. The section on why your state moves the total less than the wage gap suggests puts numbers on what that costs.
- Anything the model cannot see. Layout, site access, stair count, the condition under your old floor, and how badly a contractor wants the job in April.
How we handle conflicting sources
Published sources disagree, and the order we trust them in is fixed in advance.
- Installation standards and trade association guidelines rank first: they describe the method the work is measured against.
- Manufacturer instructions and warranty conditions come next, because they bind the specific product you are buying.
- A retailer’s figure comes after that: current and real, but written to sell one item.
- Cost guides and cost portals rank last.
A disagreement is only named on a page when it changes what you should do. Then it gets one sentence and a recommendation: plan on the more conservative figure and confirm it with the installer before you order. Where the difference does not change the decision, the higher-ranked source is used and the other still appears in the source list.
We never average two sources into one number. A midpoint between figures measured different ways looks precise and supports nothing.
Every source behind a page is listed there with the date it was read. Passages trimmed from a page do not take their evidence with them; the source stays listed.
Our own cost figures sit outside this ranking: material, labor and extras come from BLS wage data, list prices we collected ourselves, and researched labor hours. A cost guide is something we check the result against, never an input.
How the numbers get checked
Thresholds are written down before a measurement runs, so a failing check cannot be talked into a pass afterwards.
- No page without complete data. A cost page is only built when all three layers exist for that item, with sources. There are no category averages and no placeholder defaults filling a gap: items whose labor or price data we could not source stay unpublished, and several currently are.
- Automated gates. Each page passes six checks before it can be exported, covering data completeness, plausibility bands per material, the ordering between materials, and the calculator’s own numbers.
- Comparison against the published market. Our finished ranges are compared with other published cost guides across items and states: most recently 20 comparison points, of which 17 (85%) came out plausible or were resolved by individual analysis, against a threshold of 80%. The median difference across those points was −11.6%, inside the ±15% band that would otherwise force a recalibration round. Three points remain flagged, all of them one material sitting below one guide’s range; the gap is documented rather than smoothed away.
- Two implementations, checked against each other. The calculator that runs in your browser and the pipeline that builds the page are separate pieces of code. Sixty stored test cases are run through both, and the build stops if any result differs by a cent. The pipeline is also run twice on the same data and the outputs compared byte for byte, so a number that changes without a reason changes nothing.
How current this is, and when it changes
Every page shows the date of the data behind it, and that date does not move unless the data moved. The page’s structured data and the sitemap carry the day the page was published and the day it last changed, written from the same fields.
| Layer | Refresh |
|---|---|
| Wages | Annually, on the BLS release cycle |
| Material prices | Rolling; a page is rebuilt when the underlying median moves by more than a few percent |
| Labor hours | Reviewed annually, and whenever a better source turns up |
Pages are refreshed when the data behind them changes, not on a calendar. A cost page that updates every morning is not fresher than one that updated when a price moved: it just has a script running. The year in a page title moves when the data moves, for the same reason.
Limits
These are national and state-level ranges built from published data. They are not a quote, and they are not a number to hold a contractor to. A contractor pricing your actual job can see things this model cannot: the exact layout, the access, the local permit situation, the condition under the old floor, and their own overhead. Published sources also disagree with each other far more than most cost guides admit: for some line items the published bands do not even overlap. Where that happens we say so on the page instead of averaging the disagreement into a single confident-looking number.
Use these figures to build a budget, to sanity-check a bid, and to know which line of a quote to ask about. Then get the quote.
Corrections
If a source has been updated, or a number here looks wrong, tell us: [email protected]. Corrections are made on the page concerned, not edited in silently. How pages are written, checked and funded is set out in the Editorial Policy.