Best File Storage for Rails (2026)
Compare the best file storage solutions for Rails. We review Active Storage with S3, R2, and other backends for file uploads.
Rails Active Storage provides seamless file uploads with multiple backend options. We've evaluated cloud storage services that work well with Active Storage.
Why This Matters
Active Storage abstracts file handling but you need a production backend. Local disk doesn't scale. Cloud storage provides durability, CDN delivery, and horizontal scaling.
Key Considerations
Active Storage
Rails Active Storage supports S3, GCS, and Azure out of the box. Use gems for other providers.
Direct Upload
Active Storage supports direct uploads to S3/GCS. Reduces server load for large files.
Image Processing
Active Storage has built-in variants with image_processing gem. Or use services like Cloudinary for on-the-fly processing.
Egress Costs
S3 charges for downloads. Cloudflare R2 has zero egress. Consider your download patterns.
CDN Integration
Serve files from CloudFront, CloudFlare, or similar CDN for fast global delivery.
Our Recommendations
Cloudflare R2
Best Value Excellent Support Official SDKCloudflare R2 is S3-compatible with zero egress fees. Works with Active Storage S3 adapter. Built-in CDN. Best value for high-traffic.
bundle add aws-sdk-s3 Amazon S3
Best Established Excellent Support Official SDKAWS S3 is the standard. Native Active Storage support. Use with CloudFront CDN. More expensive egress but most features.
bundle add aws-sdk-s3 Cloudinary
Best for Images Excellent Support Official SDKCloudinary for image/video with automatic optimization and transformations. Has Active Storage adapter. 25GB free.
bundle add cloudinary activestorage-cloudinary-service Supabase Storage
Best with Supabase Good SupportSupabase Storage if already using Supabase. 1GB free. Integrates with Supabase Auth for permissions.
bundle add supabase Backblaze B2
Best Budget Good Support Official SDKBackblaze B2 is 1/4 the cost of S3. S3-compatible API works with Active Storage. Free egress via CloudFlare.
bundle add aws-sdk-s3 Quick Comparison
| Service | TypeScript | Edge | Free Tier | Setup Time |
|---|---|---|---|---|
| | none | — | 10GB | 15 min |
| | none | — | 5GB (12 mo) | 15 min |
| | none | — | 25GB | 15 min |
| | none | — | 1GB | 15 min |
| | none | — | 10GB | 15 min |
Quick Start
cloudflare:
service: S3
access_key_id: <%= ENV['R2_ACCESS_KEY'] %>
secret_access_key: <%= ENV['R2_SECRET_KEY'] %>
region: auto
bucket: your-bucket
endpoint: https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
# config/environments/production.rb
config.active_storage.service = :cloudflare Common Integration Patterns
R2 + CloudFlare CDN
Active Storage with R2, serve via CloudFlare CDN. Zero egress fees.
S3 + CloudFront + Lambda
S3 storage, CloudFront CDN, Lambda for image resizing.
Cloudinary for User Uploads
Cloudinary for user-uploaded images with automatic optimization.