# OONI Probe: measuring internet censorship from a real network

> OONI Probe is free and open source software that measures internet censorship and other forms of network interference, with an Android, iOS and desktop app plus a Go command line tool. It is aimed at researchers, journalists and anyone who needs evidence of what their own network blocks.

**ooni/probe** — OONI Probe network measurement tool for detecting internet censorship

- Repository: https://github.com/ooni/probe
- Website: https://ooni.org/install
- Stars: 926 · Forks: 150
- Language: Unknown
- License: BSD-3-Clause
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/ooni-probe

## A sensor that reports what your network does

OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference. That is the whole job, and the interesting part is where it runs.

The probe runs on the network you want to know about. It attempts the connections and requests you would make, records what came back, and turns the result into a measurement. The difference from a general purpose monitoring tool is that the target is interference rather than availability: a site that loads slowly because the link is congested and a site that loads nothing because something dropped the connection produce different records.

The scale of the accumulated data is the reason the project exists in this form. The README states that every month thousands of networks are measured by OONI Probe users in more than 200 countries, and that since 2012 millions of network measurements have been published from around the world. Those published measurements are what turn individual observations into evidence, and they are linked from ooni.org/data.

That publishing step is the difference between a diagnostic tool and a measurement tool. A local probe result tells you what happened on your connection at a moment in time. A published measurement can be compared against measurements from the same network on other days, or against other networks in the same region, which is what makes censorship claims checkable by people who were not running the probe themselves.

## This repository is a hub, the code lives in two others

The most important thing to understand about the repository is what it is now. Its top level contains only `.github/`, `LICENSE.md`, `Readme.md` and `images/`, and the README links out to two other repositories: probe-multiplatform for the Android, iOS and desktop applications, and probe-cli for the command line tool.

That is a change of shape rather than a change of subject. The README notes that OONI Probe used to be written in Python and that the legacy Python version is available in the probe-legacy repository, and that the tests themselves are now implemented in Go in probe-cli. So the Python implementation that many people remember is the historical one, and the current measurement code is Go.

The consequence for an adopter is that there is nothing to build from this repository. If you want to run measurements you install a released application, either the multiplatform app or the CLI. If you want to read how a test works, you read the Go code in probe-cli. If you want to modify the test suite itself, probe-cli is the place to work, not this one.

The distribution options for the app are listed in the README: the Google Play Store, F-Droid and the App Store for the mobile versions, with a separate desktop download linked from ooni.org/install/desktop. The general installation page is at ooni.org/install, and the homepage for the project is ooni.org.

## The tests measure the citizenlab test lists

What OONI Probe actually tries to fetch is defined outside this repository. The README states that OONI Probe tests the lists of websites included in the citizenlab/test-lists repository, and links that repository directly.

This is a deliberate division of labour. The test lists are curated and versioned separately, so a measurement always has a well defined target set that can be identified after the fact, and the probe does not need to embed the list of sites it will test. It also means the list can change without a new probe release, and that anyone who wants to understand the coverage of a given measurement looks in the test list repository rather than in the probe code.

The measurements themselves are published to ooni.org/data, and the API at api.ooni.io/stats is what the README links for the per-country statistics behind the claim about more than 200 countries.

For someone evaluating the tool, the useful question is therefore not what the probe can do in the abstract but how its test list lines up with the sites you care about. If your concern is a specific service, check that it appears in the citizenlab test lists, and check the published data for it, before deciding that a probe run is worth doing.

## Where a probe result stops being a conclusion

There are limits that come from the design, and they are worth stating plainly because the output of a probe looks more conclusive than it is.

First, a probe describes one vantage point at one moment. A blocked request in your network says something about your network. It does not say what the service is doing elsewhere, and it does not distinguish censorship from a broken resolver, a captive portal, a local filtering product or a plain outage. Interference at the network layer and interference at the application layer look different in the data, but separating them requires reading the measurement, not just seeing that a test failed.

Second, a passing test is weaker evidence than a failing one. A connection that succeeded shows that a path existed at that moment. It does not rule out selective or intermittent interference, and the README does not describe any statistical treatment of repeated runs.

Third, there is the question of what running the tool means for the person running it. The probe deliberately sends traffic to sites that are blocked in some jurisdictions, and the measurements are published. Anyone considering running it should understand that the records are shared, and the project's own framing is that the data is public.

Fourth, this repository has no GitHub releases of its own. The release history for the applications and the CLI lives in their own repositories, which is where you should look for version information.

## BSD-3-Clause, a project with a public mandate

The licence field on the repository says BSD-3-Clause, and the repository carries a LICENSE.md file. The BSD licence is permissive, which matters for a measurement tool because the code is meant to be run by people who are not part of any organisation, and because research and journalism codebases sometimes need to embed it.

The maintenance picture is modest but current. The last push was on 2026-09-10, and the repository has no GitHub releases, which is consistent with a repository whose role is to point at the real artifacts. The README also carries an Awesome Humane Tech badge, a marker used by a community directory for technology it considers aligned with humane goals, which is a reasonable signal about intent but says nothing about the code quality in the other repositories.

The institutional framing is worth noting too. OONI Probe is presented as part of a wider OONI effort, with ooni.org as the main site, a published measurement archive, and an API for statistics. A measurement tool whose data goes to a central published archive is a different commitment from one that keeps results local, and that is the design rather than an accident.

What you take on as an adopter is therefore a shared research practice: run the tool, publish what it finds, and expect your measurements to be part of a global dataset that others, including researchers and journalists, will analyse.

## Conclusion

Adopt OONI Probe when you need to show what a specific network blocks, from your own vantage point, and you are prepared to share the measurements that follow. Skip it if you need a global view of blocking, because one probe reports one network, and do not treat a single clean result as proof that nothing is interfered with. Verify first which build you install, the app, the desktop app or the Go CLI in probe-cli, since the tests themselves live in the CLI repository. The licence field on the repository says BSD-3-Clause, and the last push was on 2026-09-10.

## FAQ

### What is OONI Probe used for?

OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference. It runs on the network being tested, and the measurements it produces are published so they can be compared and analysed.

### Which platforms does OONI Probe run on?

The README lists an Android, iOS and desktop app in the probe-multiplatform repository, distributed through the Google Play Store, F-Droid and the App Store, and a command line tool in the probe-cli repository. A desktop download is linked from ooni.org/install/desktop.

### Is OONI Probe still written in Python?

No. The README says OONI Probe used to be written in Python, with that legacy version kept in the probe-legacy repository, and that the tests are now implemented in Go in the probe-cli repository.

### Which websites does OONI Probe test?

The README states that OONI Probe tests the lists of websites included in the citizenlab/test-lists repository. The test list is maintained separately from the probe code, so it can be checked and versioned independently.

### Where are OONI Probe measurements published?

The README links published measurements from ooni.org/data and points to api.ooni.io/stats for the per-country statistics. It also states that every month thousands of networks are measured in more than 200 countries, and that millions of measurements have been published since 2012.

### What licence does OONI Probe use?

The licence field on the repository says BSD-3-Clause, with the terms in a LICENSE.md file. The last push was on 2026-09-10 and this repository has no GitHub releases of its own.

## Sources

- [Issues](https://github.com/ooni/probe/issues)
- [License: BSD-3-Clause](https://github.com/ooni/probe/blob/master/LICENSE)
- [ooni/probe on GitHub](https://github.com/ooni/probe)
- [Project website](https://ooni.org/install)
- [README](https://github.com/ooni/probe/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ooni-probe
