BizGapMap

Home / Methodology

Methodology

Every number on BizGapMap comes from public U.S. Census and BLS data and a single documented assumption. Nothing is estimated or inferred by a model.

The question

For a given business type — coffee shops, gyms, nail salons — how many exist per person present in a ZIP code, compared with the U.S. as a whole? That ratio is a supply-side density. It tells you how crowded the field already is, not how much money any one business makes.

Who counts as "present" (the demand model)

Demand is modeled as residents + 0.5 × workers, measured per ZIP code.

Why workers? A storefront competes for the people who are physically there during the day, not only where they sleep. A downtown ZIP with 3,000 residents and 40,000 jobs is a very different market than a bedroom ZIP with the same population.

Why 0.5? A full-time worker is present roughly 40 hours a week, while a resident is present around the clock, and part of a worker's spending happens near home rather than at work. Half-weighting jobs is the single tunable assumption in the model. It is applied identically everywhere, so relative comparisons are valid even if the exact weight is argued.

The index

ZIP density = establishments ÷ demand × 10,000, where demand = residents + 0.5 × workers.

U.S. baseline = national establishments for that industry ÷ national demand × 10,000.

Index = ZIP density ÷ U.S. baseline. 100% means exactly the national rate; 200% means twice as many competitors per person present.

Verdict bands

IndexLabel
< 50%Far below average
50–100%Below average
100–150%Above average
150–250%High density
250%+Very high density

Bands are descriptive labels for the same index — not a recommendation.

ZIP types

ZIPs are classified by their jobs-to-residents ratio. The density data story ranks only residential and mixed ZIPs; the nearby-ZIP search keeps every type but labels each result:

Hubs and destinations are shown separately because their business counts are driven by commuters and visitors, so a "shortage" cannot be read from resident numbers alone.

This ratio is not a zoning or land-use classification. A ZIP classed as residential can contain a commercial corridor, and a ZIP classed as mixed can be almost entirely housing plus one large employer. The tag describes who is present during the day, nothing more.

Statistical significance (the nearby-ZIP search)

The nearby-ZIP search lists ZIPs where one industry is sparser than the national rate. An index below 100% is not enough to qualify: with small counts, a low ratio can be ordinary variation. Two filters apply.

Minimum size. A ZIP is compared only if it has at least 10,000 residents in the covered county set and at least 5 published establishments in that industry. Cells that Census withheld (0–2) or that we derived as a remainder are excluded — a 3-count cell is too thin to rank.

One-sided Poisson test. We treat the published count n as a draw from a Poisson distribution with mean λ, where λ is the national establishments-per-person-present rate multiplied by the ZIP's demand (residents + 0.5 × workers). The ZIP is labelled statistically low only when the probability of seeing ≤ n is under 5%:

P(X ≤ n | λ) < 0.05

This is the same demand definition and the same national baseline used by the index, so the test and the percentage on each card can never disagree.

What it does not do. The test controls neither for multiple comparisons nor for the 12 other industries examined in the same ZIP. At a 5% threshold, roughly one in twenty comparable ZIPs clears the bar by chance; the search page states the expected count of false positives for the radius you chose. It also has low power in small ZIPs: a 10,000-resident ZIP needs an implausibly low count to reach significance, while a 60,000-resident ZIP reaches it easily. So "not significant" does not mean "no gap" — it often means "too small to tell".

Thin-tail industries. Nine of the 16 categories have almost no statistically low ZIPs anywhere in the country: clothing stores, pet care, and car washes have none; auto repair has 3, nail salons 1, convenience stores 2, gyms 5, pharmacies 7, and bars 9. For those, the search says there are no candidates and shows a labelled relative list instead. Two reasons are published beside it: the raw low tail is small (only 1 of 804 measurable car-wash ZIPs sits below 70% of the national rate), and for salons, child care, and pet care the employer count misses most of the market — Census counts 276,715 nail salons and 672,938 beauty salons without paid employees in the 500 covered counties, roughly 10× the employer establishments counted in the same counties. Those businesses are invisible to the index by construction, not absent from the neighborhood.

Radius. Distance is a straight line between Census ZCTA internal points, not drive time or a trade area. Only ZIPs in the 500 covered counties are searched, so a circle near the edge of coverage is incomplete; the page always states how many ZIPs it actually searched.

Withheld cells & estimates

Census ZBP publishes a ZIP-by-industry cell only when that ZIP has 3 or more establishments in the industry; counts are also rounded (noise infusion). So a missing cell means 0–2 businesses, not exactly zero. We show that range and leave the ZIP unranked instead of pretending it is a hard zero or a precise count.

Where the broader 5-digit industry group is published and exactly one 6-digit child is missing, we show a ~ estimate (group total minus the published sub-cells) and say so in the ZIP panel. If several children are missing the estimate would absorb them, so we refuse it. Estimates never replace an official figure.

ZBP counts employer establishments (those with paid employees). Owner-only shops without payroll are not included, which is one reason a ZIP can show 0–2 in the Census while OpenStreetMap already maps a dozen cafés.

The county row in Census CBP includes every establishment in the county, including those in ZIP codes that do not map to a ZCTA. It can therefore be slightly higher than the sum of the ZIP rows, which only cover ZCTAs. Where a report cites a CBP count, that is why.

Employer vs. nonemployer businesses

Census keeps two separate counts. ZBP counts establishments with paid employees — the figures behind the index. Nonemployer Statistics (NES) counts businesses with no paid employees: sole proprietors, owner-only shops, and side businesses. A business appears in one universe or the other, never both, so the two counts are not added together anywhere on this site.

Where Census publishes a comparable count, each report shows the county-level NES count and gross receipts beside the employer count. The receipts figure is the only revenue number on BizGapMap: it is published by Census, covers nonemployer businesses only, and is gross revenue — not profit, and not the size of the local market. Receipts per business divides one published number by another; it is arithmetic, not a model.

Why only some industries. NES 2024 uses NAICS 2022 while ZBP 2023 uses the prior NAICS version. We show a nonemployer count only where the codes identify exactly the same industry: an exact 6-digit match, a 5-digit parent with a single child, or one documented renumbering (pharmacies, 446110 → 45611). For grocery, convenience, clothing, auto repair, car wash, and gyms, Census publishes a combined grouping or no comparable figure, so the report says not published instead of approximating it.

What it does not tell you. Nonemployer businesses are not equivalent to storefronts; many are home-based, mobile, or part-time. A high nonemployer count means many people are trying the category, not that demand is strong or that a lease is a good idea. NES is county-level, so it cannot be placed on the ZIP map or used in the ZIP index.

Trend

For each county and industry we show the establishment count across 2015, 2018, 2020, 2021, 2022, 2023, computed on a consistent set of ZIP codes with a published count in every one of those years, so the change reflects entry/exit rather than ZIP-boundary changes. Census rounds counts, so small year-to-year moves are within noise and should not be read as real. 2015 and 2018 are pre-pandemic baselines; 2020 and 2021 are distorted by COVID, so the durable signal is the change from the earliest year to the latest.

Population, migration, and jobs

Four sources, four different questions. They are shown separately and never combined into a single "growth score", because they measure different things at different geographies.

County population (Census PEP). The Population Estimates Program publishes a July 1 estimate for every county and splits the annual change into births, deaths, international migration, and domestic migration. These are model-based estimates, not counts, and they are revised each year. The 2020 figure in our change calculation is the July 1, 2020 estimate, not the April 1, 2020 census base.

ZIP population change (ACS 5-year). We compare two adjacent, non-overlapping windows: 2015–2019 and 2020–2024. Each is a five-year average, so the change is between period averages, not a point-to-point count, and ZCTA boundaries can shift slightly. Every estimate carries a margin of error at 90% confidence; we call a change real only when |change| > 1.645 × √(MOE₁² + MOE₂²), and we only rank ZIPs with at least 2,000 residents in both windows. A ZIP marked "not significant" may still be changing — the survey cannot tell.

Jobs (LEHD LODES). LODES counts wage and salary jobs covered by unemployment insurance, plus federal jobs, by workplace (WAC) and by home address (RAC). It excludes the self-employed, military, and informal work, and it counts jobs, not unique people — one person can hold two. ZIP totals are built by mapping 2020 census blocks to ZCTAs; county totals use block county codes. The baseline is 2019 and the latest usable year is 2022 for every state except Michigan (2021 — the 2022 residence file is an incomplete Census release) and Alaska (no workplace file is published). Each figure is labelled with the year it uses, and 2019→2022 spans the pandemic, so it is one change, not a trend.

Movers (IRS SOI). The IRS matches individual tax returns between two years and publishes county-to-county flows. Counts are exemptions (people claimed on returns), not a population estimate: non-filers are missing, and dependents are counted where claimed. AGI is the adjusted gross income those filers reported, in total — not per person and not a measure of local demand. Tax data lag about two years.

What none of this tells you. Whether the customer base is growing is not the same as whether people want another business of a given type. Population can grow while a category shrinks, and jobs can grow while residents leave. These are context for the density index, not a substitute for it.

What this site does not do

What we do not know (read this)

Freshness

Establishment and population figures are annual and lag by about two years (ZBP 2023, ACS 2024 5-year). To give a fresher signal, each county report also cites BLS QCEW, which is published quarterly and confirms recent direction at the county level (it cannot be split by ZIP). QCEW publishes only 9 of the 16 industries here as a clean 6-digit series; for the other 7 the report falls back to Census County Business Patterns 2023, which is annual and slower, and says so on the page.

See Data sources for exact datasets, vintages, and links.

BizGapMap — free, no-login small-business saturation reports for major U.S. counties. Built entirely from public U.S. Census, BLS, and IRS data (ZBP 2023, ACS 2024 5-year, PEP 2024, LODES, QCEW, IRS SOI). No forecasts, no revenue guesses — withheld cells are marked, and the few derived counts are labelled as estimates.