Home / Methodology
How we work
How we source these cost figures
PlumbingRepairCost publishes price ranges for common plumbing repairs so a homeowner can walk into a quote knowing roughly what the job should cost. This page explains where those numbers come from and how we present them, so you can judge them for yourself.
Where the numbers come from
Every dollar figure on this site is compiled from published industry cost guides, not invented and not based on our own jobs. We primarily cite HomeGuide, Fixr, Angi, Thumbtack, and This Old House, and we name the source directly under each cost table. When two reputable guides disagree, we show the wider range rather than pick a single number, and we say so.
How we present a range
Plumbing prices are ranges, not fixed prices. We report a national typical range plus the specific factors that push a job to the low or high end, because a water heater swap in a tight closet with old shutoffs is a different job than a clean, code-current replacement. We separate parts from labor wherever the source data allows, since the labor share is where quotes vary most.
Why the figures are national ranges
Local labor rates, permit costs, and material prices vary widely by region, so a national range is a starting point, not a quote. The most reliable number for your home is an itemized quote from a licensed local plumber. We tell you what to ask so you can compare quotes like for like.
Freshness and corrections
Each cost and guide page carries a “last updated” date. We review figures against current cost guides and refresh them when the published ranges move. If you spot a figure that looks wrong or out of date, email hello@plumbingrepaircost.com and tell us the page and the number; we will check it against the source and correct it if the source supports the change.
City pages: how we localize a range
Some of our cost pages have a city version, such as water heater replacement cost in San Antonio. We do not collect local contractor quotes and we do not claim to. Instead, we take the national cited range from the parent page and multiply it by a local wage index: the metro median wage for plumbers, from the U.S. Bureau of Labor Statistics, divided by the national median for the same occupation. San Antonio’s plumber median is about 9 percent below the national median, so its ranges sit a little lower.
We then sanity-check that math against published price pages from real local plumbers. When those local pages run higher than the pure wage-adjusted figure, because they bundle code upgrades or extra work, we widen our range toward them and say so on the page rather than pretend the low number is typical. Small jobs round to the nearest $25 and large jobs to the nearest $100. Every local fact on a city page, from water hardness to permit fees to housing age, carries its own cited source.
Freeze and frost data: how the numbers are built
The freeze and frost pages are built from committed data files rather than live lookups, and every figure on them traces to a file in this site’s repository with a source URL that was checked for a 200 response when the data was generated. Nothing is fetched while you read the page.
Freeze dates and cold-night counts come from NOAA NCEI’s U.S. Climate Normals for 1991 to 2020, annual and seasonal by station. We keep the 6,948 US stations that publish a first-freeze probability at 32°F, and for each one we record the 10th, 50th and 90th percentile dates of the first autumn 32°F, 28°F and 20°F night, the same for the last spring freeze, and the mean nights per year below 32°F and 20°F. NOAA publishes no 28°F night-count, so we do not report one rather than deriving it.
Matching a ZIP code to a station uses the Census Bureau’s 2023 ZIP Code Tabulation Area gazetteer. We take each ZIP’s centroid and find the nearest station that has freeze data, by great-circle distance, and we cap that at 75 miles. Beyond the cap we say there is no station close enough rather than extrapolating: 33,520 ZIPs have a station inside the cap and a small number do not. The station name and its distance are shown with every result, so you can judge how well it represents your address.
State freeze figures are the median across every station in that state with a published normal, with first-freeze dates ordered on a year that begins on 1 July so that autumn and January dates sort the way a reader expects. Where a state page shows a handful of stations, they are selected by a fixed rule and not by hand: first-order stations, sorted west to east, sampled evenly so the table spans the state.
The winterize-by date is ours. It is the 10th percentile date of the first 28°F night, meaning the date by which one winter in ten has already had a hard freeze. We use it because the first light frost is too early to act on and the first hard freeze is too late, and we label it as our rule rather than a code requirement or a NOAA product.
Frost depth is researched by hand, one state at a time. There is no federal frost-depth dataset; the figure is set by whichever building code a jurisdiction adopted. We publish a number only when a state building-code amendment, a state administrative rule, a state DOT document or a state plumbing code publishes it. Where a state leaves the figure to local jurisdictions, which most do, we record no statewide figure and list the published depths of real building departments instead. We never read a depth off a contour map, average it between neighbouring states, or take it from a contractor or deck-building site, and where we could not verify a figure we say so on the page. The per-state ledger, with the source and a confidence note for each, is in data/frost-depth.sources.md in the site repository.
A few official pages refuse automated requests. Some city, county and state sites block traffic from datacentre networks, so the script that checks every source URL cannot reach them from our build machine even though they open normally in a browser. Those sources carry the date they were opened and read by hand, the checker reports them as a warning naming that date rather than passing them silently, and it still tries the fetch on every run so the stamp disappears the day the block does.
Two figures we deliberately do not publish. The widely repeated claim that pipes are at risk once outdoor air reaches 20°F is not stated by any university, by IBHS, or by any federal source we could find, so we do not assert it; we report nights below 20°F only because NOAA publishes that count. And no authority publishes a reliable hours-to-freeze figure, so neither do we.
The ZIP checker stores nothing. It reads a small static file for your ZIP’s three-digit prefix and does the lookup in your browser. No ZIP code is sent to us or stored, and the analytics event it fires carries the three-digit prefix only.
Plumbing-problem pages: how we source them
Our plumbing-problem pages answer questions like “why does my water smell like rotten eggs” or “why does my toilet keep running.” They do not diagnose your home and they do not tell you a sign is harmless. Each one follows the same order: any official safety instruction first, then what people commonly notice, then what official sources say the causes can include, then how to find out, then who to contact.
The sources are public agencies first: EPA, CDC, USGS, the Consumer Product Safety Commission, state health departments, fire departments, and public water and sewer utilities, with land-grant university extension services for household water topics. A manufacturer is cited only for how its own part works, such as a toilet fill valve or a water heater. Every page lists its sources with the date we checked them, and every source link is re-checked by script before a release. Where an agency gives an emergency instruction, such as leaving the house for a possible gas leak, we quote it rather than paraphrase it, and no product or partner link appears above it.
The “try this while you wait” links on these pages go to Amazon searches for screening tools such as water test strips and pressure gauges. We earn a commission on qualifying purchases, we have not tested the products, and a home kit is never a substitute for a state-certified lab or a licensed plumber. The Angi module on these pages is labeled as an advertising partner. See our disclosure.
What we are, and what we are not
PlumbingRepairCost is an independent cost-research site. We connect homeowners with independent, licensed plumbers, who pay us for that introduction; homeowners never pay us, and that never changes what you pay. We are not a plumbing contractor, we do not dispatch emergency crews, and we do not give the go-ahead on any specific repair. See our disclosure for the full statement.