About VisZero
An open-source tool for exploring traffic crash data from U.S. city open data portals.
What is VisZero?
VisZero is a stateless web application that queries official municipal open data portals in real time and presents traffic crash records as interactive heat maps and time-series charts. There is no proprietary database — every visualization is generated fresh from the source data on each request.
The project takes its name from Vision Zero, the road safety framework adopted by cities worldwide with the goal of eliminating all traffic fatalities and serious injuries. By making crash data easier to explore, VisZero aims to support researchers, journalists, planners, and advocates working toward that goal.
Data Sources
All data is sourced from official city open data portals via the Socrata Open Data API.
| Dashboard | Source Dataset | Publisher |
|---|---|---|
| Chicago Traffic Fatalities | Traffic Crashes – People | City of Chicago / CDOT |
| Chicago Traffic Crashes | Traffic Crashes – Crashes | City of Chicago / CDOT |
Data is updated by the source agencies on an ongoing basis. VisZero does not cache or store data — results always reflect the latest available records.
How It Works
- You select filters (victim types, cause groups, date range) via the form on each dashboard page.
- VisZero constructs a SoQL WHERE clause and sends a live query to the Chicago Open Data Portal.
- The JSON response is converted to GeoJSON for the Mapbox heat map and aggregated by date for the Chart.js time-series chart.
- Results are rendered server-side and returned as a complete HTML page — no client-side data fetching required.
Technology
- Server: Node.js / Express, EJS templates
- Maps: Mapbox GL JS v2
- Charts: D3.js v7
- Data API: Socrata Open Data API via Axios
- Styling: Bootstrap 5
Limitations
The Socrata API returns a maximum of 1,000 records per request by default. For date ranges with high crash volumes, results may be truncated. Applying tighter filters (shorter date ranges or fewer cause groups) will return more complete results.
Crash location data depends on geocoding by the source agency. Records with missing or imprecise coordinates will not appear on the map but are still counted in charts.