Skip to content

What is Cloudflare R2?

Cloudflare R2 is the S3-compatible object-storage service launched in 2021 with one disruptive promise: zero egress fees, ever, at any volume. Where AWS S3 charges $0.05–$0.09 per GB to leave the bucket and Wasabi conditionally waives egress only when egress ≤ stored volume, R2 simply does not bill for outbound data — making it the cheapest object storage in the industry for high-traffic workloads (video CDN origins, public APIs, web assets, ML model serving). Storage is $0.015/GB/month ($15/TB) for Standard, with a free tier of 10 GB-month storage + 1 million Class A operations + 10 million Class B operations per month. R2 buckets sit on Cloudflare's global edge network, fronted natively by Cloudflare CDN, R2 Workers binding, and Cloudflare's own Image Optimization and Stream products.

R2's storage cost is slightly higher than B2 ($6/TB) or Wasabi ($6.99/TB) — the trade is paid back when egress is high. A 1 TB bucket serving 100 TB of egress per month costs ~$15 on R2 vs ~$1,000 on B2 (after the 3× free tier) or ~$5,000 on AWS S3. CloudsLinker connects to R2 via its S3-compatible API and treats it like any other S3-class destination, while preserving R2's zero-egress benefit on the read side. The R2 connector is also the easiest way to migrate into R2 from existing S3, B2, or Wasabi buckets without touching local disk — typical multi-TB seeds finish in a single day.

Key features of Cloudflare R2

Why connect Cloudflare R2 to CloudsLinker

CloudsLinker connects to Cloudflare R2 using R2's S3-compatible API: an Access Key ID + Secret Access Key generated from R2 API Tokens, plus the account-specific endpoint https://<account-id>.r2.cloudflarestorage.com. Once connected, transfers run server-to-server using S3 multipart upload — objects above 200 MiB use multiple Class A operations to maximize parallelism. The connector handles all R2 storage classes (Standard, Infrequent Access), preserves user metadata and content-type headers, and supports R2 as both source and destination.

What you can do with Cloudflare R2 on CloudsLinker

S3 multipart copies into R2

S3 multipart copies into R2

Migrate from AWS S3, B2, Wasabi or GCS into R2 at full multipart-parallel speed. Once on R2, your egress to the public internet is permanently free.

Runs server-to-server

Runs server-to-server

R2 transfers execute on CloudsLinker's servers. Your home or office bandwidth is irrelevant.

Scheduled & incremental sync

Scheduled & incremental sync

Hourly / daily / weekly jobs with delta mode. Pair R2 with a CloudsLinker schedule to keep a Cloudflare-served origin in sync with a working bucket on S3.

Filter by prefix, size, modified date

Filter by prefix, size, modified date

Migrate only <code>r2://bucket/assets/2026/</code>, skip files > 4 GB (close to R2's 4.995 GB single-PUT cap), or sync only this week's changes.

Common Cloudflare R2 transfer scenarios

Cut AWS / GCS egress bills: migrate to R2 for high-traffic origin

If your S3 bucket serves > $200/month in public-internet egress, migrating to R2 saves money from day one. CloudsLinker scripts the initial multipart-parallel seed (typically 1–3 TB/day per connection), then nightly delta sync keeps R2 current. Front R2 with Cloudflare CDN and your egress bill effectively drops to zero permanently.

Public model / dataset distribution (ML, OSS releases)

Open-source projects and ML model authors who'd otherwise pay AWS thousands a month to distribute large model weights via S3 use R2's zero-egress model to serve free downloads at any scale. CloudsLinker handles the initial migration from S3 to R2 and ongoing replication.

Cross-provider DR: B2 → R2 or R2 → B2

Run a primary on B2 ($6/TB cheap storage) and a DR replica on R2 (zero egress for restore). CloudsLinker mirrors between the two with delta sync for ~$21/TB/month combined — versus ~$45/TB just for primary on AWS S3.

Web asset hosting: replace S3 + CloudFront with R2

The classic 'S3 origin behind CloudFront CDN' pattern is expensive at scale. CloudsLinker migrates the bucket to R2 in one job; bind R2 to a custom domain via Cloudflare DNS for native integrated CDN. Result: same architecture, ~80–95 % lower bill.

Backup target for Cloudflare-centric infrastructure

If you already run on Cloudflare (Workers, Pages, D1, Durable Objects), R2 is the natural backup destination — same auth model, same dashboard, same performance characteristics. CloudsLinker schedules incremental backups from your existing S3 / Wasabi / B2 buckets into R2 on a nightly cadence.

How to connect Cloudflare R2 to CloudsLinker

R2 authenticates via the S3-compatible API: an Access Key ID + Secret Access Key generated from a Cloudflare R2 API Token, plus an account-specific endpoint URL.

Before you start

Create a dedicated R2 API Token scoped to specific buckets — never use a token with full-account permissions for a third-party tool:

  1. Sign in to the Cloudflare dashboard at https://dash.cloudflare.com.
  2. Go to R2 in the left navigation.
  3. Click Manage R2 API Tokens in the right sidebar.
  4. Click Create API Token.
  5. Configure:
    • Token name — e.g. cloudslinker-migrate
    • Permissions — Object Read & Write (for migration); Object Read only (for source-only)
    • Specify bucket(s) — select the specific bucket(s); avoid “Apply to all buckets in this account”
    • TTL — set an expiry to limit blast radius
  6. Click Create API Token. Copy the Access Key ID and Secret Access Key — Cloudflare shows the secret only once.
  7. Note your Account ID (visible in the right sidebar of the R2 page).

Connection steps

  1. In CloudsLinker, click Add Cloud → choose Cloudflare R2.
  2. Enter a display name (e.g. “R2 — production”).
  3. Paste the Access Key ID and Secret Access Key from step 6 above.
  4. Enter the Endpoint URL in this format: https://<account-id>.r2.cloudflarestorage.com — substituting your Account ID from step 7.
  5. Click Confirm — CloudsLinker validates with ListBuckets and shows the connection as ready.

Revoke access

To revoke CloudsLinker’s token later: dash.cloudflare.com → R2Manage R2 API Tokens → find the token → Roll (rotate) or Delete (immediate revocation).

Cloudflare R2 upload & download limits you should know

R2’s limits are S3-compatible with a few R2-specific quirks (object size 5 GB shy of 5 TB, single PUT 5 MB shy of 5 GB):

  • Maximum object size: 4.995 TB (5 TB minus 5 GB).
  • Maximum single PUT / single multipart part: 4.995 GB (5 GB minus 5 MB).
  • Multipart trigger: objects above 200 MiB are uploaded as multipart automatically by most S3 clients (CloudsLinker included), each part counting as a separate Class A operation.
  • Free tier (per month): 10 GB-month storage, 1 million Class A operations, 10 million Class B operations. Egress always free regardless of tier.
  • Storage pricing: Standard $0.015/GB/month ($15/TB). Infrequent Access cheaper but with higher operation fees.
  • Operation pricing: Class A (writes / list) $4.50/million; Class B (reads) $0.36/million.
  • Egress: $0/GB always. Via S3 API, Workers binding, public r2.dev domain, or custom domain — all free outbound.
  • API rate limits: R2 enforces per-bucket and per-account limits, with automatic back-off on excess. CloudsLinker handles 503 Slow Down responses.
  • Bucket / object count: practically unlimited.
  • Versioning: supported via S3-compatible API (PutBucketVersioning).
  • Object Lock: available in beta for WORM retention.

Sources: Cloudflare R2 docs: Limits, Cloudflare R2 docs: Pricing, Cloudflare R2 docs: Upload objects, Cloudflare R2 announcement: zero egress.

Cloudflare R2 + CloudsLinker — Frequently Asked Questions

Are R2 egress fees really zero in all cases?

Yes. Cloudflare R2 charges nothing for data egress via the S3 API, the Workers binding, or the r2.dev domains. There is no monthly cap, no proportional-to-storage rule (unlike Wasabi), no overage. Class B (read) operation fees still apply ($0.36/million GETs), but the bytes themselves are free.

What's the maximum object size on R2?

4.995 TB per object (5 TB minus 5 GB) via multipart upload. Single PUT (or single multipart part) is capped at 4.995 GB. CloudsLinker uses multipart upload automatically for objects above 200 MiB.

How does the free tier work?

Each month you get 10 GB-month storage + 1 million Class A operations (writes / list) + 10 million Class B operations (reads) for free. Egress remains free regardless of usage. Beyond the free tier, paid rates apply only to the excess.

What are Class A vs Class B operations?

Class A operations modify state (PUT, LIST, COPY, CompleteMultipartUpload, etc.) at $4.50/million. Class B operations read state (GET, HEAD) at $0.36/million. CloudsLinker minimizes Class A by using larger multipart part sizes — fewer operations per GB.

Are my R2 credentials safe with CloudsLinker?

Yes. R2 API Token credentials are encrypted at rest with AES-256 and decrypted only inside the active transfer worker. We recommend creating a token scoped to a specific bucket via the Cloudflare R2 console — never use a token with account-wide permissions for a single migration job.

Does CloudsLinker support R2's Infrequent Access tier?

Yes. When the destination is R2 Infrequent Access, CloudsLinker writes objects to that storage class. Be aware: IA has a 30-day minimum storage duration and higher operation costs ($9/million Class A), so it's only economical for archive workloads.

Can I use R2 as a destination for backing up other clouds?

Yes — schedule a CloudsLinker incremental sync from any source (S3, Wasabi, B2, Google Drive, OneDrive, Dropbox) into R2. Storage cost is $15/TB/month but restores are free, making R2 attractive when you need fast recovery without surprise egress bills.

How fast can CloudsLinker push data into R2?

Typical multipart-parallel ingress is 1–3 TB/day per connection from another cloud (S3, Wasabi, B2, GCS). The bottleneck is usually the source's egress speed, not R2 ingress (R2 handles parallel uploads at high throughput).

Does R2 support Object Lock for ransomware-resistant backups?

R2 supports object versioning and lifecycle rules, with Object Lock available in beta. CloudsLinker preserves Object Lock retention dates when copying between Object-Lock-aware providers.

Is this an official Cloudflare partnership?

No. CloudsLinker is a third-party tool that uses R2's S3-compatible API under your R2 API Token. Revoke access anytime from the Cloudflare R2 console → Manage R2 API Tokens → delete the token.

Cloudflare R2 transfer guides

Step-by-step walkthroughs for moving data to and from Cloudflare R2.

Conclusion

Cloudflare R2's zero-egress model rewrites the economics of object storage for any workload where data is read more than it's written — CDN origins, ML distribution, public datasets, web assets, anything that flows out of the bucket more than it flows in. CloudsLinker makes migrating into R2 a single multipart-parallel job, with delta sync to keep ongoing replication efficient. Connect with R2 API Token and account-specific endpoint, and run your first migration in minutes.

Online storage services supported by CloudsLinker

Transfer data between over 49 cloud services with CloudsLinker

OneDrive

OneDrive

Google Drive

Google Drive

Google Photos

Google Photos

Shared Drive

Shared Drive

OneDrive for Business

OneDrive for Business

Dropbox

Dropbox

Box

Box

Mega

Mega

pCloud

pCloud

Yandex

Yandex

ProtonDrive

ProtonDrive

AWS

AWS

GCS

GCS

iDrive

iDrive

Storj

Storj

DigitalOcean

DigitalOcean

Wasabi

Wasabi

1fichier

1fichier

PikPak

PikPak

TeleBox

TeleBox

OpenDrive

OpenDrive

Backblaze B2

Backblaze B2

Fastmail file

Fastmail file

SharePoint

SharePoint

Nextcloud

Nextcloud

ownCloud

ownCloud

Premiumize me

Premiumize me

HiDrive

HiDrive

Put.io

Put.io

Sugar Sync

Sugar Sync

Jottacloud

Jottacloud

Seafile

Seafile

Ftp

Ftp

SFtp

SFtp

NAS

NAS

WebDav

WebDav

4shared

4shared

Icedrive

Icedrive

Cloudflare R2

Cloudflare R2

Scaleway

Scaleway

Doi

Doi

iCloud Drive

iCloud Drive

iCloud Photos

iCloud Photos

FileLU

FileLU

Zoho WorkDrive

Zoho WorkDrive

Telia Cloud / Sky

Telia Cloud / Sky

Drime

Drime

Filen

Filen

TeraBox

TeraBox

Didn't find your cloud service? Contact: [email protected]