Punishments for norm violations are hypothesised to be a crucial component of the maintenance of cooperation in humans but are rarely studied from a comparative perspective. We investigated the degree to which punishment systems were correlated with socioecology and cultural history. We took data from the Standard Cross-Cultural Sample database and coded ethnographic documents from a sample of 131 largely non-industrial societies. We recorded whether punishment for norm violations concerned adultery, religion, food, rape or war cowardice and whether sanctions were reputational, physical, material or execution. We used Bayesian phylogenetic regression modelling to test for culture-level covariation. We found little evidence of phylogenetic signals in evidence for punishment types, suggesting that punishment systems change relatively quickly over cultural evolutionary history. We found evidence that reputational punishment was associated with egalitarianism and the absence of food storage; material punishment was associated with the presence of food storage; physical punishment was moderately associated with greater dependence on hunting; and execution punishment was moderately associated with social stratification. Taken together, our results suggest that the role and kind of punishment vary both by the severity of the norm violation, but also by the specific socio-economic system of the society.