Skip to content
Observatory

The state of post-quantum readiness on the web

Each day we measure fixed panels of public hosts for hybrid key exchange (X25519MLKEM768), certificate posture, and whether they offer and honour session resumption, then publish the trend. Read-only handshakes, a restrained probing policy, and an open methodology.

Web panel · hybrid KEX adoption · 2026-10-19

72.7%

48 of 66 reachable hosts negotiated X25519MLKEM768

Updated 2026-10-19

Collection methodology change

The authenticated collector requires a completed TLS 1.3 handshake and a valid certificate chain and hostname. Earlier probes could count TLS 1.2 or certificate-invalid endpoints as reachable. Excluding those endpoints changes the denominator: a change in adoption percentage can reflect the measurement rules, rather than a server migration. Historical and authenticated-collector percentages are not directly comparable. The first verified full production collection under these rules completed on 11 October 2026 at 19:00 UTC. Its records are unsigned telemetry, not issuer-authenticated evidence.

Device compatibility remains unknown without representative client and device measurements; this panel measures server behavior from one collector.

Collection rules and limits →

48

Migrated

15

Classical

3

Regressed

4

Unreachable

Session resumption

59of 59

Issues a ticket

Offers resumption at all, after one HEAD request.

38of 66

Without being asked

Sends the ticket on a connection that sends no request.

54of 59

Resumes when offered

Accepts its own ticket back at the same address and SNI.

Each count is shown over the hosts that were actually asked, because the three questions reach three different populations: a host that issues no ticket is never offered one back, so it cannot be said to have refused. Hosts last measured before 28 August 2026 are in none of these counts.

Adoption over time

Read this series with the collection methodology change above; changes across collection methods do not establish adoption or regression.

07-25
07-26
07-27
07-28
07-29
07-30
07-31
08-01
08-02
08-03
08-04
08-05
08-06
08-07
08-08
08-09
08-10
08-11
08-12
08-13
08-14
08-15
08-16
08-17
08-18
08-19
08-20
08-21
08-22
08-23
08-24
08-25
08-26
08-27
08-28
08-29
08-30
08-31
09-01
09-02
09-03
09-04
09-05
09-06
09-07
09-08
09-09
09-10
09-11
09-12
09-13
09-14
09-15
09-16
09-17
09-18
09-19
09-20
09-21
09-22
09-23
09-24
09-25
09-26
09-27
09-28
09-29
09-30
10-01
10-02
10-03
10-04
10-05
10-06
10-07
10-08
10-09
10-10
10-11
10-12
10-13
10-14
10-15
10-16
10-17
10-18
10-19

Adoption by category

CDN / edge
100% · 4/4
Messaging / privacy
100% · 4/4
News / media
100% · 4/4
Cloud / SaaS
69% · 11/16
Consumer web
67% · 12/18
Measurement / research
67% · 2/3
Developer platform
60% · 6/10
Payments
50% · 1/2
Security / PKI
44% · 4/9

Regression detected

3 hosts regressed: they spoke post-quantum and stopped. Use the “Regressed” filter below.

70 of 70 hosts

HostStatusGroupTLSCertTicketResumesWhy
cloudflare.comCDN / edgeHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
akamai.comCDN / edgeHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
fastly.comCDN / edgeHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
cloudflare-dns.comCDN / edgeHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesyes
amazonaws.comCloud / SaaSHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
cloud.google.comCloud / SaaSHybridX25519MLKEM768TLSv1.3---
azure.microsoft.comCloud / SaaSHybridX25519MLKEM768TLSv1.3sha384WithRSAEncryptionyesunaskedyes
digitalocean.comCloud / SaaSHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
heroku.comCloud / SaaSClassicalX25519TLSv1.3ecdsa-with-SHA384yesunaskedyes
vercel.comCloud / SaaSHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
netlify.comCloud / SaaSClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedno
wordpress.comCloud / SaaSHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
shopify.comCloud / SaaSHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
salesforce.comCloud / SaaSHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
oracle.comCloud / SaaSUnreachable-----
ibm.comCloud / SaaSHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
adobe.comCloud / SaaSHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
dropbox.comCloud / SaaSClassicalX25519TLSv1.3ecdsa-with-SHA384yesyes
slack.comCloud / SaaSClassicalX25519TLSv1.3sha256WithRSAEncryptionyesyes
zoom.usCloud / SaaSHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesyes
letsencrypt.orgSecurity / PKIClassicalX25519TLSv1.3ecdsa-with-SHA384yesunaskedno
digicert.comSecurity / PKIHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
sectigo.comSecurity / PKIUnreachable-----
globalsign.comSecurity / PKIUnreachable-----
okta.comSecurity / PKIHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
auth0.comSecurity / PKIHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesyes
crowdstrike.comSecurity / PKIHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
paloaltonetworks.comSecurity / PKIRegressedX25519TLSv1.3---
fortinet.comSecurity / PKIClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedyes
signal.orgMessaging / privacyHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
proton.meMessaging / privacyHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesyes
telegram.orgMessaging / privacyHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedno
discord.comMessaging / privacyHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
stripe.comPaymentsClassicalX25519TLSv1.3ecdsa-with-SHA384yesunaskedyes
paypal.comPaymentsHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesyes
github.comDeveloper platformClassicalX25519TLSv1.3ecdsa-with-SHA256yesunaskedno
gitlab.comDeveloper platformHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesyes
stackoverflow.comDeveloper platformHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesyes
npmjs.comDeveloper platformHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
nodejs.orgDeveloper platformHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
python.orgDeveloper platformHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
kernel.orgDeveloper platformClassicalX25519TLSv1.3ecdsa-with-SHA384yesunaskedyes
debian.orgDeveloper platformHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
ubuntu.comDeveloper platformClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedyes
mozilla.orgDeveloper platformRegressedX25519TLSv1.3---
censys.ioMeasurement / researchHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesyes
shodan.ioMeasurement / researchHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
ssllabs.comMeasurement / researchClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedyes
google.comConsumer webHybridX25519MLKEM768TLSv1.3---
youtube.comConsumer webHybridX25519MLKEM768TLSv1.3---
facebook.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
instagram.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
x.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesyes
linkedin.comConsumer webClassicalX25519TLSv1.3---
wikipedia.orgConsumer webHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
reddit.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
amazon.comConsumer webClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedyes
apple.comConsumer webHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA256yesyes
microsoft.comConsumer webHybridX25519MLKEM768TLSv1.3sha384WithRSAEncryptionyesunaskedyes
netflix.comConsumer webClassicalX25519TLSv1.3ecdsa-with-SHA384yesyes
ebay.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
yahoo.comConsumer webClassicalX25519TLSv1.3sha256WithRSAEncryptionyesunaskedyes
bing.comConsumer webUnreachable-----
duckduckgo.comConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedno
spotify.comConsumer webRegressedX25519TLSv1.3---
twitch.tvConsumer webHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
cnn.comNews / mediaHybridX25519MLKEM768TLSv1.3ecdsa-with-SHA384yesunaskedyes
bbc.comNews / mediaHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
nytimes.comNews / mediaHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes
theguardian.comNews / mediaHybridX25519MLKEM768TLSv1.3sha256WithRSAEncryptionyesunaskedyes

Methodology

Once a day we open two or three read-only TLS connections to each host in a fixed public panel. The first sends nothing at all, and records whether the server selects the hybrid group X25519MLKEM768, the negotiated TLS version, the leaf certificate’s signature algorithm and expiry, and whether it volunteers a session ticket. Hosts that volunteer none get a second connection carrying a single HEAD /, because many servers withhold a ticket until a request arrives. The last connection offers that ticket back, to the same address and the same server name that issued it, and records whether the server resumes. We send no credentials, we never offer a ticket to a host that did not issue it, we honor connection refusals, and we do not attempt any exploitation. This is the same class of measurement public scanners such as SSL Labs and Censys perform.

The panel and the probing policy live in the open-source pqc-observatory repository, where anyone can propose a host. To have a host removed from the panel, open a pull request or contact [email protected] and we will drop it within one measurement cycle.

Full methodology, and what this number is not →