Cloudflare R2 alternatives: where to go, and how to get your data out
Eight S3-compatible storage services compared, three cost scenarios worked out, and an eight-step exit plan.
The short answer: go with Backblaze B2 or Hetzner Object Storage if your R2 bill comes from operations, since neither charges for API calls. Pick IDrive e2 or B2 for backups you rarely read, at $6 and $6.95 per TB per month versus $15 on R2. Choose Hetzner or OVHcloud if your data has to sit with a European provider, and Bunny Storage plus its CDN if you serve files to a big audience. Only move to AWS S3 if you need versioning or Object Lock and can live with paid egress. One thing before you start: Super Slurper, Cloudflare's migration tool, only moves data into R2. To get out, you use rclone. We compared all eight destinations against their official 2026 pricing.
The ranking is editorial: a sponsored spot is always labeled on its card, and no affiliate link changes a score.
Why teams leave R2, free egress and all
R2 charges $0.015 per GB-month for Standard storage and never bills outbound bandwidth. For a site that serves lots of files, that's often unbeatable. People leave for other workloads: an app that writes constantly, archives nobody reads, or a team that needs specific S3 features. Here are the six reasons that keep coming up, each with the numbers.
Class A operations run up the bill
R2 splits requests into two classes. Class A covers anything that changes state: writing an object, creating a bucket, and also listing a bucket. It costs $4.50 per million requests on Standard. Class B (reading an object) costs $0.36 per million. The monthly free tier covers 1 million Class A and 10 million Class B operations. So an app writing 50 million objects a month pays (50 − 1) × $4.50 = $220.50 in writes alone. Backup tools that chunk files into small blocks, thumbnail generators and anything that lists a bucket every minute all fall into this trap. In Cloudflare community threads, one user reports a Class A line above $10 while believing they never left the free tier; others run a kill-switch Worker that checks their Class A and Class B counts every ten minutes and cuts traffic before the bill does.
Twice the price for cold data
At $15 per TB per month, R2 costs about double Backblaze B2 ($6.95), IDrive e2 ($6), Wasabi ($7.99) or Hetzner (€6.49 with 1 TB of egress included). For backups or archives you almost never read, free egress buys you nothing, and you pay twice for a perk you don't use. R2's Infrequent Access class drops to $10 per TB, but it has a 30-day minimum per object, a $0.01 per GB retrieval fee, and no free tier.
Missing S3 features
R2 speaks the S3 API, but not all of it. R2 has its own bucket locks, which block deleting or overwriting objects for a set period or indefinitely. But Cloudflare's docs list these as unimplemented in its S3 API: versioning, the S3 Object Lock API (the one backup tools call to set immutable copies against ransomware), ACLs and bucket policies, replication, object tagging, static website hosting, SSE-KMS encryption and S3 event notifications. If your backup tool requires S3 Object Lock, or your security audit asks for a bucket policy or versioning, it won't work with R2.
Everything with one vendor
Plenty of teams run DNS, CDN, Workers and storage on the same Cloudflare account. When R2 goes down, everything that depends on it goes with it. In 2025, a human error while blocking a phishing site took R2 offline for 59 minutes, and every operation failed. No data was lost, but an hour without files is enough to break a site or an app. Splitting storage from the rest of your setup cuts that dependency.
Limits you find in production
The public r2.dev URL is rate limited, and Cloudflare says it isn't meant for production: you need your own custom domain. R2 accepts one write per second to the same object key, and returns a 429 error beyond that. Single-part uploads cap at 5 GiB, so anything bigger needs multipart. None of this is a dealbreaker, but each one has forced teams to rework their code.
Data residency with a European provider
R2 offers an "eu" jurisdiction that guarantees objects stay in the EU. Without it, location hints are best effort, not a guarantee. Either way, the vendor is a US company. If a client, a privacy officer or a public tender asks for a European host, Hetzner (Germany and Finland), OVHcloud (France) or Bunny (Slovenia) answer that question better.
You're leaving because… go to…
The right R2 alternative depends on what's costing you, or blocking you, today. Usually only one line applies. Each card links to the full profile below.
Neither charges for API calls. 50 million writes a month cost $0 there instead of $220.50.
You store backups you rarely readIDrive e2 or Backblaze B2$6 and $6.95 per TB per month, versus $15. B2 has no minimum storage duration.
You need a European providerHetzner or OVHcloudPriced in euros, with data centers in Germany, Finland and France.
You serve files to a big audienceBunny Storage with Bunny CDNTraffic from storage to the CDN is free; delivery costs $0.01 per GB in Europe and North America.
You need versioning or Object LockAWS S3The full S3 feature set, but egress costs $0.09 per GB.
You want free egress without CloudflareTigris or OVHcloudBoth advertise no egress fees. Tigris bills operations, like R2.
Cloudflare R2 alternatives, one by one
For each service: why move there, who it's for, its catch, how to migrate from R2, and what it costs. All of them speak the S3 API unless noted, which means rclone can copy to them. Prices are what each vendor lists in 2026, before tax: in dollars for US vendors, in euros for Hetzner and OVHcloud, which bill in euros.
The tools
Backblaze B2: the drop-in replacement with free API calls
Best default pickWhy move to B2. Backblaze charges $6.95 per TB per month, less than half of R2. More important, Class A, B and C transactions are free: writing, listing and reading cost nothing. Only Class D (a handful of management calls) is billed, at $0.004 per 10,000, with 2,500 free per day. For a write-heavy app, the operations line on your bill disappears.
Who it's for. Teams storing several TB of backups, exports or media, and teams whose R2 bill comes from writes.
Who it's not for. A site that serves ten times what it stores each month: free egress stops at three times your average storage, then costs $0.01 per GB.
The catch. Egress isn't unlimited, and performance depends on the workload. One self-hoster found B2 far too slow as Nextcloud external storage. The Overdrive plan ($15 per TB with unlimited egress) targets very large volumes, not a small team.
How to migrate. Create a bucket and an application key, then add B2 as a second S3 remote in rclone. B2 has no minimum storage duration, so you can trial one folder and delete it with no penalty. The first 10 GB are free.
Price. $6.95 per TB per month, 10 GB free, free egress up to 3x your storage, then $0.01 per GB.
- Storage
- $6.95/TB/month
- Operations
- Class A, B, C free
- Best for
- backups, apps
- Catch
- free egress up to 3x storage
Hetzner Object Storage: the cheapest in Europe
European pickWhy move to Hetzner. For €6.49 a month before VAT, you get 1 TB stored and 1 TB of egress. Past that, storage runs about €6.49 per TB and egress €1 per TB. Ingress and API requests are free. Your data stays in Falkenstein or Nuremberg (Germany) or Helsinki (Finland), with a German host.
Who it's for. Teams that want a low, readable price and data in Europe, serving reasonable volumes. With 1 TB stored and 10 TB of egress, the bill lands around €15.49. If you already run Hetzner servers, our Hetzner alternatives guide covers the rest of the platform.
Who it's not for. Apps storing millions of tiny files: every object under 64 KB is billed as 64 KB. And very large projects: a bucket caps at 100 TB and 50 million objects, with 100 buckets per account.
The catch. Account approval has a reputation for being strict, and status notes have warned that high Object Storage traffic may lead to timeouts. Billing starts as soon as a bucket exists, even an empty one.
How to migrate. Create the bucket in the region closest to your users, generate S3 keys in the console, and use rclone's generic S3 remote. Bundle small files first if you can.
Price. €6.49 a month before VAT with 1 TB stored and 1 TB egress; then about €6.49 per TB stored and €1 per TB of egress.
- Base
- €6.49/month, 1 TB + 1 TB egress
- API
- free
- Best for
- EU data residency
- Catch
- objects under 64 KB billed as 64 KB
IDrive e2: the cheapest TB for backups
Cheapest per TBWhy move to IDrive e2. It has the lowest per-TB price on this list: $6 a month. API calls aren't charged, and egress is free up to three times what you store. Paid yearly, 1 TB costs $59.50 a year, and the first year is often on sale at half price.
Who it's for. Server, NAS and workstation backups, plus multi-TB archives you keep for a long time. 5 TB comes to $30 a month, versus $75 on R2.
Who it's not for. Small volumes: the minimum charge is 1 TB, so 50 GB costs the same as 1 TB.
The catch. Past three times your storage, egress costs $0.01 per GB. A site serving 10 TB a month from 1 TB stored would pay $6 + $70 = $76.
How to migrate. Start the 10 GB free trial to validate your rclone setup on one folder, then run the full copy. rclone's generic S3 remote works with the endpoint of your region.
Price. $6 per TB per month (1 TB minimum), or $59.50 a year for 1 TB; free egress up to 3x your storage.
- Storage
- $6/TB/month
- Minimum
- 1 TB billed
- Best for
- backups, archives
- Catch
- overpriced under 1 TB
Wasabi: flat pricing, if you store more than you serve
Most predictable billWhy move to Wasabi. Wasabi charges $7.99 per TB per month with no egress or API fees as long as your monthly downloads don't exceed what you store. Your bill is one line: storage.
Who it's for. Backups and archives over 1 TB, kept longer than three months and rarely read. 5 TB comes to $39.95 a month.
Who it's not for. A busy public site: if egress exceeds storage, Wasabi may throttle your service. And small projects: the minimum charge is 1 TB. One developer ended up paying about $8 a month to store 10 GB.
The catch. Every object is billed for at least 90 days. A file deleted after a week still costs three months, so it's a poor fit for temp files.
How to migrate. rclone has a ready-made Wasabi profile. Before copying, check that your lifecycle rules don't delete anything before 90 days, or you'll pay for ghost storage.
Price. $7.99 per TB per month, 1 TB minimum, 90-day minimum per object; egress and API free within your stored volume.
- Storage
- $7.99/TB/month
- Egress
- free up to stored volume
- Best for
- archives over 1 TB
- Catch
- 90-day minimum per object
OVHcloud Object Storage: free egress, hosted in France
French pickWhy move to OVHcloud. On one key point it's the closest thing to R2: OVHcloud markets its S3-compatible Object Storage with no egress fees. Standard storage in a single zone runs about €0.0071 per GB-month, roughly €7 per TB. The three-zone version costs about €0.014 per GB, close to R2's price, with better resilience.
Who it's for. Companies that want a French host, and sites serving lots of files without paying for egress. 1 TB stored and 10 TB served comes to about €7.10 a month.
Who it's not for. Teams that want a dead-simple console and a five-minute setup: the service lives inside OVHcloud's Public Cloud, with its own projects and vocabulary.
The catch. Pricing is spread across several classes and zones, and the gap between them is two to one, so read carefully. The single-zone option doesn't survive a data center outage.
How to migrate. OVHcloud publishes an official guide for migrating S3 data to its Object Storage with rclone. Create a Public Cloud project, an S3 user and a bucket, then follow the guide with your R2 remote as the source.
Price. About €0.0071 per GB-month in one zone, about €0.014 across three zones; no egress fees advertised.
- Storage
- ≈ €7/TB/month (1 zone)
- Egress
- advertised as free
- Best for
- hosting in France
- Catch
- complex price grid
Bunny Storage: built to serve files through a CDN
Best for deliveryWhy move to Bunny. If you use R2 to serve images, video or downloads behind a CDN, Bunny gives you both pieces from a European (Slovenian) company. Standard storage costs $0.01 per GB per region, traffic from storage to Bunny CDN is free, and there are no API fees. CDN delivery costs $0.01 per GB in Europe and North America.
Who it's for. Media sites, image-heavy stores and video course platforms that want one vendor to store and deliver. Our CDN comparison puts Bunny next to the other networks.
Who it's not for. Heavy delivery volumes: 1 TB stored and 10 TB delivered in Europe cost about $10 + $100 = $110 a month, while R2 stays at $15. Bunny wins on having one vendor for storage and delivery, not on this case.
The catch. The pricing page doesn't present Bunny Storage as S3-compatible, so check the access method before planning your migration. Replication costs extra: $0.02 per GB for two regions, $0.025 for three. Edge SSD storage runs $0.02 per GB per region.
How to migrate. Create a storage zone, connect it to a CDN pull zone, copy your files, then point your subdomain at the CDN. A 14-day trial with no credit card lets you test the path.
Price. $0.01 per GB per month for one region, $1 monthly minimum; CDN at $0.01 per GB in Europe and North America.
- Storage
- $0.01/GB per region
- To the CDN
- free traffic
- Best for
- media served to a big audience
- Catch
- delivery billed per GB
Tigris: free egress, designed for many regions
Closest to R2Why move to Tigris. Tigris follows R2's model (free egress, billed operations) without depending on Cloudflare. It adds what R2 lacks for cold data: an archive tier at $0.004 per GB-month, on top of Standard at $0.02 and Infrequent Access at $0.01. It's designed to serve data across regions worldwide.
Who it's for. Apps serving lots of files to users on several continents that want to keep egress free. 1 TB stored and 10 TB served cost $20.
Who it's not for. Write-heavy apps: Class A costs $5 per million, a bit more than R2. 50 million writes a month come to about $250. One developer left Tigris for exactly that reason: per-request charges.
The catch. Standard storage costs $20 per TB, more than R2. The free tier is small: 5 GB, 10,000 Class A and 100,000 Class B requests. Archive has a 90-day minimum, Infrequent Access 30 days.
How to migrate. Tigris speaks S3, so one rclone remote is enough. For archives, copy straight into the archive tier rather than moving objects later.
Price. Standard $0.02 per GB-month, archive $0.004; Class A $5 per million, Class B $0.50 per million; free egress.
- Storage
- $0.02/GB/month
- Egress
- free
- Best for
- multi-region delivery
- Catch
- writes at $5/million
AWS S3: every S3 feature, and paid egress
Most completeWhy move to S3. S3 is the original: versioning, Object Lock, bucket policies, replication, tags, notifications, archive classes. Everything R2 doesn't do exists here. If you already live in AWS (EC2, Lambda, RDS), keeping storage next to your compute simplifies things.
Who it's for. Teams facing a security audit, teams that need immutable backup copies, and teams already on AWS.
Who it's not for. A site that serves lots of files. In the Paris region (eu-west-3), data transfer out to the internet costs $0.09 per GB for the first 10 TB, after 100 GB free per month. 1 TB stored and 10 TB served cost about $915 a month, versus $15 on R2. If you're weighing the move the other way, see our AWS alternatives guide.
The catch. An S3 bill has many lines: storage, requests, egress, cross-region transfer. It's the hardest bill on this page to predict.
How to migrate. rclone copies from R2 to S3 like any other target. Ingress into S3 is free; just budget for write requests, $0.0053 per 1,000 in Paris.
Price. Paris region: $0.024 per GB-month (first 50 TB), writes $0.0053 per 1,000, reads $0.0042 per 10,000, egress $0.09 per GB.
- Storage
- $0.024/GB/month (Paris)
- Egress
- $0.09/GB
- Best for
- versioning, Object Lock, AWS
- Catch
- hard-to-predict bill
The 8 alternatives at a glance
Three scenarios, worked out from official prices, before tax and excluding requests unless noted. A 5 TB archive you rarely read: $75 a month on R2 ($50 on Infrequent Access, plus $0.01 per GB read), $30 on IDrive e2, $34.75 on B2, about €32 on Hetzner, about €36 on OVHcloud (one zone), $39.95 on Wasabi, $100 on Tigris ($20 on its archive tier, 90-day minimum), about $120 on S3 in Paris. A site with 1 TB stored and 10 TB served per month: $15 on R2, about €7.10 on OVHcloud, €15.49 on Hetzner, $20 on Tigris, $76 on IDrive e2, $76.95 on B2, $110 on Bunny with its CDN, about $915 on S3; Wasabi falls outside its egress policy. An app writing 50 million objects a month: $220.50 in writes on R2, about $250 on Tigris, $0 on B2, Wasabi, IDrive e2 and Hetzner.
| Storage and egress | Operations and catches | |
|---|---|---|
| Cloudflare R2Where you start | $15/TB/month; free egress | Writes $4.50/million, reads $0.36/million; no versioning or S3 Object Lock API (R2 has its own bucket locks) |
| Backblaze B2Default pick | $6.95/TB/month; free egress up to 3x storage | Class A, B, C free; no minimum duration |
| HetznerEurope | €6.49/month with 1 TB + 1 TB egress; then €1/TB egress | Free API; objects under 64 KB billed as 64 KB; 100 TB per bucket |
| IDrive e2Backups | $6/TB/month; free egress up to 3x storage | Free API; 1 TB minimum |
| WasabiArchives | $7.99/TB/month; free egress up to stored volume | Free API; 1 TB minimum, 90 days per object |
| OVHcloudFrance | ≈ €7/TB/month (1 zone), ≈ €14 (3 zones); no egress fees advertised | Official rclone migration guide; read the price grid closely |
| Bunny StorageDelivery | $10/TB per region; CDN $0.01/GB (Europe, North America) | No API fees; check S3 compatibility |
| TigrisFree egress | $20/TB/month (archive $4); free egress | Writes $5/million, reads $0.50/million |
| AWS S3 (Paris)Full features | $24/TB/month; egress $0.09/GB | Writes $5.30/million; versioning, Object Lock, policies |
Starting prices before tax, subject to change. 1 TB counted as 1,000 GB for vendors that bill per TB. Always rerun the math with your real storage and egress.
Get out of R2 with rclone in eight steps
Super Slurper, Cloudflare's migration tool, only copies into R2; Cloudflare's docs point to rclone for everything else. The good news: R2 egress is free, so the copy itself costs almost nothing. The order of these steps protects your files, your site and your bill.
The steps
Inventory everything that depends on R2
Day 1List every bucket with its size and object count. Note which ones are public, and through what URL: your own domain or an r2.dev address. Find the Workers that read or write R2 through a binding, plus your lifecycle rules and CORS settings (the rules that let another site load your files).
Search your code and database for "r2.dev" too. A hard-coded URL in an email template or an old blog post will break the day you delete the bucket.
- Time
- an hour to a day
- If rushed
- broken links
Open the target account and check its minimums
Day 1Create the bucket and an S3 key pair at your destination. Before copying, review what gets billed from day one: a 1 TB minimum on Wasabi and IDrive e2, 90 days per object on Wasabi, and billing as soon as a bucket exists on Hetzner.
Pick the region closest to your users, or to your servers if it's an app reading its own files.
- Time
- 30 minutes
- Watch for
- 1 TB minimum
Set up two rclone remotes
Day 1In rclone, create an S3 remote with provider "Cloudflare", region "auto" and the endpoint https://ACCOUNT_ID.r2.cloudflarestorage.com, where ACCOUNT_ID is your Cloudflare account ID. Use keys from a read-only R2 API token: you don't need write access to leave.
Then create the destination remote. rclone ships presets for several providers; otherwise the generic S3 profile with the vendor's endpoint works.
- Time
- 20 minutes
- Tip
- read-only R2 token
Copy, never sync at first
Days 2 to 5Run rclone copy with --dry-run first to see what would move, without sending anything. Then run the real copy with --checksum. Don't use sync yet: get the direction wrong and it deletes files.
For big volumes, go folder by folder with moderate concurrency. Users who moved roughly 250 TB out of R2 did exactly that to avoid being throttled. Don't trust the ETags of multipart uploads: they aren't a checksum of the whole file.
- Time
- depends on volume
- Command
- rclone copy --checksum
Estimate what the copy costs
Before copyingR2 egress is free, but each copied object is a Class B read and each list page a Class A operation. Past the monthly free tier (10 million reads, 1 million Class A), reads cost $0.36 per million. A bucket with 20 million objects costs about (20 − 10) × $0.36 = $3.60 in reads. Not a big deal, but worth knowing.
On the destination side, ingress is free with every vendor on this page; only S3 and Tigris bill the writes.
- R2 reads
- $0.36/million
- R2 egress
- free
Switch your application
Week 1If your code talks S3, switching storage means changing four settings: endpoint, access key, secret and bucket name. Test in staging, then deploy.
If you use Workers with an R2 binding, it takes longer: bindings only exist on Cloudflare. You'll rewrite those calls as signed S3 requests to the new destination, or keep a Worker as a proxy.
- Time
- an hour to a few days
- Watch for
- Worker R2 bindings
Switch the public domain
Week 1Point your files subdomain (say, cdn.yourdomain.com) at the new destination or its CDN: Bunny CDN for Bunny Storage, or any CDN in front of B2, Hetzner or OVHcloud. Nothing stops you from keeping Cloudflare as the CDN in front of another storage provider.
Recreate your CORS rules at the destination before the switch, or fonts and images loaded from another domain will stop showing.
- Time
- an hour
- Watch for
- missing CORS rules
Catch up, verify, and only then delete
Weeks 2 and 3Run rclone copy again to pick up files created during the switch, then rclone check to compare both sides. Watch your error logs for one to two weeks: a missing file points to a forgotten URL.
Only then empty and delete the R2 buckets. As long as they exist, storage above the 10 GB free tier keeps billing.
- Time
- one to two weeks
- Command
- rclone check
Is your tool missing from this page? Email us: hello@hackceleration.com
What breaks an R2 migration
Storage migrations rarely fail during the copy. They fail afterward, on a forgotten detail: a URL, a Worker, a billing rule at the destination. These are the six that come up most.
Deleting R2 before verifying
A clean rclone check is the only proof everything arrived. Keep your R2 buckets for two weeks after the switch: the cost is small, and it's your only copy if a folder is missing.
Forgetting r2.dev URLs
r2.dev URLs don't redirect. If they're baked into sent emails or old posts, those links will break. Find them everywhere and swap in your own domain before deleting the bucket.
Forgetting Workers
A Worker writing to R2 through its binding keeps writing to the old bucket. You think you've migrated, but new files are still landing on Cloudflare.
Picking Wasabi for a busy site
Wasabi's free egress stops at your stored volume. A site serving ten times what it stores falls outside the policy and risks throttling. For that case, look at OVHcloud, Tigris or a CDN.
Paying for 1 TB to store 10 GB
Wasabi and IDrive e2 bill a 1 TB minimum. For a small project, R2 (10 GB free) or B2 (10 GB free, no minimum duration) stay cheaper.
Comparing dollars to euros
Hetzner and OVHcloud list euro prices before VAT, US vendors list dollars. Convert at today's rate, and add VAT where it applies to you.
- Inventory of buckets, sizes, object counts and public URLs
- Search for r2.dev URLs in code and database
- List of Workers bound to R2, lifecycle rules and CORS rules
- Destination minimums checked (1 TB, 90 days, billed buckets)
- R2 remote on a read-only token, target remote checked on one folder
- rclone copy --dry-run, then the copy with --checksum
- App switched: endpoint, keys, bucket name
- Public domain and CORS rules switched
- rclone check clean after the catch-up copy
- R2 buckets emptied and deleted after two error-free weeks
Cloudflare R2 alternatives: FAQ
Is Cloudflare R2 really free?
Up to a point. Each month R2 gives you 10 GB of storage, 1 million Class A and 10 million Class B operations, on Standard storage only: Infrequent Access has no free tier. Egress is free with no cap. Past that, you pay $0.015 per GB stored.
Why is my R2 bill high when egress is free?
Almost always Class A operations. Listing a bucket counts as a write, at $4.50 per million. A backup tool that lists your bucket on every run, or chunks files into thousands of small blocks, burns through the free million in days. Check the Class A line in your R2 dashboard before shopping around.
Is R2 cheaper than S3?
For a site serving files, yes, by a wide margin. Storage is close ($0.015 versus $0.024 per GB in AWS's Paris region), but S3 bills egress at $0.09 per GB and R2 bills nothing. For archives nobody reads, egress hardly matters and the gap comes down to storage alone.
What's the cheapest S3-compatible storage?
Per TB, IDrive e2 at $6 a month, then Hetzner at €6.49 with 1 TB of egress included, and Backblaze B2 at $6.95. Below 1 TB, IDrive e2 and Wasabi stop being cheap because of their 1 TB minimum; B2 and R2 both give you 10 GB free.
How do I migrate from R2 to Backblaze B2?
With rclone: one remote for R2 (provider Cloudflare, region auto), one for B2, then
rclone copy --checksumandrclone check. B2 doesn't bill writes, so the copy costs nothing on its side. Our Backblaze alternatives guide covers the reverse question.Does R2 support versioning or Object Lock?
Partly. R2 has no versioning, and its S3 API doesn't support Object Lock, so a backup tool that sets locks through that API will fail. R2 does have its own bucket locks, though: a rule on the bucket blocks deleting or overwriting objects for a set period, or indefinitely. That protects an archive, but you set the lock in Cloudflare, not from your backup tool.
Is there a European alternative to R2?
Yes: Hetzner (Germany, Finland), OVHcloud (France), Bunny (Slovenia), and Scaleway, another French host with S3-compatible storage. R2 does offer an "eu" jurisdiction that guarantees storage in the EU, but the vendor stays a US company.
Can I keep Cloudflare as a CDN in front of another store?
Yes. You can leave R2 without leaving Cloudflare: your subdomain stays behind Cloudflare's CDN and points to B2, Hetzner or OVHcloud. You keep caching and protection and only change where the files live. To leave Cloudflare entirely, see our Cloudflare alternatives guide.
Get the next migration guide in your inbox
One tool to leave, one destination, one migration plan. Nothing else.