Skip to main content

Tigris vs Cloudflare R2

Both Tigris and Cloudflare R2 are S3-compatible object storage services with zero egress fees. They share a commitment to eliminating data transfer costs. The differences are in how each handles global distribution, S3 compatibility, and platform features.

Global distribution

Cloudflare R2

R2 stores data in a single primary location and relies on Cloudflare's CDN edge cache for read performance. Cache misses go back to the origin region. You can hint at a preferred region, but data lives in one place.

Tigris

Tigris uses Dynamic Data Placement to actually move and replicate data to the regions where it's accessed. Reads are fast even for infrequently cached objects because data physically lives closer to where it's needed — not just cached at the edge.

S3 compatibility

Cloudflare R2

R2's S3 compatibility has known gaps. Some features like multipart upload copy parts, certain ACL operations, and some list parameters aren't fully supported. This can cause issues with tools and libraries that rely on the full S3 API.

Tigris

Tigris implements a broader set of the S3 API. Existing tools, SDKs, and libraries are less likely to hit edge cases or need workarounds.

Storage tiers

Cloudflare R2

R2 offers Standard and Infrequent Access tiers. There is no archive tier for long-term, low-cost retention.

Tigris

Tigris offers Standard, Infrequent Access, Archive, and Archive with Instant Retrieval — giving you more options for optimizing storage costs across different access patterns.

Multi-tenancy

Cloudflare R2

R2 doesn't have a multi-tenant provisioning API. If you're building a platform that needs isolated storage per customer, you manage isolation at the application level using API tokens scoped to accounts or buckets.

Tigris

Tigris offers a Partner Integration API for provisioning isolated tenant organizations in a single API call — each with their own buckets, credentials, and usage tracking built in.

Snapshots and forks

Cloudflare R2

R2 has no snapshot or fork capability.

Tigris

Tigris lets you take point-in-time snapshots of a bucket and create independent copy-on-write forks — instant, no data copying. Useful for ML experiment branching, safe migrations, and dev environments.

Where Cloudflare R2 fits better

  • Cloudflare Workers ecosystem — native bindings for Workers, Pages, and Durable Objects make R2 a natural fit for edge-first Cloudflare applications
  • Edge compute co-location — if your logic already runs on Cloudflare Workers, R2 reads from the same data center are very fast
  • Event notifications via Queues — R2 integrates with Cloudflare Queues for event-driven processing within the Cloudflare ecosystem
  • Free tier — R2 offers 10 GB of free storage and 10 million Class A operations/month

Summary

TigrisCloudflare R2
Global distributionAutomatic — data moves to where it's accessedSingle primary region + optional cache via Workers
Egress feesFreeFree
Region selectionNot required — single global endpointAutomatic (closest region) or manual hint
S3 API compatibilityFullMostly compatible — some gaps
ConsistencyStrong read-after-writeStrong read-after-write
Storage tiersStandard, IA, Archive, Archive Instant RetrievalStandard, Infrequent Access
Snapshots & forksNative — zero-copy clonesNo equivalent
Custom domainsSupportedSupported (via Workers or R2 public bucket)
IAMIAM policies, bucket policies, ACLsAPI tokens scoped to account or bucket
Partner / multi-tenant APINative Partner APINot available

Migration

Moving from R2 to Tigris is straightforward since both use the S3 API. Change your endpoint URL and credentials, then use rclone or the data migration guide to sync existing data.