Methodology

How we calculate a cost range.

Every dollar figure on this site is one national typical band multiplied by one metro's cost multiplier. Two curated numbers, one multiplication, both published with their sources. This page is the whole of it — including the parts we cannot see.

The model

National typical band×Metro cost multiplier=The range you see

The first input is a national typical band for the kind of project you describe. It is keyed on the answer you give, not on a physical unit — because the questionnaire does not collect physical units. Where a project has a quantity it is captured as a range (“3 to 7”) rather than as a number; where it does not, the question asks about scope instead. So quantity and material are folded into the band's own width, and the band is selected rather than computed. The table further down shows every band we hold and the exact answer each one is keyed on.

Before you answer anything, a trade's default band is shown: its typical-project span. Once you answer the question that actually drives cost, the band keyed to that answer replaces it. If we hold no band for an answer, the default is shown again — never nothing, and never a figure we made up to fill the space.

The second input is the metro cost multiplier: a published price-level index for the metro, divided by 100. The index is the BEA Regional Price Parities — the U.S. Bureau of Economic Analysis's measure of what goods and services cost in a metropolitan area, all items, expressed as a percentage of the national level. The national level is 100 by construction, so the national multiplier is exactly 1.000. A ZIP inside a market we price takes that market's row; a ZIP we can place only in a state takes the state's figure from the same index; a ZIP we cannot place at all takes the national row. The multiplication runs in the database in exact decimal arithmetic and is rounded to whole cents once, so no floating-point drift enters a money figure.

Say plainly what that index is: a consumer price-level measure, not a construction cost index. It tracks what households in a metro pay for housing, goods and services, not what a contractor there pays for labor, materials and permits. We use it because it is the citable proxy — every figure is published, public and linked from its own row below, so any multiplier can be re-derived from its citation. The construction-specific indexes are licensed, and a number we cannot show you is not a source we can cite.

Every surface reads those same two tables and applies that same rounding — the estimate in the questionnaire, the tables in a cost guide, the figures on a city page and the sample table on the home page. There is no second set of figures anywhere on this site, and no page holds a number of its own.

A worked example

Both inputs below are read from the rows that hold them, and so is the result — it is not multiplied out on this page. This is windows in Denver, CO, the metro whose multiplier sits furthest from the national baseline, so the adjustment is visible rather than lost in rounding.

National band$7,000 – $9,000typical window replacement project
×
Denver, CO1.058regional cost multiplier
=
Typical range there$7,406 – $9,522typical window replacement project in Denver, CO

The same two rows produce the figure on our Denver, CO page and in the questionnaire's estimate. If they ever disagreed, one of them would be reading a row that no longer exists.

The national bands

Every band we hold for the trades on this site, with the figure before any metro is applied and the source it came from. Some bands are cited directly to a published cost guide; others are derived from figures that are, and the source line says which — arithmetic a reader can check is worth more than an implied second citation.

Windows

BandSelected whenNational typical rangeSource
typical window replacement projectBefore you answer$7,000 – $9,000Angi — Window Replacement Cost (updated Aug 3, 2026): "A standard three-bedroom home with 10 to 12 windows typically costs $7,000 to $9,000 for a full replacement with standard double-hung windows and professional installation."Retrieved 2026-09-06
1–2 windowsAnswer windows_count:1-2$200 – $2,400Derived from Angi — Window Replacement Cost (updated Aug 3, 2026): vinyl, the standard double-hung material, $100–$900 per window, plus labor $100–$300 per window = $200–$1,200 installed; × 1–2 windows = $200–$2,400.Retrieved 2026-09-06
3–7 windowsAnswer windows_count:3-7$600 – $8,400Derived from Angi — Window Replacement Cost (updated Aug 3, 2026): vinyl, the standard double-hung material, $100–$900 per window, plus labor $100–$300 per window = $200–$1,200 installed; × 3–7 windows = $600–$8,400.Retrieved 2026-09-06
8–12 windowsAnswer windows_count:8-12$6,000 – $9,000Angi — Window Replacement Cost (updated Aug 3, 2026), "Cost by Number of Windows" table (standard double-hung windows, professional installation): 8–12 windows = $6,000–$9,000.Retrieved 2026-09-06
13+ windowsAnswer windows_count:13+$9,000 – $20,000Angi — Window Replacement Cost (updated Aug 3, 2026), "Cost by Number of Windows" table (standard double-hung windows, professional installation): 12–16 windows = $9,000–$12,000 through the table's top row, 25 windows = $18,000–$20,000. The open-ended 13+ band spans those rows, so it is capped at 25 windows.Retrieved 2026-09-06

Bath Remodel

BandSelected whenNational typical rangeSource
typical bath remodel projectBefore you answer$6,648 – $17,646Angi — Bathroom Remodel Cost (updated Jul 9, 2026): "Professional bathroom remodel costs range from $6,648 to $17,646 depending on your finishes and materials." HomeAdvisor's guide (updated Jun 17, 2026) states the same range with a $12,147 average.Retrieved 2026-09-06
Tub-to-showerAnswer bath_scope:convert$1,200 – $15,000Angi — Tub-to-Shower Conversion Cost (updated Jul 8, 2026): "Converting a tub to a shower ranges from $1,200 to $15,000, and your shower type sets totals near $3,000."Retrieved 2026-09-06
Refresh (tub & surround)Answer bath_scope:refresh$3,000 – $10,000Angi — Bathroom Remodel Cost (updated Jul 9, 2026), "Cost by Project Scope": Minor remodel = $3,000–$10,000 ("retaining or refinishing the existing fixtures, new paint or wallpaper, replacing the vanity, or adding accessories"). Mapped to the funnel's lowest tier, "Refresh (tub & surround)".Retrieved 2026-09-06
Midrange remodelAnswer bath_scope:midrange$10,000 – $25,000Angi — Bathroom Remodel Cost (updated Jul 9, 2026), "Cost by Project Scope": Partial remodel = $10,000–$25,000 ("replacing at least one of the three main bathroom fixtures"). Mapped to the funnel's middle tier, "Midrange remodel".Retrieved 2026-09-06
Full gut renovationAnswer bath_scope:gut$25,000 – $80,000Angi — Bathroom Remodel Cost (updated Jul 9, 2026), "Cost by Project Scope": Full remodel = $25,000–$80,000 ("stripping everything out of an existing bathroom and replacing every fixture and surface without altering the plumbing"). Mapped to the funnel's top tier, "Full gut renovation".Retrieved 2026-09-06

The regional multipliers

One row per market we price, plus the national row a ZIP falls back to when we can place it in no market and no state. The multiplier is the whole of the geographic adjustment: there is no second factor applied anywhere, and nothing on this site varies a figure by anything other than the trade, your answer and this number.

MarketMultiplierZIPs mappedSource
National averageFallback for any ZIP we do not map1.000Every unmapped ZIPDerived: BEA Regional Price Parities, all items, United States = 100.000 (2024) ÷ 100. The national price level is the index base by construction — RPPs are "expressed as a percentage of the overall national price level" — so the national multiplier is exactly 1.000.Retrieved 2026-09-06
Austin, TX0.9813Derived: BEA Regional Price Parities, all items, Austin-Round Rock, TX (MSA) = 98.066 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL12420) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Chicago, IL1.0363Derived: BEA Regional Price Parities, all items, Chicago-Naperville-Elgin, IL-IN-WI (MSA) = 103.595 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL16980) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Columbus, OH0.9553Derived: BEA Regional Price Parities, all items, Columbus, OH (MSA) = 95.469 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL18140) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Dallas, TX1.0313Derived: BEA Regional Price Parities, all items, Dallas-Fort Worth-Arlington, TX (MSA) = 103.090 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL19100) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Denver, CO1.0583Derived: BEA Regional Price Parities, all items, Denver-Aurora-Lakewood, CO (MSA) = 105.782 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL19740) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Houston, TX0.9863Derived: BEA Regional Price Parities, all items, Houston-The Woodlands-Sugar Land, TX (MSA) = 98.629 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL26420) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Nashville, TN0.9633Derived: BEA Regional Price Parities, all items, Nashville-Davidson--Murfreesboro--Franklin, TN (MSA) = 96.338 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL34980) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Phoenix, AZ1.0333Derived: BEA Regional Price Parities, all items, Phoenix-Mesa-Scottsdale, AZ (MSA) = 103.316 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL38060) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06
Tampa, FL1.0093Derived: BEA Regional Price Parities, all items, Tampa-St. Petersburg-Clearwater, FL (MSA) = 100.890 (2024) ÷ 100. Published metro price-level index (FRED series RPPALL45300) on the same national-is-1.000 scale the state tier uses; a consumer price-level proxy, not a construction cost index.Retrieved 2026-09-06

“ZIPs mapped” is how many ZIP codes we route to that market, not how many the market contains. Coverage is deliberately partial — see below.

The state tier

A ZIP we cannot place in a market we price, but can place in a state by its prefix, takes that state's figure from the same index. We hold 51 state rows, each divided from the published figure its own source line quotes.

StateMultiplierSource
Alabama0.888Derived: BEA Regional Price Parities, all items, Alabama = 88.823 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Alaska1.024Derived: BEA Regional Price Parities, all items, Alaska = 102.359 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Arizona1.007Derived: BEA Regional Price Parities, all items, Arizona = 100.677 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Arkansas0.869Derived: BEA Regional Price Parities, all items, Arkansas = 86.937 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
California1.107Derived: BEA Regional Price Parities, all items, California = 110.720 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Colorado1.031Derived: BEA Regional Price Parities, all items, Colorado = 103.052 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Connecticut1.036Derived: BEA Regional Price Parities, all items, Connecticut = 103.610 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Delaware0.998Derived: BEA Regional Price Parities, all items, Delaware = 99.808 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
District of Columbia1.099Derived: BEA Regional Price Parities, all items, District of Columbia = 109.901 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Florida1.034Derived: BEA Regional Price Parities, all items, Florida = 103.414 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Georgia0.963Derived: BEA Regional Price Parities, all items, Georgia = 96.293 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Hawaii1.100Derived: BEA Regional Price Parities, all items, Hawaii = 109.951 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Idaho0.955Derived: BEA Regional Price Parities, all items, Idaho = 95.494 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Illinois1.000Derived: BEA Regional Price Parities, all items, Illinois = 99.958 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Indiana0.933Derived: BEA Regional Price Parities, all items, Indiana = 93.329 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Iowa0.878Derived: BEA Regional Price Parities, all items, Iowa = 87.762 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Kansas0.901Derived: BEA Regional Price Parities, all items, Kansas = 90.068 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Kentucky0.902Derived: BEA Regional Price Parities, all items, Kentucky = 90.159 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Louisiana0.882Derived: BEA Regional Price Parities, all items, Louisiana = 88.207 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Maine0.971Derived: BEA Regional Price Parities, all items, Maine = 97.050 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Maryland1.050Derived: BEA Regional Price Parities, all items, Maryland = 104.959 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Massachusetts1.058Derived: BEA Regional Price Parities, all items, Massachusetts = 105.757 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Michigan0.962Derived: BEA Regional Price Parities, all items, Michigan = 96.217 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Minnesota0.986Derived: BEA Regional Price Parities, all items, Minnesota = 98.621 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Mississippi0.870Derived: BEA Regional Price Parities, all items, Mississippi = 86.953 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Missouri0.908Derived: BEA Regional Price Parities, all items, Missouri = 90.817 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Montana0.946Derived: BEA Regional Price Parities, all items, Montana = 94.645 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Nebraska0.901Derived: BEA Regional Price Parities, all items, Nebraska = 90.103 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Nevada1.000Derived: BEA Regional Price Parities, all items, Nevada = 99.979 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
New Hampshire1.042Derived: BEA Regional Price Parities, all items, New Hampshire = 104.165 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
New Jersey1.088Derived: BEA Regional Price Parities, all items, New Jersey = 108.805 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
New Mexico0.922Derived: BEA Regional Price Parities, all items, New Mexico = 92.212 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
New York1.079Derived: BEA Regional Price Parities, all items, New York = 107.921 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
North Carolina0.943Derived: BEA Regional Price Parities, all items, North Carolina = 94.326 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
North Dakota0.890Derived: BEA Regional Price Parities, all items, North Dakota = 88.959 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Ohio0.928Derived: BEA Regional Price Parities, all items, Ohio = 92.774 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Oklahoma0.878Derived: BEA Regional Price Parities, all items, Oklahoma = 87.843 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Oregon1.034Derived: BEA Regional Price Parities, all items, Oregon = 103.361 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Pennsylvania0.976Derived: BEA Regional Price Parities, all items, Pennsylvania = 97.572 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Rhode Island1.023Derived: BEA Regional Price Parities, all items, Rhode Island = 102.280 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
South Carolina0.937Derived: BEA Regional Price Parities, all items, South Carolina = 93.749 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
South Dakota0.886Derived: BEA Regional Price Parities, all items, South Dakota = 88.586 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Tennessee0.919Derived: BEA Regional Price Parities, all items, Tennessee = 91.870 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Texas0.971Derived: BEA Regional Price Parities, all items, Texas = 97.057 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Utah0.989Derived: BEA Regional Price Parities, all items, Utah = 98.864 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Vermont0.980Derived: BEA Regional Price Parities, all items, Vermont = 97.958 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Virginia1.011Derived: BEA Regional Price Parities, all items, Virginia = 101.104 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Washington1.070Derived: BEA Regional Price Parities, all items, Washington = 107.013 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
West Virginia0.895Derived: BEA Regional Price Parities, all items, West Virginia = 89.497 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Wisconsin0.941Derived: BEA Regional Price Parities, all items, Wisconsin = 94.095 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02
Wyoming0.927Derived: BEA Regional Price Parities, all items, Wyoming = 92.691 (2024) ÷ 100. Published state price-level index, used where no metro cost index applies.Retrieved 2026-09-02

Why it is never a quote

There is no pricing engine behind these figures, and there is no bidding. Nobody has seen your house. What we hold is two curated numbers per figure; what a quote requires is your roof's pitch and decking, the condition of your window openings, what your city's permit desk is doing this month, and what a particular contractor's calendar is worth to them this week. We hold none of that, and a number produced without it is a planning figure.

So the wording on this site is deliberate and consistent: typical cost range, never “your price” and never “quote”. A range is what we can honestly publish. A quote is a contractor's offer, made after a visit, and only they can make it.

The ranges are wide on purpose. Narrowing them would mean claiming precision the two inputs cannot support, and a tight range that is wrong is worse for planning than a wide one that is right.

What we do not know

The honest limits of the model, stated rather than buried in a fallback that never announces itself:

  • A multiplier is a market average, not a bid. It describes how prices in a metro compare with the country as a whole. It does not know what any contractor in that metro will charge you.
  • The index is a consumer price-level index, not a construction cost index. The BEA Regional Price Parities weight what households buy — housing above all — not what trades charge. Local labor rates, material freight, permit fees and how many contractors compete for your job are all invisible to it, so a metro where housing is dear but trades are plentiful can be over-adjusted, and the reverse under-adjusted. It is the published, citable proxy — every row above links its figure — and every row's own source line says it is a proxy.
  • ZIP coverage is partial. We map 27 ZIP codes across 9 markets. A ZIP we do not map to a market takes its state's multiplier from the same index where its prefix places it in a state, and the national row (multiplier 1.000) otherwise; either way the figure is labeled for the state or the country rather than dressed up as your city's.
  • A market we do not price shows a national range. That is the right answer rather than an error — a national typical range is useful and honest — but it is not a local figure, and we do not present it as one.
  • A trade with no band shows no figure at all. Where we hold nothing, a page says so instead of borrowing another trade's number or another metro's. That is not hypothetical: a trade sat unpriced here until we had decided how to key it, and it showed no figure the whole time.
  • Figures age. A figure is only as fresh as its stalest input, so the honest date for a range is the older of its two rows' retrieval dates — which is why every table above prints them per row rather than stamping the page with a single date. Cost data last refreshed 2026-09-06. The oldest input on this page was retrieved 2026-09-06.

How guides are sourced

A cost guide is a document, written and edited by Home Services Marketplace Cost Desk— the editorial function of Home Services Marketplace itself, with no independent review board behind it. Its figures are not editorial at all: every dollar amount in a guide is the same two rows described above, rendered through the same code as everywhere else, and the desk cannot type a price into one. Who the desk is, and what it will and will not print, is on editorial standards.

The written sections can carry their own citations. Where a guide makes a checkable claim about the world — a state's contractor licensing threshold, an insurance department's position on a building material, federal guidance on indoor humidity — the section carries source links, and they render beside the claim rather than in a bibliography at the bottom that nobody scrolls to. Sections that cite nothing show no source line at all: an empty “Sources” heading is a claim of its own.

The methodology block on each guide reads its provenance from the same rows this page publishes, so a guide can never carry an authored second opinion about where its own numbers came from. Browse the cost guides to see it in place.

Everything on this page is read from the reference tables when the page is requested. None of it is a copy of them.