Methodology

Where the numbers come from, and where they stop

A data product is only worth what its worst number is worth. This page says plainly what is measured, what is modelled and what is missing.

Room rates

These rates were pulled on 07 September 2026 (2 days ago). They are a snapshot, not a live feed. Room rents move slowly compared with nightly rates, but a figure this old should be treated as a starting point rather than today's asking price.

Coverage is 40,511 ZIP codes across 28,921 cities, and every figure is labelled with where it came from. In cities where we hold collected listings, the rate is the measured median of those listings and the page tells you how many. Everywhere else it is modelled, corrected against the measured set, and labelled as such. We would rather show you a number's provenance than a confident average that hides it.

The three room types

These are different products at different prices and we never average them together:

A half bath assigned to one room (toilet and basin, no shower) prices between the two and is tracked separately rather than folded into either.

Rooms here are priced by the week, not the month. That is how this market actually trades, and every figure on the site is weekly unless it says otherwise. Monthly equivalents use 52 weeks ÷ 12, so a $200 room is $867 a month — not $200. The weekly figures are checked against collected rent from operating room-rental portfolios before they ship.
The single most important caveat. Asking rent is not collected rent. Every figure on this site is what a room is worth listing at, before vacancy, arrears, turnover and concessions. The gap between the two is real and it is the next thing this product needs to close.

The private-bath premium

A private bathroom is worth a median +32.7%, and that figure is measured rather than assumed. It is controlled for the property: the comparison is made inside individual houses, so it isolates the bathroom instead of measuring the house and the neighbourhood along with it.

The distinction is not academic. The obvious approach — comparing private-bath rooms to shared-bath rooms across a city — returns a substantially larger number, because private-bath rooms sit in better houses in better areas. An operator pricing an ensuite renovation off that figure would budget for roughly twice the lift they would actually get. Markets with enough data carry their own premium; the rest carry the national figure and say so on the page.

The matching rules, qualifying thresholds and the per-market derivation are documented for subscribers.

Address lookup

Addresses are resolved by the US Census Bureau geocoder — public, free, no account. It returns the ZIP, and the ZIP is what we price. If the exact ZIP is not covered yet, we fall back to the nearest priced ZIP within 40 miles and say so on the result.

Nothing you type is stored or sent anywhere else. The rate table and the zoning research are downloaded to your browser and every calculation runs locally.

Whole-unit rent, for the arbitrage tools

The whole-house lease figure comes from HUD Small Area Fair Market Rents, FY2026 — a public dataset giving a 2-, 3- and 4-bedroom rent for roughly 38,600 ZIP codes. It is the only free, national, ZIP-level whole-unit rent that exists.

It is a payment standard, not an asking rent. HUD sets SAFMRs near the 40th percentile of standard-quality rents so that housing vouchers work in that ZIP. In a hot market a real lease will cost more; in a soft one you can often sign below it. Use it to build a shortlist, then put the rent you actually negotiated into the arbitrage calculator.

Zoning research

33 cities so far. Each was read out of the municipal code itself — the ordinance, the definitions section, the use table — and the source is named on every entry. Where a widely repeated figure turned out to come from a superseded ordinance, we say so rather than repeating it.

Observed enforcement, and 311

Two separate counts, from two separate feeds, deliberately never merged. Code-enforcement cases are the city acting. 311 requests are a resident reporting. We count, in each city’s own published register, the records that describe letting by the room or the occupancy problems that come with it, against that register’s total over a stated period. Each city’s register uses its own vocabulary, so the terms are tuned per city and the matched text is sampled by hand before a number ships — a bare keyword count is wrong often enough that we do not publish one.

What we will not do is call a city “rarely enforced”. A count cannot carry that sentence. It cannot see a complaint closed before a case opens, a city that enforces through zoning or the fire marshal instead, a register that does not reach back far enough, or wording we did not search for. It is a starting point for a specific question to the jurisdiction, not an answer.
A blank is never a zero, and the rates do not rank cities. Registers that carry no searchable description field are left out entirely rather than published at nil — that is why several very large markets are absent. And because every register defines its own fields, logs a different mix of complaint types and covers a different span of years, one city’s rate being double another’s may be nothing but a difference in record-keeping. Read a city against itself, not against the table.

Complaints per case is computed only where both feeds exist for the same city and their periods overlap by at least five years. Dividing a 311 feed that begins in 2020 by a case register that begins in 1994 produces a number, and the number is meaningless.

The Opportunity Score

Five components, weighted, and every one is shown with the reasoning behind it. Components we cannot compute are marked n/a and dropped from the weighting rather than silently averaged.

ComponentWeightWhat it measures
Regulatory environment30% The zoning verdict for that city, or n/a if unresearched
Room-rate strength25% National percentile of the ZIP's shared-bath rate
Rate vs. its metro15% The ZIP against its own metro median
Private-bath upside15% Dollar spread between private and shared, ranked nationally
Market depth15% How many priced ZIPs the metro has — a confidence proxy

Not modelled, and therefore not in the score: demand and fill speed, stabilised occupancy, competing room supply, and employment access. Those need live listing data the site does not have yet. A score here is a read on rates and rules, not on demand.

What this is not

Coverage is still growing. The national rate pull runs continuously; this build carries 40,511 ZIPs. If a ZIP is missing, it has not been fetched yet — it is not a statement about the market.