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.
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:
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)
| Type | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| commercial | 1.30 | 1.35 | 1.40 | 1.40 | 1.35 | 1.20 | 0.90 | 0.70 | 0.60 | 0.55 | 0.50 | 0.50 | 0.55 | 0.55 | 0.55 | 0.55 | 0.60 | 0.65 | 0.75 | 0.90 | 1.05 | 1.15 | 1.25 | 1.30 |
| residential | 1.35 | 1.40 | 1.45 | 1.45 | 1.40 | 1.20 | 0.95 | 0.75 | 0.70 | 0.70 | 0.70 | 0.70 | 0.70 | 0.70 | 0.70 | 0.70 | 0.75 | 0.80 | 0.90 | 1.00 | 1.10 | 1.20 | 1.30 | 1.35 |
| arterial | 1.35 | 1.40 | 1.45 | 1.45 | 1.40 | 1.20 | 0.85 | 0.70 | 0.65 | 0.60 | 0.60 | 0.60 | 0.60 | 0.60 | 0.60 | 0.60 | 0.65 | 0.75 | 0.85 | 1.00 | 1.15 | 1.25 | 1.30 | 1.35 |
| transit | 1.40 | 1.45 | 1.50 | 1.50 | 1.40 | 1.15 | 0.85 | 0.75 | 0.70 | 0.65 | 0.60 | 0.60 | 0.60 | 0.60 | 0.65 | 0.70 | 0.80 | 0.90 | 1.00 | 1.10 | 1.20 | 1.30 | 1.35 | 1.40 |
| mixed | 1.35 | 1.40 | 1.45 | 1.45 | 1.40 | 1.20 | 0.90 | 0.75 | 0.70 | 0.65 | 0.60 | 0.60 | 0.65 | 0.65 | 0.65 | 0.65 | 0.70 | 0.80 | 0.90 | 1.00 | 1.15 | 1.25 | 1.30 | 1.35 |
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.
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.
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.
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.
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".
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.
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+).
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.
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