Do Disruptive Climate Protests Backfire? What Our Study Found

In recent years, a new wave of climate activism has captured public attention through highly visible—and highly controversial—tactics. One of the most debated methods is mass traffic obstruction, where activists block roads to raise awareness and demand urgent action on climate change. The group Last Generation in Germany extensively used this tactic between 2022 and 2024. These protests often provoke strong reactions, including from bystanders who attempt to forcibly remove activists. But how do these tactics really affect public opinion?

In our new study, co-authored with Aiko Wagner and Arne Carstens and published in the European Political Science Review, we set out to understand how the public responds to these disruptive forms of protest. Using an online survey experiment, we presented participants with different protest scenarios, varying both the level of obstruction and the presence or absence of vigilante intervention.

Our findings challenge some common assumptions. As expected, people viewed obstructive protests less favorably than non-obstructive ones. However, this disapproval did not significantly reduce support for the climate activists’ underlying goals. Even more surprisingly, when bystanders responded with vigilante actions—such as physically confronting protesters—it had no measurable effect on public opinion in our sample.

Support for the activists’ actions and demands. Note. Distribution of responses in the background. N = 1,698.

What does this mean for the climate movement? Disruptive tactics like mass obstruction are unlikely to win over undecided individuals or expand the activist coalition. But they also don’t appear to alienate existing supporters or damage the movement’s broader cause. In that sense, these high-risk actions may be strategically justifiable: they generate media attention and put pressure on authorities without backfiring in public opinion.

As the climate crisis intensifies, so too will debates over how far activists should go to demand change. Our findings contribute to a growing body of research on the strategic dilemmas of social movements—and the fine line between disruption and persuasion.

Major changes in btmembers, an R package to import data on all members of the Bundestag since 1949

With the upcoming German federal elections, I decided to make important changes to btmembers, my R package to import data on all members of the Bundestag since 1949.

Current composition of the German Bundestag

You can find more information about btmembers here. The CSV data is available here and the codebook here.

Version 0.1.0 changes the default behavior of the function import_members().

  • By default, import_members() now returns a list containing four data frames (namen, bio, wp, and inst), which together preserve all the information contained in the XML file provided by the Bundestag.
  • If import_members() is called with the argument condensed_df = TRUE, the function will return a condensed data frame. Each row corresponds to a member-term. Most of the information contained in the original data is preserved except only the most recent name of the member is retained and institutions are removed. A new column named fraktion is added to the data. fraktion is a recoded variable and refers to the faction the member spent most time in during a given parliamentary term.
  • The performance of import_members() has been improved by the integration of tidyr unnest functions.
  • The package does not come preloaded with the data anymore but uses GitHub to store the pre-processed data. This facilitates updates and will make the integration of GitHub Actions possible in the future.
  • update_available() has been deprecated.

These changes give users the possibility to reorganize the data as they wish and make the package faster and more robust.

Plot the mean and confidence interval of a variable across multiple groups using Stata

Stata offers many options to graph certain statistics (e.g. dot charts). These options, however, do not always work well to compare statistics between groups. To address this, I am sharing a program called plotmean, which allows users to graph the mean and confidence interval of a variable across multiple groups.

Running this do-file will generate the following graph:

The program relies on the statsby function and can be easily modified to plot all sorts of statistics.