OONI nettest quick reference¶
The nettests directory in ooni/spec holds 41 nettest specifications, a fair share of which are no longer in use. When picking a nettest or making sense of data you already have, knowing which ones still produce measurements is more efficient than reading every specification.
This page condenses all 41 into one reference table, noting each one's upstream status, whether public data still exists, and which ones show up in Taiwan.
How to read the status columns
Spec status comes from the _status_ marker at the top of each specification, one of current, experimental or obsolete, reflecting how upstream positions that nettest.
Data in circulation is measured, snapshotted on the day of writing (2026-08-04) by surveying each nettest's most recent public measurements through the OONI API.
Taiwan comes from the S3 public dataset, spot-checking the nettest directories that appeared under Taiwan across five time slots on 2026-08-03.
A status marker is not a data supply¶
Specification markers and actual data do disagree, and the gap runs in both directions:
- Marked
currentwith no data to be found:tlsmiddlebox,portfilteringandcaptiveportal. - Marked
experimentalwith data every day:dnscheck,echcheck,openvpn,stunreachabilityandvanilla_toramong others, at volumes comparable to somecurrentnettests.
experimental reflects the maturity of the specification itself and implies nothing about data volume. To judge whether a nettest suits your analysis, querying the API for data beats reading the status marker.
Grouped by purpose¶
The groupings below are by observation purpose; the tables that follow carry the detail:
- Website blocking detection:
web_connectivity - Middleboxes and interference techniques:
http_header_field_manipulation,http_invalid_request_line,sni_blocking,echcheck - Messaging app reachability:
telegram,whatsapp,signal,facebook_messenger - Circumvention tool availability:
tor,vanilla_tor,torsf,psiphon,riseupvpn,openvpn - DNS behaviour:
dnscheck,dnsping - Connection performance:
ndt,dash,stunreachability,quicping
Nettests still producing data¶
Every nettest below had public measurements available on the day of writing, and these are also the ones encountered most often when reading OONI data.
| Nettest | What it measures | Spec status | Taiwan |
|---|---|---|---|
web_connectivity |
Website reachability and block verdicts, by far the largest nettest by volume | current | yes |
tor |
Reachability of Tor directory authorities and bridges | current | yes |
vanilla_tor |
Whether unobfuscated Tor can bootstrap a connection | experimental | yes |
torsf |
Tor over the Snowflake pluggable transport | experimental | no |
telegram |
Reachability of Telegram web and its data centre endpoints | current | yes |
whatsapp |
Reachability of WhatsApp endpoints and its registration service | current | yes |
signal |
Reachability of Signal service endpoints | current | yes |
facebook_messenger |
Reachability of Facebook Messenger endpoints | current | yes |
dnscheck |
Behaviour of a given DNS resolver, covering encrypted queries (DoH, DoT) | experimental | yes |
dnsping |
Latency and response behaviour of DNS queries | experimental | no |
echcheck |
Support for and interference with Encrypted Client Hello (ECH) | experimental | yes |
http_header_field_manipulation |
Whether middleboxes tamper with HTTP headers | current | yes |
http_invalid_request_line |
How middleboxes react to malformed request lines, used to detect transparent proxies | current | yes |
openvpn |
Whether an OpenVPN handshake completes | experimental | yes |
psiphon |
Whether the Psiphon circumvention tool can establish a connection | current | yes |
riseupvpn |
Reachability of the RiseupVPN service | current | yes |
stunreachability |
Reachability of STUN servers, which affects WebRTC calls | experimental | yes |
ndt |
Connection speed and performance diagnostics | current | yes |
dash |
Video streaming playback quality | current | yes |
browser_web |
Loading pages with a real browser engine | experimental | no |
Abbreviations in the table
- DoH, DoT: DNS queries wrapped in HTTPS or TLS, so query contents do not cross the network in plaintext. See Encrypted DNS.
- ECH (Encrypted Client Hello): the first message of a TLS handshake normally carries the destination domain in plaintext, and ECH encrypts that field.
- SNI (Server Name Indication): the destination domain sent in plaintext during a TLS handshake, frequently used as the basis for blocking decisions.
- STUN: a protocol that helps a device discover its own public IP and port, used when WebRTC calls set up a connection.
- QUIC: a UDP-based transport protocol that HTTP/3 is built on.
Nettests with only occasional data¶
| Nettest | What it measures | Spec status | Most recent |
|---|---|---|---|
quicping |
Reachability of the QUIC protocol | experimental | 2026-07-30 |
sni_blocking |
Blocking targeted at the TLS SNI field | experimental | 2026-07-20 |
Nettests with no public data¶
The seven nettests below return no public measurements from the API. Their specifications remain in the upstream repository and are worth reading when designing a new nettest or a research method.
| Nettest | What it measures | Spec status |
|---|---|---|
tlsmiddlebox |
Middlebox behaviour along a TLS connection path | current |
portfiltering |
Whether specific ports are filtered | current |
captiveportal |
Whether the network requires a login to get out | current |
urlgetter |
A general-purpose fetching component reused by other nettests | experimental |
tcpping |
Round-trip latency at the TCP layer | experimental |
tlsping |
Round-trip latency of a TLS handshake | experimental |
simplequicping |
A simplified QUIC latency measurement | experimental |
Historical nettests marked obsolete¶
Twelve specifications are marked obsolete upstream. Most of their functionality was absorbed into web_connectivity, or they retired as measurement methods evolved. Their records still turn up when working with historical data, and there is no reason to adopt them for new observation work.
| Nettest | Specification |
|---|---|
| bridgeT | ts-001 |
| DNS Consistency | ts-002 |
| HTTP Requests | ts-003 |
| HTTP Host | ts-004 |
| DNS Spoof | ts-005 |
| TCP Connect | ts-008 |
| Multi Protocol Traceroute | ts-009 |
| Bridge Reachability | ts-011 |
| DNS Injection | ts-012 |
| Lantern | ts-013 |
| Meek Fronted Requests | ts-014 |
| OpenVPN Client Test (legacy) | ts-016 |
Two OpenVPN specifications share a number
Upstream has two specifications numbered ts-016: ts-016-openvpn.md, marked obsolete in the table above, and ts-016-vanilla-tor.md, marked experimental. The current OpenVPN specification is ts-040-openvpn.md, so take care not to cite the old one.
Which nettests show up in Taiwan¶
Spot-checking five time slots on 2026-08-03, 17 nettests appeared under Taiwan (written here in the API's underscore form): web_connectivity, tor, vanilla_tor, telegram, whatsapp, signal, facebook_messenger, dnscheck, echcheck, http_header_field_manipulation, http_invalid_request_line, openvpn, psiphon, riseupvpn, stunreachability, ndt, dash.
Directory names on S3 differ from test_name. Directory names carry no underscores (webconnectivity, vanillator, facebookmessenger) while API queries need the underscore form (web_connectivity, vanilla_tor, facebook_messenger). For the retrieval path in detail, see ASN observation data retrieval and analysis.
Taiwan's observations concentrate on web_connectivity, with small sample sizes for everything else. For widening local coverage, tor and dnscheck sit closest to the community's existing themes.
There are two ways to run a specific nettest. With OONI Probe on desktop or mobile, choose which nettests to enable in the settings. To invite others to measure a fixed list of URLs, use OONI Run v2 to create a shareable link. The link ID the community currently maintains is 10328.
Where to go from here¶
Each nettest's full algorithm is defined in the upstream nettests directory. The fields their output shares are defined in data-formats.