Methodology
How the Safety Index works
Last updated: 2026-05-23
CommunitySafe translates two public datasets into one easy-to-read 0–100 number using arithmetic, not predictions. This page is the canonical source — if any in-app caption conflicts with the description here, the in-app caption is wrong and should be fixed.
Data sources
- City open-data portals. Each of CommunitySafe's 30 supported cities publishes police-incident records through an official open-data feed (SDPD NIBRS, LAPD Crime Data, SFPD Incident Reports, Chicago CPD, NYPD Complaint Data, Seattle SPD, Boston BPD, DC MPD, Philadelphia PPD, Denver, Detroit, Oakland, Cincinnati, New Orleans, Baton Rouge, Cambridge, Dallas, Charlotte, Nashville, Minneapolis, Cleveland, Milwaukee, Las Vegas, Boise, Buffalo, Tucson, Kansas City, Saint Paul, Pittsburgh, Phoenix). We pull the raw records via the same public API the city itself documents.
- FBI Crime Data Explorer 2025. The benchmark we compare per-100,000 rates against — Violent (Persons): 364, Property: 1,896. Source: cde.ucr.cjis.gov. The FBI publishes a new annual release each October; we update the constant on each release.
- US Census Vintage 2023 population estimates. Used as the denominator for the per-100,000 rate calculation. Source: census.gov.
How the Safety Index is computed
- Count the recent reports. We pull every police-incident record the city has published in the cached window (typically 30–180 days depending on the adapter). Records are split into the two FBI categories with a published national rate: Violent (Persons) and Property. Society / public-order offenses are tracked internally but excluded from the score because the FBI doesn't publish a national rate for them.
- Estimate per-area population. For citywide scores, the denominator is the city's actual US Census Vintage 2023 population. For per-neighborhood scores, the denominator is approximated two ways:
- Polygon-area weighting (preferred): per-area population ≈ cityPop × (polygonKm² / cityTotalKm²). Uses the city's official neighborhood polygon files. Assumes roughly uniform density across the city — close enough for relative ranking but not census-grade.
- Peer-share fallback: when polygon data isn't available, we scale the city's per-100k rate by the area's share of citywide reports vs. the average per-neighborhood share. A neighborhood reporting the average share gets the city's rate; one reporting 2× the average share gets 2× the rate.
- Annualize and express as a per-100,000 rate. (reports × 365 ÷ windowDays ÷ population) × 100,000. Same denominator and unit the FBI uses for its city-vs-national comparisons.
- Compare to the nearest official baseline. The per-neighborhood grade compares the area's rate to its OWN CITY's rate, not the FBI national average. Cities concentrate reportable activity, and neighborhoods concentrate it further — comparing a tightly-bounded urban neighborhood directly to a national average (which is itself a blend of rural, suburban, and urban) systematically inflates the “above national” appearance. The city baseline is the nearest official comparison we can compute consistently across every supported city. The FBI national rate is kept in the response as a secondary reference so users can see where each city sits relative to national. For the citywide score itself, the FBI national rate IS the right comparison anchor and is used as primary.
Calls-for-service calibration
Three cities — Cleveland, New Orleans, and Las Vegas — publish calls-for-service (CFS) feeds rather than closed NIBRS incident reports. CFS counts each dispatched call separately, so it is structurally 2–3× inflated relative to NIBRS:
- One real crime often generates multiple dispatches (initial 911 call, follow-up, supplemental).
- Many dispatches are unfounded after investigation (false alarms, mistaken reports).
- Some categories include non-crime calls (welfare checks, business checks, traffic complaints) that we filter, but the noise floor remains higher than NIBRS.
To keep these three cities comparable to NIBRS-based cities, the per-100k rate is multiplied by a per-city calibration factor before grading:
- Cleveland: × 0.35
- New Orleans: × 0.40
- Las Vegas: × 0.50
Factors reflect empirical CFS-to-NIBRS ratios reported in criminology literature for general-purpose dispatch feeds. The score card on each of these cities renders an explicit “CFS-calibrated × scale” badge so the adjustment is transparent to users. NIBRS-based cities are passed through with a calibration of 1.0 (no scaling).
What the score IS
- A descriptive summary of historical police-report volume per resident.
- Comparable to the FBI's published per-100,000 national rate.
- Reproducible: every number is derivable from the cited sources with the formula above.
What the score IS NOT
- Not a prediction of future risk.
- Not a measure of actual crime — only of reported and published incidents.
- Not a substitute for professional safety advice, emergency services, or local knowledge.
- Not a basis for housing, lending, insurance, or hiring decisions. Reports cluster in historically disadvantaged areas; using the score for those purposes risks reproducing Fair Housing Act violations.
- Not a characterization of neighborhoods as “dangerous” or “safe” — we report on incident volume, not on the character of an area or its residents.
Known limitations
- Publishing lag. City feeds can take 7–30 days to publish a report. The Safety Index reflects what's been published, not what's recent.
- Reporting bias. Areas with higher trust in police report more. Areas with lower trust under-report. The score reflects the reporting environment as much as the underlying activity.
- Per-neighborhood population is approximate. Polygon-area weighting assumes uniform density; that's false in cities with both dense downtowns and sprawling suburbs. We display the approximation alongside the score so users can judge its plausibility.
- NIBRS classification varies by city. Most cities follow the FBI's canonical Persons / Property / Society split; a few (notably Chicago) deviate (e.g., classifying Robbery as Persons rather than the FBI canonical Property). We honor each city's own classification; comparisons across cities should factor this in.
- Society / public-order excluded. The FBI doesn't publish a national rate for Society offenses, so they can't enter the score. They're visible in other tabs (Crime Map, Trend Feed) for context.
Demographic data exclusion
CommunitySafe explicitly does NOT collect, display, or analyze race, ethnicity, religion, age, gender, or sexual-orientation data from any source. Every adapter explicitly enumerates allowed fields before querying the upstream feed; demographic columns are filtered at the adapter layer regardless of what the city publishes. This is enforced in code; see src/server/services/crime-data/adapters/ for the per-adapter field allowlists.
Individual identification
CommunitySafe aggregates data to the neighborhood level only. Individual people are never identified, named, or tracked. Crime-Map drill-down dots show offense type and the block (street-level) where a report was published — they do not surface victim or suspect names. CommunitySafe posts are anonymous and run through a pre-vetter that blocks names, addresses below the block level, and license plates.