Cloud Storage Comparison: 10 Major Services | Upload Limits, Pricing & Features | S3/GCS/Azure/R2
When choosing a cloud storage service, key comparison points include single upload limits, multipart upload support, free tier, pricing, and egress (transfer) costs. While AWS S3 is the de facto industry standard, there are more suitable options depending on cost, edge delivery, and specific use cases. This article compares the specifications of 10 major services and provides recommendations by use case.
Comparison table of single upload limit, multipart limit, and free tier
| Service | Single object limit | Multipart Upload Limits | Free tier | Monthly estimate (100 GB) |
|---|---|---|---|---|
| AWS S3 | 5 GB | 5 TB | 5 GB • 2,000 requests/month (12 months) | $2.30〜 |
| Google Cloud Storage | 5 TB (single object) | 5 TB | 5 GB (Standard, US East) | $2.00〜 |
| Azure Blob Storage | Block: 4.75TB, Page: 8TB | 195GB/block × 50,000 blocks | 5 GB for 12 months (LRS) | $1.84〜 |
| Cloudflare R2 | 5 GB | 5 TB | 10 GB/month · 1 million operations/month (perpetual) | $1.50 (egress free) |
| Backblaze B2 | 5 GB | 10 TB | 10 GB (perpetual) | $0.60〜 |
| DigitalOcean Spaces | 5 GB | 5 TB | 250GB + 1TB transfer/month ($5~) | $5 (up to 250GB included) |
| Wasabi | 1 TB | 1 TB | None (trial only) | $0.68 (egress free) |
| MinIO | 5 TB (implementation-dependent) | 5 TB | Self-hosted (Unlimited) | Infrastructure costs only |
| Firebase Storage | Effectively Unlimited (Using GCS) | GCS Compliant | 5 GB (Spark plan) | $0.026/GB〜 |
| Supabase Storage | 50MB(Free)/ 50GB(Pro) | Supported in Pro or higher | 1GB (Free plan) | $0.021/GB(Pro) |
※Pricing is an estimate as of April 2026. Prices vary by region, storage class, and usage. Most egress (data transfer) costs are not included in the table above.
Features and selection guide for each service
AWS S3
The de facto standard for cloud storage. Many services implement S3-compatible APIs, and the ecosystem of libraries and tools is the most mature. Multipart uploads can be automated with <code>aws-sdk</code>, supporting a minimum chunk size of 5MB and up to 10,000 parts to upload objects up to 5TB. Integration with CloudFront enables easy edge delivery. However, egress costs are high (from $0.09/GB), which can be a challenge for services with large data transfers.
Google Cloud Storage(GCS)
With a generous single object limit of 5TB, it is well-suited for use cases where you want to manage large files as single objects. Its strength lies in seamless integration with GCP services such as BigQuery and Vertex AI, making it the first choice for building data analysis pipelines. Transfer costs tend to be slightly lower than S3.
Azure Blob Storage
It integrates seamlessly with the Microsoft ecosystem (Office 365, Active Directory, Azure Functions, etc.) and offers comprehensive authentication and compliance features for enterprise use. Block Blobs support objects up to 4.75TB, while Page Blobs (for virtual disks) support up to 8TB. Cost optimization is achievable through hot, cool, and archive tiers.
Cloudflare R2
The main feature is that egress costs are free. Since it uses S3-compatible API, you can use existing S3 clients almost as-is. Integration with Workers (edge computing) is powerful, enabling architectures that directly manipulate storage at the edge. It offers a permanent free tier of 10GB/month, making it ideal for personal development and small-scale services.
Backblaze B2
Offers industry-leading lowest-tier pricing ($0.006/GB/month), well-suited for cost-conscious backup and media archive use cases. The combination with Cloudflare's "Bandwidth Alliance" where B2 egress to Cloudflare is free is popular. It provides S3-compatible APIs, making migration easy.
DigitalOcean Spaces
Features a flat-rate plan starting from $5/month that includes 250GB storage and 1TB transfer bandwidth. Its advantage is easy budget predictability for small-scale services. CDN comes standard and is simple to configure. Transfer becomes free when used in the same region as DigitalOcean Droplets (virtual machines).
Wasabi
S3-compatible with free egress (when downloading directly from Wasabi), and affordable storage ($0.0068/GB/month). However, note the minimum retention period: data deleted within 90 days of storage incurs 90 days of charges. It's suitable for backups and long-term cold data storage.
MinIO
Open-source S3-compatible object storage that can be self-hosted on-premises or in private clouds. It has excellent compatibility with Kubernetes and official Helm charts are provided. It is used in regulated industries that prefer not to move data to the cloud, as well as for development and testing in on-premises environments.
Firebase Storage
It uses GCS internally, and direct uploads from mobile/web apps using the Firebase SDK can be easily implemented. Its strength is fine-grained access control (Security Rules) integrated with Firebase Authentication. However, on the Spark (free) plan, the single file size limit may be effectively set low.
Supabase Storage
Storage functionality of Supabase, a PostgreSQL-based BaaS (Backend as a Service). Its unique strength is access control based on RLS (Row Level Security) with Supabase Auth. The Free plan has a low file size limit of 50MB, so Pro or higher plans (50GB per file) are required for large files.
Recommendations by use case
| Use case | First choice | Reason |
|---|---|---|
| Starting point for small-scale SaaS | Cloudflare R2 | Free egress, permanent free tier, S3-compatible |
| Large media archive | Backblaze B2 + Cloudflare | Lowest-cost storage + free egress combination |
| Edge delivery, global deployment | Cloudflare R2 / AWS S3 + CloudFront | CDN Integration and Low-Latency Delivery |
| Cost-First Priority | Wasabi / Backblaze B2 | Industry-leading lowest-tier storage pricing |
| Enterprise Compliance | AWS S3 / Azure Blob | Rich authentication, encryption, and audit capabilities |
| Mobile App Direct Upload | Firebase Storage / Supabase Storage | Easy SDK and authentication integration |
| On-Premises & Private Cloud | MinIO | S3-compatible, self-hosted, and open-source options |
| Integration with GCP Services | Google Cloud Storage | Seamless Integration with BigQuery and Vertex AI |
What is Multipart Upload
Multipart upload is a mechanism that divides large files into smaller parts and uploads them in parallel. It is recommended for files exceeding 100MB on S3 and mandatory for files exceeding 5GB. The main benefits are as follows.
- Improved throughput with parallel uploads
- Only failed parts can be retransmitted during network interruption (resumable)
- Bypass the 5GB limit of single requests and send up to 5TB
// AWS SDK v3 でのマルチパートアップロード例
import { S3Client, CreateMultipartUploadCommand,
UploadPartCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3';
const s3 = new S3Client({ region: 'ap-northeast-1' });
async function multipartUpload(bucket, key, file) {
// アップロードの開始
const { UploadId } = await s3.send(new CreateMultipartUploadCommand({
Bucket: bucket, Key: key,
}));
const chunkSize = 10 * 1024 * 1024; // 10MB
const parts = [];
for (let i = 0; i * chunkSize < file.size; i++) {
const chunk = file.slice(i * chunkSize, (i + 1) * chunkSize);
const { ETag } = await s3.send(new UploadPartCommand({
Bucket: bucket, Key: key,
UploadId, PartNumber: i + 1,
Body: chunk,
}));
parts.push({ ETag, PartNumber: i + 1 });
}
// パーツの結合(完了)
await s3.send(new CompleteMultipartUploadCommand({
Bucket: bucket, Key: key,
UploadId, MultipartUpload: { Parts: parts },
}));
}
Test files for this article (free)
- → <a href="/ja/files/threshold/" class="text-primary-600 dark:text-primary-400 hover:underline">Boundary value test file list</a> — Test uploads near the limits of various cloud storage services
- → <a href="/ja/files/images/png/" class="text-primary-600 dark:text-primary-400 hover:underline">PNG Test Images List</a> — Verify storage behavior with images of various sizes
Related articles
- → <a href="/ja/blog/s3-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">Summary of File Upload Limits for AWS S3 and CloudFront</a>
- → <a href="/ja/blog/how-to-test-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">How to Properly Test File Upload Limits</a>
- → <a href="/ja/blog/mb-vs-mib-file-size/" class="text-primary-600 dark:text-primary-400 hover:underline">Difference Between MB and MiB | Correct Understanding of File Size Units</a>