Norms can promote human cooperation to provide public goods. Yet, the potential of norms to promote cooperation may be limited to homogeneous groups in which all members benefit equally from the public good. Individual heterogeneity in the benefits of public good provision is commonly conjectured to bring about normative disagreements that harm cooperation. However, the role of these normative disagreements remains unclear because they are rarely directly measured or manipulated. In a laboratory experiment, we first measure participants’ views on the appropriate way to contribute to a public good with heterogeneous returns. We then use this information to sort people into groups that either agree or disagree on these views, thereby manipulating group-level disagreement on normative views. Participants subsequently make several incentivized contribution decisions in a public goods game with peer punishment. We find that although there are considerable disagreements about individual contribution levels in heterogeneous groups, these disagreements do not impede cooperation. While cooperation is maintained because low contributors are punished, participants do not use punishment to impose their normative views on others. The contribution levels at which groups cooperate strongly relate to the average normative views of these groups.