About the Data
Methodology
Data is only useful when you know where it comes from. This page explains what each number on cdnping means and where its limits are.
Three data sources
1. Edge Probes
A scheduled task on Cloudflare Workers runs every 5 minutes, sending a keyless HTTPS request to each AI model API's official endpoint in turn (for example, GET https://api.openai.com/v1/models). We record the time from sending the request to receiving the response headers, along with the HTTP status code.
- Reachable: Returns any status code below 500. Unauthenticated requests returning 401 or 403 is normal and means the API gateway is online and handling requests.
- Unreachable: Returns 5xx, doesn't respond within 8 seconds, or fails to connect.
- Each round sends two consecutive requests to the same endpoint and keeps the faster one, reducing bias from the probe's own connection setup.
- The Cloudflare node that runs each task is assigned by the platform; the node code (e.g., LAX, HKG) is shown on the page.
Edge probes reflect the connectivity of the server-side gateway. They don't include model inference time and don't represent the latency you experience on your local network.
2. Visitor Tests
"Start speed test" on the home page sends requests directly from your browser to each target: the first request is recorded asFirst connection(including DNS resolution and the TCP and TLS handshakes); three more requests are then sent over the same connection, and the median is recorded asRound trip. Requests that take longer than 6 seconds are counted as failures.
When "Contribute anonymously to public stats" is checked, your browser submits the timing and success or failure of each target to us. The server only attaches the country/region, province, and carrier network number (ASN) provided by Cloudflare, and uses them to classify the carrier as China Telecom, China Unicom, China Mobile, etc. We do not store IP addresses; to prevent data stuffing, we keep only a daily-salted IP digest, deleted after 48 hours, for rate limiting.
No conclusions are shown for groups with fewer than 5 samples. The statistics window covers the past 7 days.
3. Official Status Pages
Every 15 minutes, we sync the current status and incident history from the public status pages of OpenAI, Anthropic, Moonshot AI, Groq, Cloudflare, and GitHub. Links to the original posts are kept in the incident list.
IP & network environment check
IP checkThe page has two parts: server-side IP intelligence and local browser checks.
IP intelligence (server-side)
- Multi-database geolocation: Cloudflare, ip-api, ipinfo, DB-IP, ipwho.is, GeoJS, IP.SB, MaxMind GeoLite (via RIPEstat), ipapi.is, IP2Location, ipapi.co, and freeipapi each report a country and city. The result is decided by majority vote on country, then by majority vote on city, and the confidence is the share of databases that agree with the resulting country. When you check your own IP, the databases that don't require a key are queried directly by your browser.
- IP range registration info: Uses the IANA RDAP bootstrap registry to find the relevant Regional Internet Registry (ARIN, RIPE NCC, APNIC, etc.) and looks up the network name, registrant organization, and registration country.
- Native / Broadcast: If the registration country matches the country from multi-database geolocation, it's a native IP; otherwise it's a broadcast IP. ARIN blocks geolocated to the US or Canada are treated as native.
- Risk signals and weights: Tor exit (any of Tor Project, proxycheck, StopForumSpam, or dan.me.uk, 60); proxy / VPN (ip-api 30, proxycheck 30, IP2Location 20, freeipapi 20, capped at 45 combined); proxycheck risk score ≥ 33 (risk score ÷ 5, capped at 20); datacenter signals (ip-api hosting 25, proxycheck Hosting 20,Hosting ASN list 15, registration info or user containing datacenter keywords 15, combined cap 35); StopForumSpam abuse records (cap 25); DNS blacklists DroneBL, SpamCop, Mailspike, Barracuda, UCEPROTECT, s5h (8 each, cap 24); classified by proxycheck as a business network with no datacenter traits 5; when AbuseIPDB is configured, reports in the last 90 days (confidence ÷ 3 + 5, cap 30) and usage type of data center or hosting (15); broadcast IP 10; large geolocation disagreement across databases 5. freeipapi's proxy flag is queried in your browser (20). IP purity tiers: ≥ 90 Clean, ≥ 70 Mostly clean, ≥ 40 Fair, otherwise High risk. The risk score is the sum of matched weights, capped at 100; "IP purity" = 100 − risk score.
Local browser check
- Mainland split routing: CDNs run by Chinese companies such as NetEase, Tencent, Douyin, Weibo, Youku, and Xiaohongshu return the client IP in response headers and allow web pages to read it via CORS. The browser requests each one twice, records the IP and round trip time each sees, and uses IPIP.NET to determine whether domestic traffic connects directly or is routed outside mainland China.
- Multi-exit routing: Requests several public CORS-enabled endpoints at once (the Cloudflare trace for Claude, ChatGPT, Grok, and 1.1.1.1, plus ipify, ipinfo, IP.SB, GeoJS, and BigDataCloud) and compares the exit IP and country each one sees.
- DNS leak: The browser resolves several random subdomains, then queries bash.ws Find out which DNS servers performed the resolution.
- WebRTC: Gathers candidate addresses from Cloudflare and Google STUN servers and compares the public address with the web exit IP.
- Latency profile: A relay is suspected when the browser-to-site round trip time (median of 5 samples) exceeds the exit TCP round trip time recorded by Cloudflare by more than 60 ms and is more than twice that value.
- Inferred engine version: Checks in turn for JavaScript / CSS features added in each version of Chromium, Gecko, and WebKit to infer an engine version range. A mismatch is flagged only when the UA version is more than 2 major versions above the feature-based upper bound, to allow for differences in when individual features shipped.
- Consistency score: Starting from 100 points, each "Critical" item deducts 20 points, each "Warning" deducts 10, and each "Info" deducts 3.
Browser fingerprint, font, and hardware information is computed and displayed locally only. It is never uploaded or stored.
Model monitor, Vendor changelog & Is it down?
- Model monitor: Every 30 minutes, we read the public OpenRouter API and record 5-minute / 30-minute / 1-day availability, latency, throughput, and quantization precision for each vendor's latest models on every inference provider; every 6 hours, we diff the model catalog to record new listings, delistings, price changes, and context changes.
- Vendor changelog: We fetch each vendor's official changelog, pricing page, and news in rotation (always respecting robots.txt and preferring official Markdown versions when available), extract the main text, diff it line by line, and record added and removed lines.
- Is it down?: Combines the official status page, our API probes, and user reports. When the number of reports in the past 1 hours is ≥ 5 and exceeds 3 times the usual hourly average plus 3, it is marked as "Many users reporting problems."
- Quota reset timeline: Events with reliable sources are added manually, and new reset announcements are detected automatically from official changelogs.
Metric definitions
- Median latency / P95: The 50th / 95th percentile of successful request durations within the time window.
- Reachability: Successful probes ÷ total probes.
- Success rate(visitor measurements): the share of requests completed within 6 seconds.
Limitations
- Edge probe locations are limited and can't cover every region.
- Visitor measurements are affected by visitors' own networks, proxies, and browser extensions, and samples are unevenly distributed. We use medians to reduce the impact of outliers, but this cannot fully eliminate bias.
- A reachable API gateway doesn't guarantee that model inference will succeed.
Open data
The latest status is published as JSON:/api/status. You're welcome to cite it; please credit cdnping.org as the source. Data is provided under CC BY 4.0 authorization.
Found a data issue? Email hello@cdnping.org.