A global network of edge locations lighting up across a dark map
// Opinion

Fifteen years of Cloudflare: what a network company got right before everyone else

This blog runs on Cloudflare Pages, in front of a Worker, behind their nameservers. It costs me almost nothing, it has never been the reason a reader could not reach a post, and I have never once had to think about a region, an instance size, or a load balancer. That is the pitch, and after nine years of using their products I still find it slightly unreasonable that it works.

So this is a seven part series, and I should say the bias out loud at the start: I am a fan. This first post is the appreciative one. The six that follow are about their products, vision and tools, particularly. Each takes one recent Cloudflare launch, works out what problem it actually solves, checks who else solves it, and says plainly where the competition is ahead. If a thing is good I will say so. If it is a beta with holes in it I will say that too.

The pattern: give away the thing everyone else is charging for#

Cloudflare launched publicly at TechCrunch Disrupt on 27 September 2010, out of a spam-tracking side project called Project Honey Pot that Matthew Prince and Lee Holloway had started in 2004.1 The company priced its IPO at $15 a share on 12 September 2019 and began trading on the NYSE the following day.2

The move that told you what kind of company it was going to be came in 2014. On 29 September that year, Cloudflare turned on Universal SSL for every customer including the free tier.3 At the time, HTTPS certificates cost money and required a dedicated IP address. Cloudflare used SNI to put many certificates on one IP and ECDSA to cut the CPU cost of the handshake, then gave it away. The number of HTTPS-capable sites on the internet roughly doubled overnight, from about two million to about four million.3

That is the pattern, repeated for a decade. Take something the industry treats as a premium line item, work out why it is expensive, “engineer the expense away”, then price it at zero and sell the layer above it.

  • 1.1.1.1, launched 1 April 2018 with address space from APNIC, shipped DNS-over-TLS and DNS-over-HTTPS at a time when encrypted DNS was a research topic, with a commitment never to write querying IPs to disk and an annual third-party audit.4
  • Encrypted Client Hello shipped across all plans on 29 September 2023, closing the last plaintext hole in TLS by hiding the destination hostname inside an encrypted inner ClientHello.5
  • R2, announced 28 September 2021, charges $0.015 per GB-month and zero egress fees, aimed squarely at the cloud industry’s most resented charge.6

The R2 one deserves a caveat, because it is the claim people repeat most loosely. Zero egress is real and material, but R2’s Class A operations at $4.50 per million are not cheap, and in November 2025 AWS launched flat-rate CloudFront plans with no overage charges, which blunts a lot of the bill-shock argument for CDN-fronted workloads.7 The honest version of the claim is narrower than the marketing: R2 wins decisively for high-egress, low-operation workloads, and loses on plenty of others.

The engineering underneath#

What makes the giveaway sustainable is that Cloudflare keeps rewriting its own foundations rather than buying capacity.

Workers, launched 29 September 2017 by Kenton Varda, put JavaScript on the edge using V8 isolates rather than containers, and built on the W3C Service Workers API instead of inventing a proprietary hook model.8 An isolate starts roughly a hundred times faster than a Node process in a container and uses an order of magnitude less memory at startup.9 Cloudflare is also straight about the trade: isolates are not guaranteed to persist and can be evicted, so global mutable state is unsafe.9 Durable Objects, in beta from 28 September 2020, were the answer to that, giving you a globally unique, single-location object with transactional storage co-located with the compute.10 Almost every product in the rest of this series is built on those two primitives.

Pingora is the one I find most impressive as pure engineering. In September 2022 Cloudflare described replacing NGINX with a proxy they wrote in Rust, serving over a trillion requests a day with roughly 70% less CPU and 67% less memory than the setup it replaced.11 The root cause they were chasing was mundane and beautiful: NGINX’s per-worker connection pools fragment reuse, so a request landing on the wrong worker opens a new upstream connection. One customer’s connection reuse went from 87.1% to 99.92%, a 160-fold drop in new connections.11

And they are early on post-quantum in a way almost nobody else is. As of April 2026, over 65% of human traffic to Cloudflare is already post-quantum encrypted, with a published roadmap targeting full post-quantum security by 2029.12 Most enterprises I talk to are still at the inventory stage.

The consistent thing across Universal SSL, 1.1.1.1, ECH and post-quantum is that Cloudflare keeps deploying security upgrades that individual site owners would never get around to, by making them the default at the layer above.

Scale, and what scale costs#

The network reaches 337 cities, sits within 50ms of 95% of the world’s internet users, holds more than 13,000 interconnections, and averages 102 million HTTP requests per second.13 Roughly one site in five on the internet sits behind it.14

That scale shows up most clearly in DDoS. In December 2025, Cloudflare mitigated a 31.4 Tbps attack that lasted 35 seconds, part of a campaign from the Aisuru-Kimwolf botnet running largely on infected Android TV devices, which across its run peaked at 9 billion packets per second and 205 million requests per second. It was detected and mitigated automatically, with no human in the loop.15 Across 2025 they mitigated 47.1 million DDoS attacks, an average of 5,376 an hour.15

The same scale is also the risk, and Cloudflare’s response to that is the part of their culture I would most like the rest of the industry to copy. When they break, they publish. On 18 November 2025 a database permissions change caused a ClickHouse query to return duplicate column metadata, which doubled the size of a Bot Management feature file, which exceeded a hard-coded 200-feature memory limit, which panicked the proxy. Core traffic stopped for five hours and forty-six minutes, and Matthew Prince wrote it up himself with the full causal chain and the sentence “in the last 6+ years we’ve not had another outage that has caused the majority of core traffic to stop flowing.”16 On 20 February 2026 a cleanup task in the Addressing API read an empty parameter as “delete all” and withdrew about 1,100 of 4,306 BYOIP prefixes for six hours.17

Those postmortems are better than most vendors’ marketing. They are also a reminder that when 20% of the web sits behind one control plane, a bad config push is a systemic event. The December 2025 “Code Orange: Fail Small” plan, which extends staged rollout controls to configuration changes and not just software, is the right correction, and it exists because the failure mode is structural rather than accidental.18

Pre-AI to post-AI#

The pivot is not the AI products, it is the traffic. In the second quarter of 2026, for the first time, more than half of the traffic on Cloudflare’s network was non-human.19 Their 2026 threat report puts 94% of all login attempts as bot-originated, with 63% of logins using credentials already compromised elsewhere within the previous three months.20

A company that sells “protect and accelerate what humans request” has to become something else when humans are the minority. Cloudflare’s answer has two halves.

The first is economic. On 1 July 2025 they became the first major infrastructure provider to block AI crawlers by default on new domains, and launched Pay Per Crawl with more than forty publishers signed on.21 In September 2025 they extended robots.txt with a Content Signals Policy expressing not just whether content may be fetched but how it may be used.22 Then on 1 July 2026 they moved from Pay Per Crawl to Pay Per Use, paying publishers when content generates value in an AI answer rather than when a page is fetched, and set a 15 September 2026 deadline after which mixed-use crawlers that do not separate search from training from agent use get blocked by default on any page carrying advertising.23 Their stated justification includes a detail worth sitting with: over half of AI crawler traffic re-fetches pages that have not changed.23

The second half is the developer platform, which is where the rest of this series lives. Workers AI and AI Gateway launched together on 27 September 2023.24 Agents Week in April 2026 shipped Sandboxes to GA, Durable Object Facets, Cloudflare Mesh, Agent Memory, Browser Run and about fifteen other things.25 August 2026 added Cloudflare OS, AI Search, Kitesurf, Radar Researcher, WebMCP and Cloudflare Computer inside a single week.

Where I would push back#

Three things temper the admiration.

  1. The financials are two different stories. Q2 2026 revenue was $696.1 million, up 36% year on year, with full-year guidance raised to roughly $2.87 billion.26 That is excellent. GAAP operating loss in the same quarter was $205.7 million against non-GAAP operating income of $96.1 million, a gap driven substantially by the May 2026 restructuring in which Cloudflare cut 1,100 jobs, about 20% of the workforce, with Prince attributing it to AI-driven productivity gains.27 You can believe the productivity story and still notice that “AI made these roles obsolete” is a convenient frame for a cost action, and that the company projecting more employees in 2027 than 2026 slightly undercuts it.

  2. Concentration is a real security concern, not a theoretical one. If you are a CISO, the correct reading of 18 November 2025 is not “Cloudflare had an outage.” It is “our availability has a dependency we did not model, shared with a fifth of the internet, and our failover plan assumed the failure would be regional.” Multi-CDN is expensive and annoying. It is also the only answer to that specific question.

  3. Competitors are closer than the fandom admits. Akamai’s EdgeWorkers documents sub-five-millisecond cold starts on a larger PoP footprint.28 Fastly’s Compute uses a fresh WebAssembly instance per request, which is arguably a stronger isolation story than V8 isolates, and its free tier is more generous on request count.29 AWS’s flat-rate CloudFront plans are a direct copy of Cloudflare’s pricing pitch.7 Cloudflare’s advantage is breadth and coherence. They do not hold a monopoly on any single capability in that list.

What comes next in this series#

Six posts, one product each, in no particular order, written the way I would evaluate or test them than the way I would tweet about them:

  1. Cloudflare OS, the internal agent platform they open-sourced, and the capability model underneath it
  2. AI Search, managed retrieval that bundles the parts you would otherwise assemble yourself
  3. Kitesurf, a browser engine written from scratch for agents rather than people
  4. Radar Researcher, natural language over fifteen years of internet measurement data
  5. WebMCP, MCP Portal and WriteGuard, the governance layer for agent write access
  6. Cloudflare Computer, the argument that giving every agent a container does not scale

The thread running through all six is the same one running through Universal SSL in 2014: work out what everyone is paying too much for, engineer the cost out, then make it the default.


  1. Our Story, Cloudflare. ↩︎

  2. Cloudflare Announces Pricing of Initial Public Offering, 12 September 2019. ↩︎

  3. Introducing Universal SSL, Cloudflare blog, 29 September 2014. ↩︎ ↩︎

  4. Announcing 1.1.1.1, Cloudflare blog, 1 April 2018. ↩︎

  5. Encrypted Client Hello, the last puzzle piece to privacy, Cloudflare blog, 29 September 2023. ↩︎

  6. Introducing R2 Object Storage, Cloudflare blog, 28 September 2021; R2 pricing↩︎

  7. CloudFront flat-rate pricing plans, AWS documentation; announcement, November 2025. ↩︎ ↩︎

  8. Introducing Cloudflare Workers, Cloudflare blog, 29 September 2017. ↩︎

  9. How Workers works, Cloudflare Workers documentation. ↩︎ ↩︎

  10. Introducing Workers Durable Objects, Cloudflare blog, 28 September 2020. ↩︎

  11. How we built Pingora, the proxy that connects Cloudflare to the Internet, Cloudflare blog, 14 September 2022. ↩︎ ↩︎

  12. Cloudflare targets 2029 for full post-quantum security, Cloudflare blog, 7 April 2026. ↩︎

  13. The Cloudflare global network. Cloudflare’s about page states 335 cities in 125+ countries; the two pages differ slightly. ↩︎

  14. About Cloudflare↩︎

  15. DDoS threat report for 2025 Q4, Cloudflare blog, 5 February 2026. ↩︎ ↩︎

  16. Cloudflare outage on November 18, 2025, Cloudflare blog, 18 November 2025. ↩︎

  17. Cloudflare outage on February 20, 2026, Cloudflare blog, 21 February 2026. ↩︎

  18. Code Orange: our resilience plan to fail small, Cloudflare blog, 19 December 2025. ↩︎

  19. Cloudflare Q2 2026 earnings call, 6 August 2026, management commentary; transcript↩︎

  20. Cloudflare 2026 Threat Report, 3 March 2026. ↩︎

  21. Content Independence Day: no AI crawl without compensation, Cloudflare blog, 1 July 2025. ↩︎

  22. Cloudflare gives creators new tool to control use of their content, 24 September 2025. ↩︎

  23. Your content, your rules, Cloudflare press release, 1 July 2026. ↩︎ ↩︎

  24. Workers AI: serverless GPU-powered inference and Announcing AI Gateway, Cloudflare blog, 27 September 2023. ↩︎

  25. Building the agentic cloud: everything we launched during Agents Week 2026, Cloudflare blog, 20 April 2026. ↩︎

  26. Cloudflare Announces Second Quarter 2026 Financial Results, 6 August 2026. ↩︎

  27. Cloudflare says AI made 1,100 jobs obsolete even as revenue hit a record high, TechCrunch, 8 May 2026. ↩︎

  28. Welcome to EdgeWorkers, Akamai TechDocs. ↩︎

  29. Fastly pricing↩︎

// where readers and bots are
United States of America: 89,874 crawler requestsNetherlands: 28,963 crawler requestsItaly: 25,403 crawler requestsSweden: 16,547 crawler requestsBrazil: 12,242 crawler requestsFrance: 11,893 crawler requestsGermany: 11,153 crawler requestsNorway: 5,430 crawler requestsPoland: 5,370 crawler requestsThailand: 4,958 crawler requestsSwitzerland: 4,891 crawler requestsPeople's Republic of China: 3,783 crawler requestsSingapore: 2,674 crawler requestsCanada: 3,636 crawler requestsSpain: 3,290 crawler requestsMalaysia: 1,733 crawler requestsHong Kong: 1,446 crawler requestsBulgaria: 1,490 crawler requestsUnited Kingdom: 1,381 crawler requestsIndia: 975 crawler requestsIndonesia: 991 crawler requestsTaiwan: 977 crawler requestsSaudi Arabia: 908 crawler requestsJapan: 579 crawler requestsSouth Korea: 723 crawler requestsFinland: 553 crawler requestsAustralia: 404 crawler requestsLithuania: 543 crawler requestsSouth Africa: 517 crawler requestsVietnam: 386 crawler requestsBelgium: 439 crawler requestsRussia: 415 crawler requestsIsrael: 395 crawler requestsNew Zealand: 342 crawler requestsTurkey: 211 crawler requestsMexico: 168 crawler requestsIreland: 139 crawler requestsBangladesh: 113 crawler requestsPakistan: 84 crawler requestsArgentina: 94 crawler requestsPortugal: 85 crawler requestsIraq: 70 crawler requestsVenezuela: 65 crawler requestsMorocco: 64 crawler requestsAlgeria: 70 crawler requestsColombia: 49 crawler requestsUkraine: 67 crawler requestsChile: 35 crawler requestsUnited Arab Emirates: 48 crawler requestsLuxembourg: 57 crawler requestsSlovenia: 53 crawler requestsEcuador: 30 crawler requestsPhilippines: 35 crawler requestsDenmark: 43 crawler requestsRomania: 37 crawler requestsAustria: 29 crawler requestsNorth Macedonia: 27 crawler requestsJordan: 16 crawler requestsUzbekistan: 26 crawler requestsKenya: 13 crawler requestsNepal: 22 crawler requestsEgypt: 11 crawler requestsBolivia: 20 crawler requestsLatvia: 18 crawler requestsNigeria: 18 crawler requestsPeru: 18 crawler requestsUruguay: 18 crawler requestsKazakhstan: 17 crawler requestsTunisia: 17 crawler requestsParaguay: 14 crawler requestsPalestine: 13 crawler requestsLebanon: 10 crawler requestsOman: 10 crawler requestsSyria: 9 crawler requestsGreece: 7 crawler requestsAlbania: 6 crawler requestsCzech Republic: 6 crawler requestsGabon: 6 crawler requestsMyanmar: 6 crawler requestsPanama: 6 crawler requestsSenegal: 6 crawler requestsArmenia: 5 crawler requestsAngola: 5 crawler requestsJamaica: 5 crawler requestsKyrgyzstan: 5 crawler requestsMoldova: 5 crawler requestsQatar: 5 crawler requestsCosta Rica: 4 crawler requestsDominican Republic: 4 crawler requestsHonduras: 4 crawler requestsHungary: 4 crawler requestsKuwait: 4 crawler requestsTrinidad and Tobago: 4 crawler requestsRepublic of the Congo: 3 crawler requestsCroatia: 3 crawler requestsCambodia: 3 crawler requestsTogo: 3 crawler requestsKosovo: 3 crawler requestsBurkina Faso: 2 crawler requestsBelarus: 2 crawler requestsGhana: 2 crawler requestsGuyana: 2 crawler requestsMalta: 2 crawler requestsPuerto Rico: 2 crawler requestsSlovakia: 2 crawler requestsEl Salvador: 2 crawler requestsBahrain: 1 crawler requestsThe Bahamas: 1 crawler requestsBelize: 1 crawler requestsDemocratic Republic of the Congo: 1 crawler requestsIvory Coast: 1 crawler requestsCyprus: 1 crawler requestsFiji: 1 crawler requestsIran: 1 crawler requestsIceland: 1 crawler requestsLaos: 1 crawler requestsSri Lanka: 1 crawler requestsMadagascar: 1 crawler requestsMongolia: 1 crawler requestsMauritania: 1 crawler requestsMauritius: 1 crawler requestsSomalia: 1 crawler requestsUnited States of America: 2,550 page viewsBrazil: 90 page viewsThailand: 310 page viewsPeople's Republic of China: 220 page viewsSingapore: 1,190 page viewsCanada: 170 page viewsMalaysia: 110 page viewsHong Kong: 130 page viewsIndia: 240 page viewsIndonesia: 10 page viewsTaiwan: 10 page viewsJapan: 180 page viewsAustralia: 140 page viewsVietnam: 120 page viewsNew Zealand: 20 page viewsMexico: 20 page viewsIreland: 10 page viewsBangladesh: 10 page viewsPakistan: 30 page viewsIraq: 10 page viewsVenezuela: 10 page viewsMorocco: 10 page viewsColombia: 20 page viewsChile: 30 page viewsUnited Arab Emirates: 10 page viewsEcuador: 20 page viewsPhilippines: 10 page viewsJordan: 10 page viewsKenya: 10 page viewsEgypt: 10 page viewsAzerbaijan: 20 page viewsEthiopia: 10 page viewsSerbia: 10 page viewsGeorgia: 20 page viewsNicaragua: 10 page views
5,780 page views 247,448 crawler & bot requests each scaled to its own maximum full breakdown →