Skip to content

Object Storage - S3 vs GCS vs Azure Blob vs MinIO vs R2#

Object storage holds opaque blobs at near-infinite scale and HTTP access. The big providers offer 11-nines durability and similar APIs; differences come down to cost, ecosystem, and self-host options.

Side-by-side#

AWS S3 Google Cloud Storage Azure Blob Cloudflare R2 MinIO (self-host)
Durability 11 nines 11 nines 11 nines 11 nines depends on disks
Consistency Read-after-write (since 2020) Strong Strong Strong Strong
Egress cost $0.09/GB to internet $0.12/GB $0.087/GB $0 free egress $0 internal
API S3 API native XML + S3-compatible Blob REST + S3-compatible S3-compatible S3-compatible
Lifecycle / tiers Glacier, IA, Standard Nearline, Coldline, Archive Hot, Cool, Archive Single tier Bring your own
Versioning yes yes yes yes yes
Multi-region Cross-region replication Multi-region buckets RA-GRS Auto-globally DIY
Best fit Default cloud GCP-native Azure-native Egress-heavy / public web On-prem / hybrid

Cost-driven decision tree#

flowchart TB
  Q[Need object storage] --> A{Heavy outbound<br/>to public internet?}
  A -->|yes - egress dominates| R2[Cloudflare R2 or Backblaze B2]
  A -->|no| B{On-prem<br/>or air-gapped?}
  B -->|yes| MinIO
  B -->|no| C{Already on a cloud?}
  C -->|AWS| S3
  C -->|GCP| GCS
  C -->|Azure| AZ[Azure Blob]

    classDef client fill:#dbeafe,stroke:#1e40af,stroke-width:1px,color:#0f172a;
    classDef edge fill:#cffafe,stroke:#0e7490,stroke-width:1px,color:#0f172a;
    classDef service fill:#fef3c7,stroke:#92400e,stroke-width:1px,color:#0f172a;
    classDef datastore fill:#fee2e2,stroke:#991b1b,stroke-width:1px,color:#0f172a;
    classDef cache fill:#fed7aa,stroke:#9a3412,stroke-width:1px,color:#0f172a;
    classDef queue fill:#ede9fe,stroke:#5b21b6,stroke-width:1px,color:#0f172a;
    classDef compute fill:#d1fae5,stroke:#065f46,stroke-width:1px,color:#0f172a;
    classDef storage fill:#e5e7eb,stroke:#374151,stroke-width:1px,color:#0f172a;
    classDef external fill:#fce7f3,stroke:#9d174d,stroke-width:1px,color:#0f172a;
    classDef obs fill:#f3e8ff,stroke:#6b21a8,stroke-width:1px,color:#0f172a;
    class Q,A,B,C service;
    class R2,MinIO,S3,GCS,AZ storage;

What you'll get asked#

  • "Why is egress so expensive?" Cloud providers price for stickiness; egress fees are the dominant cost for video/CDN/data-export workloads. R2 / B2 break this.
  • "Multi-part upload?" Files > 100 MB should be uploaded in parallel parts; faster, resumable on failure.
  • "Strongly consistent now?" S3 added strong read-after-write in Dec 2020; before that, eventually consistent for overwrites.
  • "What's the right object key?" Avoid sequential prefixes (limits throughput per partition); use hash-prefixed keys for high-throughput writes.

FAQ#

Is Cloudflare R2 cheaper than S3?#

R2 has the same storage price as S3 but charges zero egress, which makes it dramatically cheaper for read-heavy workloads like media, downloads, and AI datasets that leave the cloud often.

What is the difference between S3 and MinIO?#

S3 is a managed service from AWS with deep ecosystem integration. MinIO is an S3-compatible open-source server you run yourself, useful for on-prem, air-gapped, or edge deployments.

Is S3 strongly consistent?#

Yes. Since 2020, S3 provides strong read-after-write consistency for new and overwritten objects across all regions, which removes most of the historical eventual-consistency gotchas.

Should I use Azure Blob or GCS over S3?#

Pick by the rest of your cloud footprint. Network egress, IAM, and analytics integration are usually the deciding factors. The APIs and durability targets are similar across the three majors.

When does MinIO beat cloud object storage?#

MinIO wins when you need data residency, ultra-low latency next to compute, or are exiting a cloud to control cost. It requires you to operate replication, durability, and capacity planning yourself.