Back to map

How this works

Karachi Watch is a risk map, not a safety map. It highlights only the areas where street-crime risk is elevated for the current hour and weekday. Neighbourhoods at or below normal are deliberately left uncoloured so this doesn't double as a soft-target shortlist. Underneath, every hex still has a 0–10 score you can inspect.

Where the numbers come from

The base risk for each area is seeded from public reporting on Karachi street crime — Dawn's coverage of CPLC-identified hotspots for phone snatching, Citizens-Police Liaison Committee statistics, and news reporting on high-incidence districts (Gulshan-e- Iqbal, Korangi, Malir, Landhi, Orangi, Saddar, Shah Faisal, North Karachi, Sohrab Goth, among others).

On top of that base risk, we apply a time-of-day multiplier that depends on what kind of area it is:

  • Commercial streets are safer during shopping hours, riskier after shops close.
  • Residential lanes are safer during the day, more exposed late at night.
  • Transit hubs and arterials skew riskiest in the early morning and late evening.

What this is not

  • Not a live feed of incidents. We never show individual snatching or robbery pins.
  • Not a substitute for local knowledge. If it feels wrong, trust yourself.
  • Not police data. The seed is public reporting, conservatively estimated.
  • Zones are coarse (~700m hexagons) on purpose — a bad actor can't use this to pick a specific street.

Scoring rules (exact)

Model v0.6.0 · last refreshed 5 days ago (2026-09-09). Every 0–10 score is computed with a single formula:

risk  = min(1, baseRisk × timeMultiplier[areaType][hour] × weekdayMultiplier[weekday])
score = max(0, 10 − risk × 10)

Base risk per zone type

  • commercial: Shops, markets — safer while busy, riskier after closing.
  • residential: Housing lanes — safer during the day, quieter (riskier) late at night.
  • arterial: Main roads — riskier when traffic thins (early morning, late evening).
  • transit: Bus stops, chowrangis — riskiest at empty hours.
  • mixed: Blend of the above — averaged multiplier.

Hour multipliers (0 = midnight → 23 = 11pm)

Type01234567891011121314151617181920212223
commercial1.301.351.401.401.351.200.900.700.600.550.500.500.550.550.550.550.600.650.750.901.051.151.251.30
residential1.351.401.451.451.401.200.950.750.700.700.700.700.700.700.700.700.750.800.901.001.101.201.301.35
arterial1.351.401.451.451.401.200.850.700.650.600.600.600.600.600.600.600.650.750.851.001.151.251.301.35
transit1.401.451.501.501.401.150.850.750.700.650.600.600.600.600.650.700.800.901.001.101.201.301.351.40
mixed1.351.401.451.451.401.200.900.750.700.650.600.600.650.650.650.650.700.800.901.001.151.251.301.35

Weekday multipliers

Sun
×1.00
Mon
×1.00
Tue
×1.00
Wed
×1.00
Thu
×1.05
Fri
×1.10
Sat
×1.05

Confidence per zone

Each zone shows a confidence pill: Low (1 source), Medium (2), High (3+). Tapping a hex lists exactly which articles back its classification.

Weights are hand-tuned from public reporting, not learned from labelled incident data. We publish them in full so anyone can audit or challenge them.

Sources

Every zone on the map is tagged with the reporting behind it — tap any coloured area to see the specific articles and CPLC statistics that back its classification. The risk model was last re-verified on 2026-09-09 against CPLC's 2025–2026 monthly statistics and current news coverage. The 🚦 recurring-jam markers have their own citations, listed on each marker. The full list is here so you can verify it yourself.

A few entries on the map are logged from published news rather than from a resident — a Gulistan-e-Jauhar shop robbery, a Surjani robbery encounter, the DHA pipeline-leak closure, the Rabi-ul-Awwal procession diversions and the weekend Malir River bridge closure. Each one carries a note naming its source, and they exist so the app isn't blank while the community layer fills up.

Sources listed inform the base risk of each zone. We do not republish incident-level data. If we've misclassified an area or missed a well-documented hotspot, please open an issue.

Community reports (live layer)

On top of the seed, anonymous reports filed from inside Karachi nudge a zone's score. The seed layer always dominates — a handful of reports can never turn a green zone dark red on their own.

  • A zone only appears as "reported" once 2+ different devices have filed within the last 30 days. Single-device rows never move the map.
  • Every crime report is GPS-verified at submit time — you have to be inside the zone or within 500m of it. Rate-limited per device (roughly 3/hour, 10/day).
  • Weight decays over 30 days and is scaled by kind (armed robbery > snatching > theft > harassment). Night-time reports (22:00–05:00) get a small amplifier.
  • The total community boost is capped at +0.25 (~2.5 points on the 0–10 scale). Tap any hex to see seed vs. community broken out.
  • The map polls for new reports every ~90 seconds and refreshes when you return to the tab.

Traffic & road alerts

Jams, closures, dharnas, processions and waterlogging are a separate community-only layer with no published source behind it. They render as pins, never as tint, and they do not affect the 0–10 risk score. Because a closure or a dharna is public knowledge, any Karachi resident can post one from anywhere in the city — posted from a distance, the pin waits for a second person before it appears. Accidents still need you on the spot. Alerts expire on their own (~3–6h for jams and floods, ~12–24h for planned disruptions) and anyone can tap "Still there" or "It's clear now".

Reporter trust & validation

Each device carries an anonymous track record. Reports that other people confirm push it from New to Contributor to Trusted; a trusted reporter's report can surface without waiting for a second device. Anyone can tap "This looks wrong" on an alert — one flag per person — and once a report collects enough flags it is dropped from the map and the device that filed it loses standing. There is still no account, no name and no phone number involved: clearing site data resets the device id and the score along with it.

Alerts

Push alerts are opt-in per device. You pick an area and choose whether you want nearby reports, risk spikes, or both; we store only the browser's push endpoint, the area you picked and those two switches. Nothing is sent unless something is actually happening, and never more than one push every 20 minutes. On iPhone the app has to be added to the Home Screen first (iOS 16.4+).

Coverage & language

The map now covers the full Karachi district plus the nearby getaways — Sandspit, Hawksbay, Cape Monze, Mubarak Village, Manora, Hub River Road, the Northern Bypass, Gadap, Taiser Town, Bahria Town, Port Qasim and the Gharo road. Published data on those outer stretches is thin, so their scores are marked lower-confidence and reflect isolation and policing thinness rather than a measured incident rate. The whole interface is available in Urdu — tap اردو in the header.

We never show individual reports, notes, photos, or exact times to other users — only aggregated counts per zone.

About the maker

Noman Ghani

I built this because Karachi deserves better than "everyone just knows" folk knowledge about which streets go bad at which hours. If you have data, a correction, a partnership idea, or a bug — please reach out.

iamnomisg@gmail.com
Map tiles © OpenStreetMap contributors, © CARTO. Data seeded from public reporting; no personal or victim information is stored or displayed.