DataWorks Commons
City+ · methodology

How City+ works

Every claim on a City+ page follows the same published rules. This page documents them: the data sources, how peer cities are selected, how current levels and rates of change are measured, and the tests a change must pass before it is described as a genuine improvement.

Where the numbers come from

City+ uses only sources with a consistent, multi-year, city-level series. Each card names its source and the year it runs through; no observation values are modeled or imputed by City+ (the one computed input, the population denominator behind the crime rates, is documented under recent readings). "Survey" means answers collected from people (with sampling error), "administrative" means agency records, and "modeled" means a statistical estimate published by the source itself.

MetricDomainSourceKindThroughDirectionUncertaintyReferrals?
Median household income Economy Census ACS 5-year survey survey 2024 Higher is better published MOE yes
Unemployment rate Economy BLS Local Area Unemployment Statistics administrative 2025 Lower is better noise proxy yes
Share of people below the poverty level Economy Census ACS 5-year survey survey 2024 Lower is better published MOE yes
Share of children below the poverty level Economy Census ACS 5-year survey survey 2024 Lower is better published MOE yes
Households with a broadband internet subscription Economy Census ACS 5-year survey survey 2024 Higher is better published MOE yes
Adults with a bachelor's degree or higher Education Census ACS 5-year survey survey 2024 Higher is better published MOE yes
Children ages 3-4 enrolled in preschool Education Census ACS 5-year survey survey 2024 Higher is better published MOE yes
People without health insurance Health Census ACS 5-year survey survey 2024 Lower is better published MOE yes
Violent crime rate Public Safety Real-Time Crime Index administrative 2026-04 Lower is better noise proxy yes
Property crime rate Public Safety Real-Time Crime Index administrative 2026-04 Lower is better noise proxy yes
Homicide rate Public Safety Real-Time Crime Index administrative 2026-04 Lower is better noise proxy yes
Motor vehicle theft rate Public Safety Real-Time Crime Index administrative 2026-04 Lower is better noise proxy yes
Typical home value Housing Zillow Home Value Index modeled 2026-06 No better direction modeled no
Starter home value (bottom tier) Housing Zillow Home Value Index modeled 2026-06 No better direction modeled no
Homeownership rate Housing Census ACS 5-year survey survey 2024 Higher is better published MOE no
Typical asking rent Housing Zillow Observed Rent Index modeled 2026-06 No better direction modeled no
Population Demographics Census ACS 5-year survey survey 2024 No better direction published MOE no
Children's share of the population Demographics Census ACS 5-year survey survey 2024 No better direction published MOE no
Adult obesity Health CDC PLACES modeled 2022 Lower is better modeled no
Housing cost-burdened households Housing Census ACS 5-year survey (tables B25070 + B25091) survey 2024 Lower is better published MOE yes
Households without a vehicle Housing Census ACS 5-year survey (table B08201) survey 2024 Lower is better published MOE yes
Income inequality (Gini index) Economy Census ACS 5-year survey (table B19083) survey 2024 Lower is better published MOE no
Households receiving SNAP Economy Census ACS 5-year survey survey 2023 Lower is better published MOE yes
Children in single-parent families Demographics Census ACS 5-year survey (table B09002) survey 2024 No better direction published MOE no
Teens not in school and not working Education Census ACS 5-year survey (table B14005) survey 2024 Lower is better published MOE yes
Children without health insurance Health Census ACS 5-year survey (table B27001) survey 2024 Lower is better published MOE yes
Young children with all parents in the labor force Demographics Census ACS 5-year survey (table B23008) survey 2024 No better direction published MOE no

Metric notes: sources, caveats, and recipes

Each entry below documents one metric: its source, any computation City+ performs, and its caveats. The "about this metric" link on each City+ card opens the corresponding entry. Where City+ computes a rate, the exact formula is shown; formulas combine same-year values from the same survey, and each underlying series can be opened from the card's chart link.

Median household income · Economy · Census ACS 5-year survey through 2024 survey · Higher is better

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

ACS 5-year estimates pool overlapping survey windows, which smooths and lags real change; recent shifts show up slowly.

Values are nominal dollars, not inflation adjusted; incomes rise most years in most places, so weigh the peer-relative pace of change, not the raw climb.

Tract view: change map on city pages. How the tract view works.

Unemployment rate · Economy · BLS Local Area Unemployment Statistics through 2025 administrative · Lower is better

LAUS is a model-assisted administrative series without published local margins of error; trend gates use a noise proxy.

Trends are fitted only to years after the 2020-2021 pandemic shock; a decline measured from the 2020 spike is recovery, not improvement, and is never presented as one.

Tract view: not published at census-tract level. How the tract view works.

Share of people below the poverty level · Economy · Census ACS 5-year survey through 2024 survey · Lower is better
Computed by City+: (Count_Person_BelowPovertyLevelInThePast12Months) ÷ (Count_Person) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

ACS 5-year pooling smooths and lags real change.

Tract view: change map on city pages. How the tract view works.

Share of children below the poverty level · Economy · Census ACS 5-year survey through 2024 survey · Lower is better
Computed by City+: (Count_Person_Upto6Years_BelowPovertyLevelInThePast12Months + Count_Person_6To11Years_BelowPovertyLevelInThePast12Months + Count_Person_12To17Years_BelowPovertyLevelInThePast12Months) ÷ (Count_Person_Upto6Years_BelowPovertyLevelInThePast12Months + Count_Person_6To11Years_BelowPovertyLevelInThePast12Months + Count_Person_12To17Years_BelowPovertyLevelInThePast12Months + Count_Person_Upto6Years_AbovePovertyLevelInThePast12Months + Count_Person_6To11Years_AbovePovertyLevelInThePast12Months + Count_Person_12To17Years_AbovePovertyLevelInThePast12Months) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

ACS 5-year pooling smooths and lags real change.

Children for whom poverty status is determined; kids in group quarters are outside the universe.

Tract view: change map on city pages. How the tract view works.

Households with a broadband internet subscription · Economy · Census ACS 5-year survey through 2024 survey · Higher is better
Computed by City+: (Count_Household_WithInternetSubscription) ÷ (Count_Household) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

ACS 5-year pooling smooths and lags real change.

Counts any broadband subscription (cable, fiber, DSL, satellite, cellular-only); it says nothing about speed or reliability.

Tract view: change map on city pages. How the tract view works.

Adults with a bachelor's degree or higher · Education · Census ACS 5-year survey through 2024 survey · Higher is better
Computed by City+: (Count_Person_EducationalAttainmentBachelorsDegree + Count_Person_EducationalAttainmentGraduateOrProfessionalDegree) ÷ (Count_Person_25OrMoreYears) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Share of residents 25 and older. Rising attainment can reflect educating residents or attracting graduates; the number does not say which.

Tract view: change map on city pages. How the tract view works.

Children ages 3-4 enrolled in preschool · Education · Census ACS 5-year survey through 2024 survey · Higher is better
Computed by City+: (Count_Person_3To4Years_Female_EnrolledInPublicSchool + Count_Person_3To4Years_Male_EnrolledInPublicSchool + Count_Person_3To4Years_Female_EnrolledInPrivateSchool + Count_Person_3To4Years_Male_EnrolledInPrivateSchool) ÷ (Count_Person_3To4Years_Female_EnrolledInPublicSchool + Count_Person_3To4Years_Male_EnrolledInPublicSchool + Count_Person_3To4Years_Female_EnrolledInPrivateSchool + Count_Person_3To4Years_Male_EnrolledInPrivateSchool + Count_Person_3To4Years_Female_NotEnrolledInSchool + Count_Person_3To4Years_Male_NotEnrolledInSchool) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Counts public and private preschool together; it measures enrollment, not program quality or affordability.

Tract view: change map on city pages. How the tract view works.

People without health insurance · Health · Census ACS 5-year survey through 2024 survey · Lower is better
Computed by City+: (Count_Person_NoHealthInsurance) ÷ (Count_Person) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Expressed as a share of all residents. Coverage is shaped by state policy (Medicaid expansion) as well as local action; a referral candidate's gain may be a state story.

Tract view: change map on city pages. How the tract view works.

Violent crime rate · Public Safety · Real-Time Crime Index through 2026-04 administrative · Lower is better

Agency-reported counts with no published uncertainty; trend gates use a noise proxy. Reporting practice changes can move the series.

Counts are preliminary, unofficial, and subject to agency revision; reporting methodologies vary by agency, so cross-city comparisons are indicative rather than definitive, and the FBI cautions against reading crime rankings as measures of law-enforcement effectiveness.

Covers roughly 600 cities whose agencies report to the Real-Time Crime Index; coverage is broad but not universal.

Tract view: not published at census-tract level. How the tract view works.

Property crime rate · Public Safety · Real-Time Crime Index through 2026-04 administrative · Lower is better

Agency-reported counts with no published uncertainty; trend gates use a noise proxy. Reporting practice changes can move the series.

Counts are preliminary, unofficial, and subject to agency revision; reporting methodologies vary by agency, so cross-city comparisons are indicative rather than definitive, and the FBI cautions against reading crime rankings as measures of law-enforcement effectiveness.

Covers roughly 600 reporting cities; broad but not universal.

Tract view: not published at census-tract level. How the tract view works.

Homicide rate · Public Safety · Real-Time Crime Index through 2026-04 administrative · Lower is better

Homicide counts are small even in large cities, so year-to-year swings are often noise; the trend checks are doing real work here, and many genuine declines will sit below the noise bar for a while.

Counts are preliminary, unofficial, and subject to agency revision; reporting methodologies vary by agency, so cross-city comparisons are indicative rather than definitive, and the FBI cautions against reading crime rankings as measures of law-enforcement effectiveness.

Covers roughly 600 reporting cities; broad but not universal.

Tract view: not published at census-tract level. How the tract view works.

Motor vehicle theft rate · Public Safety · Real-Time Crime Index through 2026-04 administrative · Lower is better

Agency-reported counts with no published uncertainty; trend gates use a noise proxy.

Counts are preliminary, unofficial, and subject to agency revision; reporting methodologies vary by agency, so cross-city comparisons are indicative rather than definitive, and the FBI cautions against reading crime rankings as measures of law-enforcement effectiveness.

The 2022-2023 national spike (keyless-theft methods spreading on social media) and its reversal are real events shared across many cities; the peer-relative pace of change matters more than the raw swing.

Tract view: not published at census-tract level. How the tract view works.

Typical home value · Housing · Zillow Home Value Index through 2026-06 modeled · No better direction

Zillow's smoothed, seasonally adjusted model of typical home value (35th to 65th percentile); an estimate, not a transaction record.

Tract view: not published at census-tract level. How the tract view works.

Starter home value (bottom tier) · Housing · Zillow Home Value Index through 2026-06 modeled · No better direction

Zillow's smoothed model of typical value in the bottom third (5th to 35th percentile) of a market; an estimate, not a transaction record.

Tract view: not published at census-tract level. How the tract view works.

Homeownership rate · Housing · Census ACS 5-year survey through 2024 survey · Higher is better
Computed by City+: (Count_HousingUnit_OwnerOccupied) ÷ (Count_HousingUnit_OccupiedHousingUnit) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Tract view: change map on city pages. How the tract view works.

Typical asking rent · Housing · Zillow Observed Rent Index through 2026-06 modeled · No better direction

Zillow's repeat-listing model of market-rate asking rent; an estimate, not a lease record.

Covers fewer cities than the home value index (larger rental markets).

Tract view: not published at census-tract level. How the tract view works.

Population · Demographics · Census ACS 5-year survey through 2024 survey · No better direction

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Tract view: change map on city pages. How the tract view works.

Children's share of the population · Demographics · Census ACS 5-year survey through 2024 survey · No better direction
Computed by City+: (Count_Person_Upto18Years) ÷ (Count_Person) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them. Share of all residents under 18.

Tract view: change map on city pages. How the tract view works.

Adult obesity · Health · CDC PLACES through 2022 modeled · Lower is better

Model-based small-area estimate projected from the national BRFSS survey. By design it moves slowly and carries no usable trend signal, so City+ shows the level only and makes no trend or improver claims.

Modeled estimate, not a direct measurement.

Tract view: level map only (modeled estimate, no change claims). How the tract view works.

Housing cost-burdened households · Housing · Census ACS 5-year survey (tables B25070 + B25091) through 2024 survey · Lower is better

Share of households spending 30% or more of income on housing, among households whose burden could be computed. Published ACS margins of error ship with every estimate.

The 30% threshold is HUD's standard affordability line; the measure counts actual payments, so sitting tenants with old leases and owners without mortgages are represented, unlike asking-rent indexes.

Tract view: change map on city pages. How the tract view works.

Households without a vehicle · Housing · Census ACS 5-year survey (table B08201) through 2024 survey · Lower is better

Published ACS margins of error ship with every estimate.

In transit-rich cities a low-car share can reflect choice rather than hardship; read alongside transit access, not alone.

Tract view: change map on city pages. How the tract view works.

Income inequality (Gini index) · Economy · Census ACS 5-year survey (table B19083) through 2024 survey · Lower is better

Gini index of household income, 0 (everyone equal) to 1 (one household has everything). Published ACS margins of error ship with every estimate.

A citywide summary: it says how spread out incomes are, not who is poor. Read with the income and poverty cards.

Tract view: not published at census-tract level. How the tract view works.

Households receiving SNAP · Economy · Census ACS 5-year survey through 2023 survey · Lower is better
Computed by City+: (Count_Household_WithFoodStampsInThePast12Months) ÷ (Count_Household) × 100

Published ACS margins for this indicator are computed from the source-table cell margins and stored as a local twin variable (moe_statvar); trend claims are gated by them.

Receipt measures hardship AND program reach at once: a falling share can mean fewer struggling households or worse enrollment. Read with the poverty cards.

Tract view: change map on city pages. How the tract view works.

Children in single-parent families · Demographics · Census ACS 5-year survey (table B09002) through 2024 survey · No better direction

Share of own children under 18 living with an unmarried householder. Published ACS margins of error ship with every estimate.

Own children of the householder; children living with grandparents or other relatives are outside this universe.

Tract view: change map on city pages. How the tract view works.

Teens not in school and not working · Education · Census ACS 5-year survey (table B14005) through 2024 survey · Lower is better

Share of 16-19 year olds neither enrolled in school nor employed. A small universe, so margins are wider than for all-ages measures; published ACS margins of error ship with every estimate.

Ages 16-19 only; the broader 18-24 "opportunity youth" definition runs higher.

Tract view: change map on city pages. How the tract view works.

Children without health insurance · Health · Census ACS 5-year survey (table B27001) through 2024 survey · Lower is better

Share of children under 19 with no health insurance coverage. Published ACS margins of error ship with every estimate.

Tract view: change map on city pages. How the tract view works.

Young children with all parents in the labor force · Demographics · Census ACS 5-year survey (table B23008) through 2024 survey · No better direction

Share of children under 6 whose resident parents are all in the labor force - the young children who need care from someone other than a stay-at-home parent. Published ACS margins of error ship with every estimate.

Tract view: change map on city pages. How the tract view works.

How peer cities are chosen

Comparison against a national average carries little information for local decision-making, so City+ always compares against a named peer set. The comparison frame is chosen per indicator card: every card carries "Compared against" chips (similar-size cities is the default everywhere), a chip switches that card alone, and the card's Compare table lists every member of the active set.

Because each peer set contains different cities, the same value may rank differently under each. The active peer set is therefore displayed as part of every claim.

Level and pace of change

Every metric is described on two independent axes, reported separately because neither substitutes for the other:

The two axes answer different questions: housing costs may be low today yet rising quickly (favorable level, unfavorable pace), and crime may be low today yet worsening (favorable level, unfavorable pace). Each card and table reports both.

Pace is measured relative to each city's own starting value, not in raw units. A $50 rent increase on a $1,000 rent is faster growth than $60 on a $3,000 rent, and the ranking reflects that.

Both axes sit side by side in every comparison table; the shared layout is described under one table.

The three headline groups: Bright spots, What needs attention, Big shifts

The three groups at the top of every city page are a triage. Each metric is assigned to at most one group by a single significance-aware rule.

Within each group, cards are ordered by the size of the relative percent change (the colored figure under each card's value). Only changes the source can certify compete in that ordering, under the same tests as the tables: survey changes must clear the published margins, and incident-count changes must clear the Poisson chance test. An uncertified change shows in gray and its card sits at the end of the row, present for peer standing, not movement.

Each headline card carries two quiet chips just above its Learn more link: the metric's own claim (hover for the one-sentence finding behind it) and its standing across all three peer groups (hover for the per-group readings; leading/trailing means above the 60th or below the 40th polarity-aligned percentile, and any trailing group decides the label). The chips stay muted; on a headline card the colored element is the relative change under the value, green or red only when the change is certified. The claim chip speaks in the metric's own direction of movement: a falling crime rate reads "Dropping fast", never "gaining"; a rising income reads "Gaining fast"; a crime rate moving up reads "Rising, the wrong way". The chip's verb follows the trend badge's own direction call, so it never claims a metric is dropping when it is merely worsening slower than its peers. The card's trend badge ("Verified improver", "Worsening") answers a different question (see what the badges mean) and stays on the full indicator card the click lands on.

National leaders and strong performers (the stars)

A star on a card marks standing against the whole country, in two tiers: a gold star (★) names a national leader, at or above the 90th percentile of the city's national size cohort on that indicator in the metric's better direction; a silver star (★) names a strong performer, at or above the 80th. The comparison base is deliberately national rather than the card's peer lens: "2nd of 15 selected peers" is not a national claim, so the stars are computed across every roster city in the same population tier that reports the indicator (the hover names the exact cohort and count), and no star is awarded from a cohort smaller than 30 cities. The largest two tiers are pooled into one large-cities cohort (250k and up) so the biggest cities are honored against a meaningful base. For most metrics the stars reflect the current value, an enduring standing. Crime metrics are the exception: City+ does not rank cities by crime levels (see crime data cautions), so their stars reflect the 12-month change: the fastest-improving slice of the national cohort at the same two thresholds, and never a worsening one. Stars mark standing or momentum against the nation; they are not effectiveness verdicts, and the Verified improver credential remains the earned-trajectory honor. Every star is listed on the star board.

Big shifts is a separate strip for metrics with no declared better direction, such as prices and population. These are never scored as good or bad. A metric appears on a certified rise or fall (beyond the survey margin, for survey series), or when today's value sits at least 25 percentile points from the peer median; the strip orders by relative percent change like the others, gap-only cards last, so a large change is surfaced without being characterized as progress or decline.

How trends are measured: two estimators, chosen by the data

Trends cover each source's most recent 5-year span of published values, and every sentence names the actual years, because "the last 5 years" would imply recency to today that a lagging source cannot deliver. (A longer 10-year view appears where the source reaches back that far.) Which estimator summarizes that window depends on what kind of series the source publishes, and every metric card carries a small "trend:" tag in its footer saying which one is in use:

Sub-city views follow the same rule as their card. Survey tract maps color by each tract's change between the same two survey periods as the card, judged against the tract's own published margins; tracts whose change is within the margin keep their color (spatial pattern survives noise better than any single tract) but are starred and say so on hover. Demographic subgroups use the same two periods; their margins are wide and unpublished at that grain, so their ordering is soft and the panel says so. Administrative sub-city views keep the robust fit.

MetricTrend basisWhy
Household income non-overlapping survey periods 5-year pooled survey; change tested against published margins
Unemployment robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Poverty non-overlapping survey periods 5-year pooled survey; change tested against published margins
Child poverty non-overlapping survey periods 5-year pooled survey; change tested against published margins
Broadband non-overlapping survey periods 5-year pooled survey; change tested against published margins
College attainment non-overlapping survey periods 5-year pooled survey; change tested against published margins
Preschool enrollment non-overlapping survey periods 5-year pooled survey; change tested against published margins
Uninsured non-overlapping survey periods 5-year pooled survey; change tested against published margins
Violent crime robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Property crime robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Homicide robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Vehicle theft robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Home value robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Starter homes robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Homeownership non-overlapping survey periods 5-year pooled survey; change tested against published margins
Rent robust fit (Theil-Sen) single-period administrative data with genuine one-year artifacts
Population non-overlapping survey periods 5-year pooled survey; change tested against published margins
Children non-overlapping survey periods 5-year pooled survey; change tested against published margins
Cost burden non-overlapping survey periods 5-year pooled survey; change tested against published margins
No vehicle non-overlapping survey periods 5-year pooled survey; change tested against published margins
Inequality non-overlapping survey periods 5-year pooled survey; change tested against published margins
SNAP non-overlapping survey periods 5-year pooled survey; change tested against published margins
Single-parent non-overlapping survey periods 5-year pooled survey; change tested against published margins
Disconnected youth non-overlapping survey periods 5-year pooled survey; change tested against published margins
Child uninsured non-overlapping survey periods 5-year pooled survey; change tested against published margins
Working parents non-overlapping survey periods 5-year pooled survey; change tested against published margins

If a source contains a known break (a methodology change, a missing survey year), the window is truncated so that it never spans the break: a shorter window that respects the break is preferred to a longer one fitted across it.

The three checks behind every improvement claim

City+ never labels a city an improver solely because a number moved; a single-period change can reflect chance, noise, or a reporting artifact. Before a trend is described as "sustained improvement, worth investigating", it must pass all three of the following checks:

A trend that moves the right way but fails a check is labeled honestly on the card and treated as a raw signal, not a finding. Every constant here is a named tunable in the thresholds table.

What the badges mean

The badge on each card answers one question: can this city's own trend be trusted? It judges the trend itself, not the pace percentile; a city can be changing faster than 94% of its peers while its own trend still fails the checks. Survey and administrative metrics carry different badge vocabularies because different tests back them.

Recent readings vs trends

Crime rates and housing indexes go further: because each trailing-12-month or index value is already a full annual reading, their yearly series anchor to the freshest month still covered by at least 90% of reporting cities (the same month for everyone, so peers stay aligned), rather than to December. Their trends therefore run to within a few months of today, and each card's source line names the exact month it runs through.

How the crime rates are computed. Each month's rate is the sum of incident counts over the 12 months ending at that month, divided by the place's population, per 100,000 residents. The source publishes counts; the per-capita division is performed by DataWorks Commons using the Census Bureau's annual population estimates, interpolated monthly between adjacent estimates (which are July 1 figures) so the denominator changes smoothly rather than stepping at each new year (the standard convention for monthly demographic rates). A growing city's rate therefore reflects both its incident trend and its population growth. For the most recent months, where the Census has not yet published an estimate, the newest available estimate is carried forward, and those months' rates are restated when the next estimate publishes (the revision is typically within one to two percent). The handful of reporting agencies that do not correspond to a Census place use the population figure the source publishes for the agency. The violent and property crime totals are computed from their component offenses under the FBI's definitions (violent: homicide, rape, robbery, aggravated assault; property: burglary, larceny-theft, motor vehicle theft), and a month's total is published only when every component is reported. Cities whose agencies report some but not all components carry no total for that month; their individual offense series still appear. This is why a few large cities show component crime series but no violent or property crime rate.

Why totals are recomputed rather than read from the source. The source file carries its own violent and property crime columns, but those columns hold the sum of whichever components each agency reports: for an agency that reports only homicides, the published "violent crime" figure is its homicide count, roughly one percent of a true violent crime total. This was verified against every agency-month in the source: wherever components are missing, the published total equals the sum of the components present. A partial sum labeled as a total would understate crime most for the cities reporting least, so the totals shown here are always rebuilt from components under the all-components rule above.

Distinguishing a true zero from non-reporting. The source writes a literal 0, not a blank, for some offenses an agency does not report at all, and 0 is also a legitimate value: a small city can genuinely record no homicides in a year. The two are separated statistically, per offense, with no city-specific exceptions. For each offense, the lowest-reporting genuine agencies set a floor: when even the 1st percentile of reporting agencies averages well above zero for that offense (at least 10% of the median agency's level), an identically-zero series is treated as non-reporting and withheld, because no real city plausibly sits at zero. Property offenses clear that floor, so an all-zero property series is read as non-reporting; homicide does not, so cities with genuine zero-homicide years keep their series. Separately, a series that runs 12 or more consecutive zeros after a nonzero history is truncated at the point reporting stopped, the signature of an agency leaving the sample rather than of crime ceasing. These screens are inferences from the shape of the data, not certainties, and the thresholds involved (the 10% floor, the 12-month run) are documented here precisely because they are judgment calls.

Count toplines. Where a metric declares a count topline (currently homicides), the card's headline number, sparkline, and most-recent-reading line carry the trailing-12-month count itself, the figure officials and residents actually use, with the per-100,000 rate stated directly beside it. Peer tables and every cross-city comparison use the rate, because counts are not comparable across cities of different sizes. The count and the rate are the same underlying incidents; only the denominator differs.

Crime data cautions

The crime series carry limitations their sources are explicit about, and readers of the peer comparisons should hold them in mind:

For these metrics the card leads with the most recent 12 months, the horizon most relevant to operational management, and the badge follows that recent direction ("Improving recently", "Worsening recently"). The multi-year window stays on the card as the labeled context line, and "Verified improver" is still earned only by the multi-year checks plus a recent direction that agrees; twelve good months alone never qualify. Because the underlying values are already 12-month sums, this recent reading is a real trend, not seasonal noise.

Peer tables for these metrics show the short horizon only: each city's latest reading, its 12-month change with a significance dot where the data supports one (see one table), and that change's rank. Multi-year columns are omitted because these metrics are managed on a monthly horizon; the multi-year story stays in the card text and the full History sparkline.

For monthly sources (unemployment, crime, housing), cards show the most recent monthly reading next to the same month a year earlier, and annual-survey peer tables carry each city's latest monthly reading and its 12-month change where a monthly companion series exists. City-level monthly data is not seasonally adjusted, so a 5-month "trend" would mostly measure summer against winter; the year-over-year pairing is the honest short-horizon comparison, and the multi-year trend remains the basis for every improvement claim.

Known shocks are registered per metric and trends never span them. Unemployment is the clearest case: its window starts after the 2020-2021 pandemic spike and rebound, so recovery from the shock is never scored as improvement.

"Peers worth a call"

For each metric with a declared better direction, City+ surveys all cities in the same size group, retains only those whose improvement passed all three checks, and groups the survivors by starting position: bottom, middle, or top third of the peer group.

The grouping guards against mean reversion: the places that "improve" most are often simply the places that started worst, drifting back toward typical values. A city therefore sees only referral candidates that started in a comparable position, and every candidate's starting position is disclosed, so a city that improved from a poor baseline is never mistaken for one that improved from a strong one.

For metrics with a monthly pulse (the crime rates, unemployment), passing the multi-year checks is not enough on its own: a candidate whose own most recent 12 months moved against the better direction is dropped, because a recommendation based on an improvement that has since reversed would be stale. The rows for these metrics lead with each candidate's last-12-months movement and are ordered by it; the multi-year rate stays on the row as the sustained credential.

An empty list is itself a finding. If no city of that size and starting position passed all three checks, the card carries no referral tab. The list is never padded, and metrics with no declared better direction never carry one (see claims City+ does not make).

Referral candidates are places where something genuinely changed, worth a phone call to find out what. They are never presented as evidence that a policy worked: establishing causation requires evaluation-grade study designs and is outside the scope of these methods.

Claims City+ does not make

Where is this changing: the tract map

On every city page, metrics with census-tract data carry a "Where is this changing?" panel: the city's tracts drawn over a street basemap, each colored by its change over the same two survey periods as the card above it, relative to the tract's own starting level. Green means the tract moved in the metric's better direction and red the other way (blue and orange for metrics with no better direction); deeper color means a larger move. Hovering a tract shows its numbers, its margin verdict, and its full history; clicking it opens that tract in the Explorer. A companion table beside the map ranks tracts on the same skeleton as the peer tables (Change rank, Latest, Change, Sig.), listing the twenty improving fastest and the twenty moving the wrong way fastest. Hovering a table row highlights that tract on the map, and hovering a tract highlights its row. Tract boundaries are Census TIGER/Line 2024, simplified for display.

One state needs a stitch: Connecticut renumbered every census tract in 2022 when it replaced counties with planning regions, without changing any boundary. The source data keys the years before the change under the old tract id and the years after under the new one, so for Connecticut cities each tract's two halves are rejoined into one series (the id pairing is validated geometrically and published in the artifact as tract_id_aliases.tsv). No values are altered or interpolated.

Rules governing the map:

Not yet at tract level: unemployment (BLS publishes no tract series), the crime rates (the Real-Time Crime Index is agency-level; Baltimore's own police data does reach tract level in this Commons and is the planned next step), and the Zillow housing metrics. The obesity card links to a tract map of levels but makes no change claims (modeled estimates).

State and national reference values

Three surfaces carry quiet reference values: the peer tables pin a row for the city's state and one for the United States (marked "ref"), the tract panel states both latest levels under its map, the tract popup's "by the numbers" table adds state and US columns, and each demographic group in a breakdown panel shows the same group's statewide and national value in small type. All of them are context, not competitors: a reference never takes a rank, never joins a percentile pool, never sorts with the peer rows, and never changes a verdict, badge, or sentence. They exist so a number always has a yardstick, a city can lead all its peers and still trail its own state, and both facts should be visible at once.

Where they come from: for survey and BLS metrics, the same variable at state and national level from the same source family; for Zillow housing metrics, Zillow's own state and national series; and their trend cells use the identical estimator and display grammar as the peer rows. Two honest exceptions. Crime: the Real-Time Crime Index publishes no state series, so crime metrics carry no state reference, and their "U.S. (RTCI sample)" row is RTCI's own full-sample aggregate, the average across its national reporting sample of agencies, which is the source's national benchmark but not a census of the country, and skews toward the kinds of agencies that report. Rent: the rent index is published nationally but not by state, so rent metrics carry a US reference only. A reference can also lag the cities by one release; its cell always shows its own month.

One table: level and change together

Every comparison table, peer cities, tracts, and demographic groups, uses the same skeleton so a reader never has to reorient: Latest (each place's newest value, its period named), Today's rank (current values ordered best-first in the metric's better direction), Change (each place's change over its own window: two non-overlapping survey periods, or the last 12 months for monthly sources), Sig. (a dot, below), Change rank (every measured change ranked, largest improvement first), and History. Tables open sorted by Change rank. A star on a change means that place's two survey periods share one year; direction is trustworthy, size approximate.

The Sig. dot is the significance verdict. Filled green: a real improvement. Filled red: a real worsening. Hollow: within the margin, so ranks among hollow-dot rows are ordering values inside their margins. What the dot tests depends on what the source publishes: survey metrics test against published margins of error (90% confidence); the crime rates test the 12-month change in implied incident counts (rate × population / 100k) against chance fluctuation: z = (n₂ - n₁) / √(n₁ + n₂), filled when |z| > 1.645 (the same 90% level). Unemployment and the housing indexes carry no dot: their sources publish no error model, and constructing one would introduce assumptions the sources do not support.

The tract tables and group breakdowns use the same columns (see the tract view and breakdowns).

Break down by group: race, age, sex

Metrics drawn from the Census American Community Survey carry a "Break down by group" panel: the same indicator computed separately for the demographic groups the source table publishes, each with its current value, a proportional bar, an estimate of the people behind the number, its full history, and its change between the same two survey periods as the card above it. A gap line names the current highest and lowest groups, the size of the difference between them, and whether that pair's difference narrowed, widened, or held roughly steady between the two periods; the pair is held fixed so the sentence never mixes different groups across years.

Today's rank and Change rank place each group against the same group across the peer set shown on the page (Black poverty here against Black poverty in the peer cities, never against a different group), colored when the city sits in the best or worst third; a peer whose group is too small to report reliably sits out. Est. people (or households) is the count behind the rate: the survey's numerator (people below poverty, uninsured people, owner households) rounded to the nearest 1,000, 100, or 10 by size, or for median income the number of households in the group. Within the list, the group faring worst carries a red bar and the best a green one.

Rules governing the breakdowns:

The "What's behind this?" analysis

Each indicator card carries a "What's behind this?" button that opens a guided analysis of that card. The question itself is generated deterministically from the card's certified state (a certified trend, a certified reversal, or an early direction signal), and the interface accepts no free-form input.

The analysis is composed from evidence computed server-side before any language model is involved: the card's own trend verdict, a decomposition across census tracts and demographic groups where those data exist, the pattern across all three peer sets, and, where the metric registry declares them, hypothesis checks evaluated against held data over the card's own window (for example, income-distribution measures behind the inequality card). All figures, changes, and percentages are precomputed; the language model narrates the computed evidence and may name general, well-documented mechanisms from urban and economic research as possibilities, but it is prevented from generating specific citations, statistics, or study references, and its output is checked so that any figure not present in the retrieved evidence is removed. Each evidence block links to its underlying series, names its source, and states the window it covers. Nothing is retrieved from the open web, and causal claims are refused for the same reason the referral list refuses them. These analyses use the site's standard question allowance.

The exact thresholds in force

All of the above runs on named, published thresholds. Changing any of them is a visible, versioned change (current build: 2026-08-17.1), and the machine-readable registry behind this page is public.

SettingValueMeaning
window_years6Annual data points in the trend window (5-year span)
min_points4Minimum data points required to fit a trend; below this, no claim is made
noise_k1.5How many times larger than the estimated year-to-year noise a change must be
moe_k1.0Administrative metrics with published margins: change must exceed this many margins
sustain_frac0.7Share of yearly moves that must agree with the trend direction
effect_iqr_frac0.25Minimum change as a share of the spread between peers
effect_rel_floor0.05Fallback minimum change as a share of the starting value
ladder_gap5Survey metrics: end labels this many years apart share zero collection years
ladder_overlap_max1Shared survey years allowed (and starred) when history is a release short
recent_k3Consecutive same-direction releases needed for an early-signal claim
recent_moe_frac1.0...whose cumulative size must reach this fraction of the newest margin
cv_flag0.3Endpoint coefficient of variation above this flags a low-reliability pace