An interactive exploration of pedestrian safety across 5,500 street segments in downtown San Diego
Brian Sun, Colin Tran, Maxime Chung, Christian Kimayong | DSC 106, Spring 2026
67% of women say walking alone at night is their greatest safety fear. They already scan for unlit streets and avoid quiet blocks, but navigation apps like Google Maps ignore safety entirely and optimize for speed.
This map shows every walkable street in downtown San Diego, a mid-size coastal city in the US. We scored all of them for safety. The data says one route choice can be 18 points safer than another. Scroll to see why.
We scored each of the 5,500 street segments using three public datasets: crime reports, streetlight locations, and walkability metrics. The formula on the map shows how they combine.
Higher score = safer street. Orange = dangerous, blue = safe.
Walkability measures things like block length, nearby shops, and transit stops. This entire downtown scores high, so the map is almost entirely blue. If walkability were all that mattered, every route would be equally safe.
Notice the map: nearly uniform color. This layer does not explain the safety gap.
Each small dot is a real streetlight. The main corridors on the left side of the map are well-lit, but the right side has gaps. Some variation appears, but not enough to explain an 18-point safety difference.
Streetlights thin out toward the east. But lighting alone is not the answer.
Each orange dot is a real crime incident from police records. Watch the map fracture from uniform blue into sharp oranges and blues. Streets that looked identical before now split apart. This single variable drives the entire safety gap.
The left side stays blue (safe). The center turns orange (dangerous).
We picked five routes that represent trips people take in any downtown: commuting to transit, walking to an event, exploring on foot, heading to a park. They cross different neighborhoods and different safety zones.
Hover any colored line to see its score. Labels show each route's safety rating out of 100.
Safety is not static. The nightlife district (center of the map) gets safer at night because crowds fill the streets. The residential area to the east goes the other direction. Toggle to see the colors shift.
The 18-point gap between the safest and least-safe route is driven entirely by crime density, not lighting or street design. And because crime patterns shift with time of day, the safest route at 2 PM is not the safest at 2 AM.
A static map cannot show this. You had to watch the layers stack, see crime fracture the uniform blue, then drag the time slider to feel how safety redistributes after dark. That progression is the point: pedestrian safety is not one number, and the route you pick is a safety decision.
Five common trip types. Each crosses different safety zones.
Overall safety score with component breakdown | Source: SDPD NIBRS, EPA SLD, City of SD
Route choice is a safety decision. Crime density is the single variable that explains nearly all of the 18-point gap between downtown routes. The progressive layer reveal makes that dominance feel inevitable, and the time slider lets you watch safety redistribute after dark. Interaction is not decoration here. It is how the argument works.
Three independent teams have tried to build this tool: SafeWalk AI (Bryant University) uses crime data only, Coolight (University of Toronto) uses lighting only, and Ur Next Route (University of Nevada) uses lighting and distance. None combine all three layers. This visualization does.
We built a scrollytelling visualization that scores every street segment in downtown San Diego for pedestrian safety and maps five walking routes between real destinations. The data comes from four public sources: 46,000 crime incidents (SDPD NIBRS 2020-2026), 55,506 streetlight locations (City of SD inventory), the road network (OpenStreetMap via OSMnx), and walkability scores (EPA Smart Location Database).
Each of the 5,500 street segments gets a composite safety score that weights crime density (50%), walkability (25%), and lighting (25%). The weights shift at night, giving lighting 30% and crime 45%. We computed scores using kernel density estimation at multiple distance thresholds. The graph has 7,053 nodes and supports real-time pathfinding in the browser.
The scrollytelling narrative introduces one data layer at a time. The map transitions are animated: streetlights cascade on, crime causes the map to fracture from blue into reds and blues, and toggling to night mode darkens the entire atmosphere with glowing streetlights and pulsing crime dots. Each scene has map annotations that name the neighborhood and explain what the score means.
The explore section lets viewers select routes, drag a time slider from 6 AM to midnight (smoothly interpolating edge colors), hover any street segment for its score, and zoom or pan the map. A Navigate tab computes three routing profiles (Fastest, Balanced, Extra Caution) using Dijkstra's algorithm with a composite cost function. The bar chart follows SWD principles: gray default, amber highlight, direct labels, and a score decomposition breakdown.
The hardest part was making the time-of-day dimension feel real instead of binary. A simple Day/Night toggle does not convey how safety changes gradually. We solved this with a draggable time slider that smoothly interpolates all visual properties: edge colors blend between day and night scores, the background transitions from light to dark, streetlights grow brighter, and crime dots pulse. Insight annotations appear on the map as you cross the evening threshold.
Another challenge was making 5,500 street edges interactive without overwhelming the viewer. We used scrollytelling to introduce layers progressively and added hover tooltips that only activate after the relevant layer is introduced. The explore section adds zoom, pan, and per-segment tooltips for full exploration.
Performance was a real concern. Rendering 5,500 edges plus 1,000 streetlights plus 800 crime dots in SVG, with smooth transitions on every slider drag, can lag on slower machines. We optimized by removing expensive SVG filters (blur), using CSS animations instead of JS-driven ones for pulsing dots, and applying clipPaths for the coastline rather than filtering data points.
The cost function for the three routing profiles weights edge length by safety score, allowing users to trade distance for safety. We structured the score decomposition to show how crime, lighting, and walkability contribute to each route's overall rating.
According to a 2025 Gallup survey, only 38% of US women feel safe walking alone at night, compared to 78% of men. Research from CHI 2024 found that navigation apps like Google Maps route pedestrians through unsafe areas, and that safety-aware routing achieves 183% more use of safe pedestrian areas compared to standard routing. These users already perform mental safety calculations but lack data to support them.
Three independent teams have attempted to build a safety-scored route tool: SafeWalk AI (Bryant University) uses crime data only, Coolight (University of Toronto) uses lighting and community reports, and Ur Next Route (University of Nevada Reno) uses lighting and distance. None combine all three data layers (crime, lighting, walkability) or provide time-of-day interpolation. The fact that three teams independently built this validates the unmet need.
Beyond individual pedestrians, city planners could use the spatial analysis to prioritize streetlight investment (which segments would benefit most from one additional light?), university safety offices could integrate it with campus escort programs (Clery Act compliance), and real estate platforms could augment Walk Score (which measures access but not safety, and adds $3,250 per point to home values according to Redfin).