How we measure, and where we are wrong
This is the page that decides whether the rest of the site is worth anything. If something here is wrong, every number on the site is wrong with it.
The population we sample
A statistic is only as good as the list it is drawn from, so we name ours. For .cz the population is the CZ.NIC open data at stats.nic.cz, published under CC BY 3.0 CZ and attributed here and in SOURCES.md.
For .sk the authoritative file is the daily register export at sk-nic.sk, and its licence is not stated on the page. Until that licence is settled in writing, the .sk panel is not drawn and no .sk figure is published. If it turns out not to permit our use, the fallback is a .sk subset of the Common Crawl host index together with Majestic Million under CC BY 3.0, and this page will then say plainly that the .sk population is crawl based and not the full register.
The panel
From the population we draw a stratified random sample of 75 000 domains per top level domain, with the random seed and the draw date recorded. The panel then stays fixed, because a trend line drawn over a changing sample is not a trend line.
It is redrawn once a quarter with at least eighty percent overlap with the previous panel, and the redraw date is printed on every chart that crosses it.
How often we measure
5 000 domains a day, 2 500 per top level domain, spread over roughly six night hours at about two requests a second in total. The whole panel is refreshed once every thirty days and no single domain is touched more than once in thirty days.
What we leave out, and where it is printed
Four groups are excluded from the aggregates: domains that redirect to a different registrable domain, counted once under the target and never twice; parked pages matched against registrar parking templates; empty or default hosting pages; and domains we could not reach.
All four counts are printed next to every table. A denominator you cannot see is a denominator you cannot check.
How the numbers are computed
Usage is detected divided by successfully scanned. Market share is detected divided by the number scanned with any technology known in that category. The third column, change over thirty days in percentage points, is the one the comparable tools do not put in the main table.
Every value carries n, the number of domains behind it, and a standard error of the square root of p times one minus p, all divided by N. Anything with fewer than thirty detections is published as too few rather than as a falsely precise small number.
Only directly detected findings count; implied ones are excluded. The series is weekly and the caption says weekly in words, because our cadence is weekly and pretending to daily resolution would be the exact dishonesty we criticise.
Confidence levels
- certain
- A direct self declaration, for example a generator meta tag or a vendor header.
- likely
- Two or more independent weak signals agree.
- hint
- One weak signal. Useful, not proof, and labelled as such.
- implied
- Derived from a dependency rule, for example WordPress implies PHP. Shown as implied and excluded from the statistics, so no language is inflated by a rule instead of a measurement.
The signals we read, category by category
- Content management
- meta tag, file path, response header, cookie name
- E-commerce platform
- file path, response header, cookie name, script URL
- Server side language
- response header, cookie name, file path
- JavaScript framework
- script URL, markup marker, version banner
- CSS framework
- stylesheet or class, script URL
- Web server
- response header
- CDN and reverse proxy
- DNS record, response header
- Hosting provider
- IP allocation (ASN)
- DNS provider
- DNS record
- E-mail provider
- DNS record
- Certificate authority
- certificate field
- Analytics
- script URL, markup marker
Sources and licences
- webappanalyzer
- GPL-3.0. The open ruleset for international technologies. We pin one release and keep it on our own volume.
- Public Suffix List
- MPL 2.0. Mozilla snapshot, pinned. It decides what a registrable domain is, with no network call.
- iptoasn.com
- PDDL 1.0. The IP to ASN dump behind the hosting provider and the country of the IP allocation. Refreshed daily.
- CZ.NIC open data
- CC BY 3.0 CZ. The .cz population we draw the panel from. Attributed here and in SOURCES.md.
- SK-NIC domains.txt
- open question. The daily .sk register file. Its licence is not stated on the page, so the operator must settle it before the first survey run. Until then the .sk panel is not drawn.
- Cloudflare Radar
- CC BY-NC 4.0. Non commercial only, so it never enters this product. Internal reading at most.
- RIPEstat
- no redistribution. Its terms forbid redistribution and commercial use. Excluded for the same reason.
Weaknesses, said first
- We read one homepage. Not subpages, not subdomains, not anything behind a login.
- We do not execute JavaScript. Anything rendered only in the browser or loaded after an interaction is invisible to us.
- Detection fails on custom builds, on sites that strip their headers, and behind a CDN that hides the origin. We say so in the result instead of filling the gap with a guess.
- HTTP/3 is reported as advertised, because we read the Alt-Svc header and do not open a QUIC connection to verify it.
- Server country is the country of the IP allocation, not proof of where the machine physically stands.
- Content language without a lang attribute is an estimate with a score, never presented as a declaration.
- The ASN table is refreshed daily while the upstream refreshes hourly, so an IP that moved in the last day can be attributed to the wrong provider.
- History begins the day we first measure a domain and we never backfill, so for the first month the change columns say there is not enough history yet.
- The panel is 150 000 domains, not the whole Slovak and Czech web, and that is printed above every table with the draw date.
If we are wrong
Write to andrej@arling.sk with the domain and what is wrong. We check it, we correct it, and the correction is visible like any other change. A correction is not an embarrassment. A number nobody can question is.