Methodology
The Safety Index: what it is and what it is not
This is a relative index, not an absolute safety guarantee
StreetSignal's safety indices rank Cape Town's 744 suburbs against each other. A score of 70/100 means safer than approximately 70% of Cape Town suburbs by this methodology - it does not mean safe in any absolute sense. A score reflects measured crime pressure relative to peers, not a guarantee of conditions on the ground. The score is one input to a property decision, not a substitute for professional advice or direct local knowledge.
Each suburb displays a Safety Index between 0 and 100. The index is StreetSignal's own computed index from SAPS quarterly crime data - SAPS publishes raw crime counts only, not rankings, scores, or indices. The index is computed from SAPS Q3 2025/2026 (October-December 2025) data, mapped to suburb level via our precinct-to-suburb crosswalk.
How the index is computed
The pipeline runs five sequential steps. Each step addresses a specific limitation in raw precinct-level crime data. The output is a composite index from 0 (highest harm) to 100 (lowest harm).
Step 1 - Dasymetric disaggregation
SAPS crime counts are recorded at precinct level, not suburb level. One precinct covers an average of 12 suburbs in Cape Town. We distribute precinct crime to individual suburbs in proportion to their share of the precinct's population, adjusted by a covariate risk weight derived from household survey deprivation data. Higher-deprivation suburbs receive a proportionally larger crime allocation from their precinct. Method: Poulsen & Kennedy (2004) dasymetric disaggregation, Journal of Quantitative Criminology.
Step 2 - CDPA category exclusion
Three SAPS categories are classified as "Crimes Detected as a Result of Police Action" (CDPA): Drug-related crime, Driving under the influence of alcohol or drugs, and Illegal possession of firearms and ammunition. These categories reflect police patrol deployment and enforcement effort, not residential victimisation. Areas with heavy police presence (tourist corridors, commercial centres) show inflated CDPA counts that would otherwise distort the residential risk score. CDPA categories are excluded from score computation but retained in the data for display. Method: Cambridge Crime Harm Index (Sherman, Neyroud & Neyroud, 2016).
Step 3 - Crime Harm Index weighting
In plain language: not all crimes are equally harmful. A murder is not the same as a shoplifting incident. The Crime Harm Index weights each crime by the number of days of the minimum prison sentence under South African law. Murder carries 5,475 harm-days (15 years). Rape carries 3,650 (10 years). Shoplifting carries 2. This means one murder contributes the same harm to the index as 2,738 shoplifting incidents.
Technically: CHI harm-days are derived from the Criminal Law Amendment Act 105 of 1997 (CLAA) minimum sentence schedules for first-time offenders. Where no statutory minimum exists, values are estimated from typical sentencing practice or the Cambridge CHI (Sherman, Neyroud & Neyroud, 2016, Policing, 10(3), 171-183). The Institute for Security Studies explicitly recommended this approach for South Africa (Faull, Kriegler & Mtiwejojo, August 2023).
Step 4 - Empirical Bayes smoothing
In plain language: small populations produce misleading outliers. One serious incident in a suburb of 400 residents creates an extreme harm-per-capita rate that would dominate the ranking without adjustment. Empirical Bayes smoothing adjusts each suburb's harm rate toward the city average, proportional to population size. Large suburbs stay close to their raw values. Small suburbs are pulled toward the average. This is the same method used by public health agencies worldwide.
Technically: we apply global Empirical Bayes shrinkage (Marshall 1991, Journal of Epidemiology & Community Health) to CHI harm-days per 100,000 residents. Each suburb's harm rate is pulled toward the city-wide mean in proportion to how small its population is relative to the expected count at the global mean.
theta_hat_i = w_i x theta_i + (1 - w_i) x mu
where theta_i = CHI harm-days per 100k residents for suburb i
w_i = sigma^2 / (sigma^2 + mu/E_i) - weight = 0 (shrink fully) to 1 (retain raw rate)
Step 5 - Composite scoring (geometric mean)
In plain language: the safety index combines two questions into one score. First: how much harm per person? (the rate). Second: how much harm in total? (the volume). A suburb must score well on both to achieve a high composite. This prevents a suburb from appearing safe just because it has a large population that dilutes the per-capita rate, when the actual number of serious crimes is very high.
Technically: two sub-indices are computed and combined via geometric mean (OECD 2008, Handbook on Constructing Composite Indicators; same aggregation used by the UNDP Human Development Index).
Sub-index A (rate): R = 100 - percentile_rank(EB-smoothed CHI harm per 100k)
Sub-index B (volume): V = 100 - percentile_rank(absolute CHI harm-days)
Composite: S = sqrt(R x V)
Worked example: Khayelitsha (composite = 29)
Population: 518,910. Total CHI harm-days: 1,939,100. The per-capita harm rate is moderate (large population dilutes the rate). But absolute harm is the 2nd highest in Cape Town.
Rate sub-index: 95/100. Volume sub-index: 9/100. Composite: sqrt(95 x 9) = 29. Both dimensions contribute to the final score. Under a rate-only methodology, Khayelitsha scored 97/100. The composite captures the high absolute harm that the rate-only approach missed.
Worked example: Camps Bay (headline = 99, composite = 46)
Population: 4,296. Total CHI harm-days: 42,327. The per-capita harm rate is high (tiny residential population inflated by visitor-driven crime). But absolute harm is among the lowest in the metro.
Rate sub-index: 21/100. Volume sub-index: 99/100. Composite: sqrt(21 x 99) = 46. The tourist precinct flag is applied (volume sub-index exceeds rate sub-index by 78 points). Under a rate-only methodology, Camps Bay scored 7/100.
Because Camps Bay is flagged as a tourist precinct, the headline score is 99/100 (the volume sub-index), not 46. The composite of 46 is still shown in the detailed data section. The volume sub-index is used because it measures absolute crime harm without being distorted by the small residential population denominator.
Contact crime vs property crime
SAPS classifies reported offences into two broad groupings: contact crime and property crime. These categories reflect fundamentally different safety experiences, and StreetSignal now surfaces this distinction in suburb narratives.
Contact crime (violence against persons)
Murder, attempted murder, assault (common and GBH), robbery (common, aggravated, carjacking), and sexual offences. These are crimes where the perpetrator uses force or the threat of force against a person.
Property crime (theft and burglary)
Residential burglary, non-residential burglary, theft of motor vehicle, theft out of motor vehicle, stock theft, and other theft. These are crimes where the target is property rather than a person.
This distinction matters because the two groupings follow different spatial patterns. Property crime tends to cluster in suburbs with higher-value assets and commercial activity. Contact crime tends to concentrate where interpersonal violence is structurally prevalent. A suburb can score well on one dimension and poorly on the other. The SAPS classification is the standard used across all South African crime analysis, including by the Institute for Security Studies.
Risk bands
67-100
Lower reported crime
34-66
Moderate reported crime
0-33
Higher reported crime
The tourist precinct paradox
Crime rates are conventionally computed per 100,000 residents. But some precincts serve far more people than their residential population suggests. Criminologists call this the ambient population problem (Andresen 2007): when residential and ambient populations diverge, per-capita rates overstate residential risk.
The tourist paradox flag is applied when a suburb's volume sub-index exceeds its rate sub-index by 30 or more points. This identifies suburbs where absolute harm is low but the per-capita rate is inflated by visitor-driven crime. Camps Bay (rate 21, volume 99, gap 78) and Hout Bay (rate 18, volume 88, gap 70) are correctly flagged. Sea Point (rate 90, volume 92, gap 2) is not flagged because both sub-indices are high - there is no paradox.
Headline score adjustment for tourist precincts
For the 5 suburbs flagged as tourist precincts, the headline safety score displayed on the suburb page uses the volume sub-index instead of the geometric mean composite. The volume sub-index measures absolute crime harm only - it is not affected by the small-population denominator problem that inflates per-capita rates in tourist-heavy precincts.
Without this adjustment, Camps Bay would score the same as precincts recording far higher annual crime volumes - a result that is methodologically correct under the composite formula but indefensible as a headline for users making property decisions. The composite score (which combines rate and volume) is still computed and displayed in the detailed data section for transparency. Both scores appear on the suburb page so users can see the full picture.
This adjustment is grounded in ambient population research. Andresen (2007, Environment and Planning A) demonstrated that residential population denominators produce misleading per-capita crime rates in areas where the ambient (daytime/visitor) population significantly exceeds the resident population. Adnan, Longley & Khan (2016, Journal of Urban Technology) extended this to tourism-heavy precincts specifically.
Tourist-precinct flagged suburbs:
Suppressed safety scores
Where the SAPS precinct population is too small to support a reliable per-capita calculation, StreetSignal suppresses the safety score rather than publish a misleading number. The suburb page surfaces the reason and, where available, household survey victimisation context as an independent signal.
15 suburbs currently have suppressed safety scores:
- Bongani - Population denominator collapse - station population insufficient for valid per-capita calculation
- Ekuphumleni - Population denominator collapse - station population insufficient for valid per-capita calculation
- Eyethu - Population denominator collapse - station population insufficient for valid per-capita calculation
- Good Hope - Population denominator collapse - station population insufficient for valid per-capita calculation
- Graceland - Population denominator collapse - station population insufficient for valid per-capita calculation
- Hanover Park - Station catchment population (366k+) dilutes per-capita rate. Score suppressed per Hanover Park Rule. Multi-suburb coverage creates statistical distortion.
- Ilitha Park - Population denominator collapse - station population insufficient for valid per-capita calculation
- Khaya - Population denominator collapse - station population insufficient for valid per-capita calculation
- Philippi - Station catchment population (366k+) dilutes per-capita rate. Score suppressed per Hanover Park Rule. Multi-suburb coverage creates statistical distortion.
- Philippi Park - Station catchment population (366k+) dilutes per-capita rate. Score suppressed per Hanover Park Rule. Multi-suburb coverage creates statistical distortion.
- Pinati Estate - Station catchment population (366k+) dilutes per-capita rate. Score suppressed per Hanover Park Rule. Multi-suburb coverage creates statistical distortion.
- Silvertown - Khayelitsha - Makhaza SAPS station data not available in current DataFirst quarterly release. Score withheld: no data should not imply maximum safety.
- Table Bay Harbour - Non-residential precinct. Table Bay Harbour covers the V&A Waterfront commercial and tourist area with only 1,183 Census residents. Per-capita rates are meaningless for a precinct serving millions of visitors.
- Umrhabulo Triangle - Makhaza SAPS station data not available in current DataFirst quarterly release. Score withheld: no data should not imply maximum safety.
- Weltevreden Valley - Station catchment population (366k+) dilutes per-capita rate. Score suppressed per Hanover Park Rule. Multi-suburb coverage creates statistical distortion.
Precinct population mismatch
Some suburbs share a SAPS precinct with a much larger neighbour. When one suburb accounts for 70% or more of the precinct's residential population, the per-capita crime rate is dominated by that suburb's population denominator. Smaller suburbs in the same precinct inherit a diluted rate that may not reflect their local conditions.
28 suburbs across 15 precincts are flagged with a precinct population mismatch disclosure. Each affected suburb page displays the dominant suburb's name, the population dominance ratio, and a contextual note explaining the statistical effect. Where household survey victimisation data is available, it is presented alongside the mismatch disclosure to provide an independent signal of residents' lived experience.
In cases where the mismatch is severe enough to render the safety index misleading, the score is suppressed entirely and the suburb page explains why. This applies where the precinct's station-served population exceeds the suburb's own population by a factor that would produce a statistically meaningless per-capita rate.
Seasonal data caveat
The current dataset covers Q3 2025/2026 (October-December 2025), Cape Town's peak summer tourist season. Crime patterns in coastal and tourist precincts are structurally elevated during this period. Scores for Atlantic Seaboard, City Bowl, and False Bay coast suburbs may differ from what an annual average would show. Cape Flats and inland residential precincts are less affected by seasonal variation.
What a score of 50 means
Suburbs displaying a score of exactly 50 with a precinct listed as "Unassigned" have not yet been successfully matched to a SAPS precinct in our data pipeline. The score of 50 is a neutral placeholder, not a computed value. Do not treat a score of 50 on an unassigned suburb as a reliable safety indicator.
Crime volume: how the composite handles it
The safety index is a composite of both per-capita harm rate and absolute harm volume. Unlike a rate-only approach, the composite cannot be "gamed" by a large population that dilutes the per-capita rate while absolute harm remains high. A suburb must score well on both dimensions to achieve a high composite index.
Each suburb page shows the annualised crime volume alongside the safety index. Volume is classified into five tiers based on where a suburb falls relative to all 734 suburbs with SAPS data: very low (bottom 20%), low, moderate, high, and very high (top 20%). These tiers are computed using quintile boundaries.
The city median is approximately 10,500 annualised reported crimes per precinct. Each suburb shows its ratio to this median (e.g. "2.1x median") so that users can gauge absolute scale at a glance.
When rate and volume sub-indices diverge
Some suburbs show a large gap between their rate sub-index and volume sub-index. Where this divergence exceeds 50 points, the suburb page displays an explanatory note. For example, Khayelitsha scores 95 on rate (low per-capita harm) but 9 on volume (high absolute harm). The geometric mean (29) captures both realities rather than choosing one. The divergence note helps users understand which dimension is driving the composite.
Trend assessment
Each suburb page shows a year-on-year trend label indicating whether reported crime is increasing, decreasing, or stable compared to the same quarter in the previous year. Trend is assessed using a standard statistical test for count data that accounts for the random variation naturally expected in crime figures - a small change in a low-crime suburb may be noise, while the same percentage change in a high-crime suburb may be meaningful.
The test produces five categories:
Significant decrease
Strong evidence of a meaningful decline in reported crime
Moderate decrease
Evidence of a decline, though less definitive
Stable
No statistically meaningful change detected
Moderate / Significant increase
Evidence of a rise in reported crime
Suburbs with very few reported crimes show "Insufficient data" because small numbers make trend detection unreliable - a change from 3 to 6 incidents is a 100% increase but could easily be random variation. The threshold for trend assessment requires a minimum volume of crime reports to produce a reliable signal.
Data confidence
Not all 744 suburbs have the same depth of data. Each suburb page displays a data confidence tier that tells you how much information is available for that neighbourhood:
Full coverage (524 suburbs)
The suburb has Census population data, SAPS crime data, and at least one additional source such as household survey data or transport mode data. All core metrics are computed from primary sources.
Partial coverage (184 suburbs)
One major data source is missing. Some metrics use estimated values derived from neighbouring suburbs in the same survey group or precinct. These suburbs display a note indicating which metrics are estimated.
Limited coverage (36 suburbs)
The suburb has very few data sources available. Scores and metrics should be interpreted with caution. These suburbs typically lack both household survey data and transport mode data, and may have limited or no SAPS precinct match.
Coverage tiers are computed automatically at build time based on which data sources are available for each suburb. The tier is displayed on the suburb page so that users can calibrate their confidence in the data accordingly.
Precinct-level data: what this means for suburb scores
SAPS publishes crime statistics at police precinct level. Cape Town has 63 police precincts serving 744 suburbs. Every suburb that shares a precinct receives the same per-capita crime rate. There is no publicly available suburb-level crime data in South Africa. No platform, including StreetSignal, has access to crime counts broken down below precinct level.
StreetSignal maps each of the 744 Cape Town suburbs to one of these 63 precincts via a crosswalk derived from SAPS jurisdictional boundaries and Census geography. Where a precinct covers multiple suburbs, all those suburbs inherit the precinct-wide rate. The dasymetric disaggregation described in Step 1 adjusts absolute crime volume allocation within a precinct based on population and deprivation, but the per-capita rate remains a precinct-level figure.
This is a structural limitation of South African crime data, not a gap specific to StreetSignal. Users should be aware that two suburbs in the same precinct will show identical per-capita rates, even if their local conditions differ. The precinct population mismatch disclosures described above flag the most acute cases.
Reporting bias
All scores on StreetSignal reflect reported crime only. They measure what was reported to SAPS, not all crime that occurred. Reporting rates vary between communities for reasons that include trust in the police, proximity to a police station, awareness of reporting processes, and whether a police report is needed for an insurance claim.
Property crime reporting tends to be higher in suburbs where insurance coverage is widespread, because insurers require a case number before processing a claim. This may mean that property crime appears higher in well-insured suburbs relative to areas with lower insurance coverage, even if the actual incidence is similar. Contact crime reporting is also uneven: the South African Victims of Crime Survey consistently finds that a significant proportion of assault and robbery incidents go unreported.
StreetSignal cannot correct for under-reporting because the extent varies by crime type, community, and time period. The scores should be read as "reported crime pressure" rather than a complete picture of all crime in a suburb. Where household survey victimisation data is available, it is presented alongside the SAPS-derived score as an independent signal of residents' lived experience.