Arrests, prosecutions, convictions or fines for online speech by country

MrBuddyCasino3 pts1 comments

GitHub - kevinnbass/state_action_against_online_speech_globally · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

kevinnbass

state_action_against_online_speech_globally

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>1 Commit<br>1 Commit

data

data

output

output

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

make_chart.py

make_chart.py

requirements.txt

requirements.txt

View all files

Repository files navigation

State actions against people for online speech — per capita

A single, sourced figure: how many people each state arrested, charged, prosecuted,<br>convicted or fined for online speech, per million residents, per year.

Run it

output/arrests_per_capita.png">pip install -r requirements.txt<br>python make_chart.py # -> output/arrests_per_capita.png

That's it — make_chart.py reads data/arrests.csv and renders the chart.

What it shows (and what it deliberately leaves out)

A naive "arrests for online speech" ranking is misleading, for two reasons this chart<br>corrects:

The transparency penalty. A country that publishes its numbers looks worse than<br>one that hides them. South Korea's 29,258 are cases reported to police — mostly<br>private defamation/insult complaints, most dismissed — not the state censoring<br>anyone. It is excluded .

The opacity dividend. China's figure is one four-month campaign ÷ 1.4 billion people<br>= ~1/million, which makes the most repressive state look the freest. It is excluded .

So the chart applies four rules (each exclusion is a one-line comment in make_chart.py):

State enforcement of speech only. Out: private-complaint volume (South Korea,<br>Philippines, Lebanon); off-topic harassment / image-abuse statutes (New Zealand,<br>Australia, Mexico); content-orders that don't touch a person (Singapore). Kept:<br>Germany ("Hasspostings" offences recorded by the BKA) and Canada (StatCan<br>cyber-hate-crime accused) — the authorities' own records of online-speech offences,<br>which is categorically different from private suits.

No one-off snapshots. A single campaign or protest week ÷ a national population is<br>not a rate (this is what would put China at ~1/million).

No opacity fragments that read as falsely free. Documented floors of opaque or<br>under-tallying states whose per-capita value is misleadingly near-zero: China, India,<br>Pakistan, Nigeria, Venezuela, Tanzania, Uganda.

Annualized. A multi-year cumulative total is divided by its documented span<br>(Russia's 3-year total reads ~25/M·yr, not ~75), and the bar is tagged /yr (div Nyr).<br>Cumulative figures with no clean per-year span (Iran 2011–2023, Ireland) drop out.

Bars are coloured by confidence in the figure (high / medium / low), and each carries<br>its exact metric + period, because the numbers are not natively comparable.

Data & provenance

data/arrests.csv is the dataset. Every row carries source_name, source_url and a<br>candid caveat, so each figure is checkable against its primary source. The CSV covers<br>every country researched — including the metrics and caveats of the ones this chart<br>excludes, so the editorial filters above are auditable — not just the bars shown.

The figures mix metrics (arrest vs. charge vs. conviction vs. recorded offence vs.<br>administrative penalty) and time bases — that heterogeneity is the point, and it's why<br>every bar is tagged. Read the tags, not just the length.

License

Code (make_chart.py): MIT — see LICENSE.

Data (data/arrests.csv): CC BY 4.0.<br>Compiled from public official, NGO and press sources, cited per row — attribute and<br>verify against the linked sources before reuse.

About

No description, website, or topics provided.

Resources

Readme

License

View license

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

stars

Watchers

watching

Forks

forks

Report repository

Releases

No releases published

Packages

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload...

data speech reload license make_chart arrests

Related Articles