Purpose
The dashboard aligns three recorded public-safety measures—calls, arrests, and offenses—at the ZIP-code and calendar-year level. Its purpose is to make geographic patterns easier to inspect and to help residents, researchers, journalists, and policymakers identify questions that deserve deeper analysis.
It is an independent analytical resource produced within the National Data System ecosystem. It is not an official San Antonio Police Department or City of San Antonio publication.
Unit of analysis
Each record represents one ZIP code in one year. The public dataset contains 298 ZIP-year records covering 2023, 2024, 2025, and a partial 2026 period. ZIP codes with small or unusual counts remain in the full table so users can see the supplied records, but ranking controls include a minimum-call floor to reduce misleading comparisons.
2025 source-record audit
The source audit distinguishes raw CSV rows, unique Report_ID values, and the rows represented in the ZIP-level analytical table. These are different units and should not be presented as interchangeable counts.
Open the machine-readable 2025 audit JSON.
Measures and formulas
Arrest-to-call rate
The dashboard displays this as arrests per 100 calls. It does not mean that every call should or could result in an arrest.
Offense-to-call rate
The dashboard displays this as offenses per 100 calls. Calls can include service activity that is not recorded as an offense.
Arrest-to-offense rate
The dashboard displays this as arrests per 100 offenses. This is an aggregate alignment ratio—not a case-clearance rate. It does not establish that a particular arrest resulted from a particular offense.
Analytical outcome profiles
| Profile | Rule | Meaning |
|---|---|---|
| Calls without offenses | Total offenses = 0 | The row contains calls but no aligned recorded offenses. |
| Lower arrest-to-offense | Arrest-to-offense ratio < 0.25 and offenses > 0 | Fewer than 25 arrests per 100 recorded offenses in the aligned ZIP-year totals. |
| Higher arrest-to-offense | Arrest-to-offense ratio > 0.75 | More than 75 arrests per 100 recorded offenses in the aligned ZIP-year totals. |
| Standard range | All other rows | The ratio falls between the two analytical thresholds. |
These labels are analytical categories, not official SAPD classifications. They do not label a ZIP code as safe, unsafe, effective, ineffective, over-policed, or under-policed.
Year treatment
2025 is the latest complete calendar year. It is the default for overview cards and rankings. The 2026 records are retained because they provide current directional context, but they are clearly marked as partial and should not be compared to full-year totals without adjusting for elapsed time and data completeness.
Ranking floor
The default ranking floor is 4,000 calls. Users may change it to 10,000, 20,000, or no minimum. The floor applies only to ranking panels. It does not remove records from the full downloadable dataset.
Small denominators can create extreme ratios. For example, one additional arrest or offense can sharply change a ZIP-year ratio when the underlying totals are very small. Those records are preserved for transparency but should be interpreted with caution.
Key limitations
- The dataset does not link individual calls, arrests, and offenses to one another.
- An arrest can occur in a different ZIP or year from the associated incident or investigation.
- Some offenses may not have an identifiable suspect, and some investigations continue beyond the calendar year.
- Calls may involve service activity that does not require an offense report or arrest.
- The dashboard does not measure 911 call handling, dispatch time, arrival time, case clearance, conviction, officer conduct, staffing adequacy, or neighborhood safety.
- ZIP boundaries are postal geographies and do not perfectly represent neighborhoods, patrol areas, council districts, or police service areas.
Recommended companion data
Strong conclusions require additional context, including offense type and severity, call priority, dispatch and arrival times, case-clearance status, staffing and patrol deployment, demographic and population denominators, land use, daytime population, transportation corridors, and changes in reporting practices.
Data files and reproducibility
The deployable package includes the full CSV, a JSON representation used by the browser, a summary file, and a machine-readable manifest containing the schema, row count, year coverage, classification rules, and SHA-256 checksum. A PowerShell builder is also included so the site can be regenerated from the authoritative local CSV inside the National Data System environment.
Editorial standard
This dashboard treats rankings as prompts for accountability and further investigation—not as final judgments. Language is intentionally framed around recorded counts, aligned ratios, and analytical profiles to reduce the risk of implying causation that the dataset cannot establish.