What we found reading hospital price files

Every US hospital has been required since 2021 to publish a machine-readable file of its prices, including a discounted cash price for people paying without insurance. We have read 64,246,872 rows of those files across 84 hospitals. Most of what makes them hard to use is not complexity. It is that the same number means different things in different files, and nothing in the file tells you which.

These are the specific traps, with the measurements behind them. We publish them because a price comparison you cannot check is worth nothing, and because every one of these would have made our own numbers look more impressive than the truth.

A hospital can obey the rule and still tell you nothing

The discounted cash price column is mandatory. It is not required to contain anything.

Ohio State University Hospitals publishes no self-pay price at all. The column federal rules require is present and empty across all 2,366,510 rows of its file, and all 4,470,209 rows of the James Cancer Hospital file. A patient paying for themselves cannot learn their price from the file OSU is required to publish.

For comparison, in the same city: OhioHealth publishes a self-pay price for 41 of the 58 procedures we track at each hospital, Mount Carmel for 52 to 53, and Nationwide Children's for 54.

This is why the grade on each hospital page is about whether a price exists at all, not whether it is a good price.

One billing code, seven different prices

A hospital may list the same procedure code many times at different prices, under an identical description, with nothing indicating which one applies to you.

Mount Carmel East lists CPT 20610, a major joint injection, at seven distinct cash prices — $15.68, $23.04, $98, $144, $156, $196 and $288 — every one under the same description.

This is the trap that matters most, because whichever price a comparison site happens to read first becomes "the price". Reading the lowest of one hospital's seven against another hospital's single figure produced, on an early version of this site, a claim that one hospital charged 87.7× more than another. That number was pure artefact.

Where a hospital publishes several prices for a code, we show the range and mark it varies, and we leave it out of hospital-to-hospital comparisons entirely.

The same code is not the same thing at two hospitals

A code can describe one line on a bill at one hospital and an entire surgical episode at another. Both are published honestly. Dividing one by the other is meaningless.

Nationwide Children's publishes shoulder arthroscopy at $775.80 against a gross charge of $862 — a single operating-room line. Mount Carmel East publishes the same code at $55,316.58, which is a whole admission.

Measuring this across every hospital we had, by category:

  • Imaging — average spread 1.2×. Comparable.
  • Lab tests — average spread 2.3×. Comparable.
  • Procedures — average spread 7.8×, worst case 71.3×. Not comparable.

Cross-hospital comparison on this site is imaging and lab work only. Procedure prices are shown on a hospital's own page and never ranked against another hospital's.

Two prices for the same test can both be real

Banner Heart Hospital lists a prothrombin time blood test at $0.83 and also at $8.06. Neither is an error. The first is a point-of-care bedside test with a $13 list price; the second is a full lab test with a $126 list price. Both carry the same 6.4% self-pay discount.

We flagged the $0.83 as a suspected bug in our own reader and went to Banner's published file to check. It was correct. We mention it because the instinct to "fix" a number that looks wrong is how a comparison site quietly starts editing hospitals' data.

A published minimum is often not a price anyone pays

Files carry the minimum and maximum an insurer has negotiated. Some of those rows are not dollar amounts at all — they are a percentage of charges, or a per-day rate, recorded in a way that reads as a very small number.

Taken at face value, OSU's published minimum for a colonoscopy is $0.62. That is not a price. It is a rate expressed in a different unit, and any site that aggregates those rows prints a number it cannot defend.

Rows whose rate is not stated in dollars are counted and excluded rather than dropped silently. Each hospital page reports how many were excluded from its file.

Some missing prices are correct

Hospital files cover facility charges. An office visit or an ECG is billed by the doctor, not the building, so its absence from a hospital's file is the file behaving correctly rather than a gap.

We mark those procedures as normally absent instead of rendering an empty cell that reads like missing data.

There is no national list of these files, and roughly a third are unreachable

CMS requires each hospital to advertise its price file at a fixed address on its own website, and does not collect the results anywhere. There is no index.

We checked that address on 1,658 hospital domains. 1,051 answered with a usable file — about 63%. The rest returned nothing, refused automated requests outright, or had no file at the address the rule specifies.

Hospitals also merge and rebrand, and the old address stops working. Beaumont Health became Corewell Health; five Detroit hospitals looked non-compliant purely because we were still asking the old domain. They were publishing normally.

This is why each metro page says how many of its hospitals we found a file for. A hospital we could not find one for gets a page saying exactly that, rather than being left off the list.

If we have something wrong

Every price on this site links to the hospital file it came from, so you can check any figure against the source. If a hospital publishes its file somewhere we did not look, or we have read something incorrectly, tell us and we will fix it and say what changed.

How we read these files →