S3 Alternatives for Rails' ActiveStorage

A 3d rendering of a scale placed on a kitchen counter with POV from the top-right.

ActiveStorage is a Rails framework that simplifies file uploads and attachments to cloud storage services. It provides a unified interface for handling file uploads, transformations, and storage across various cloud providers.

It’s beautifully simple and easy to set up. Adding an user avatar is just one line of code:

class User < ApplicationRecord
  has_one_attached :avatar
end

Love Rails! ❤️

Being one of the first to market, Amazon’s S3 (Simple Storage Service), has been the default storage provider for your ActiveStorage attachments. But the last few years more options have appeared. This is great for companies and customers alike!

For my next big thing, I have explored other options to store files my customers upload. One requirement I had was that they had to be S3-compatible. Meaning using the same API and functionality as S3, allowing applications designed for S3 to work with it without modification.

The alternatives

These are the contenders I explored and sharing with you. Most are cheaper than S3, but that was not the goal for my research.

My shortlist includes:

  • DigitaOcean Spaces
  • Wasabi
  • Cloudflare R2
  • Backblaze B2
  • Hetzner S3

I’ve just listed the basic details. Pricing per provider is often quite different. Some charge GB per hour of storage. Some have tiered pricing per amount of TB. Others charge in blocks of 250GB. Some charge for egress, some not. Argh! 😱 All to say: don’t use just the prices below to make a decision!

DigitalOcean Spaces

DigitalOcean Spaces launched in 2017. They start at $5 per month, including 250GB of storage and 1TB of outbound transfer. $0.02/GiB additional storage and $0.01/GiB additional transfer.

Wasabi

Wasabi launched in 2017. Pricing starts at $6.99 per TB. It will be $.0068 for every next GB per month. Egress data is on a fair-use policy (monthly egress data transfer is less than or equal to your active storage volume).

Cloudflare R2

Cloudflare R2 launced in 2021. They have minimum pricing of $0.015 per GB/month for storage, but no egress fees.

Backblaze B2

Backblaze launched its B2 service in 2015. Costs are $6 per TB per month with egress fees being free for up to 3× your average monthly storage amount (overage is priced at $0.01/GB).

Hetzner S3

Hetzner’s S3 service is currently (October 2024) in beta. Price of will be €5.95 per TB per month.

The beauty of ActiveStorage is it comes with a Mirror service that is intended to be used temporarily during a migration between services in production.

Do you have any (real life) experience with any of these? Let me know.

Get UI & Product Engineering Insights for Rails Apps (and product updates!)

Published at . Have suggestions or improvements on this content? Do reach out. Interested in sharing Rails Designer with the Ruby on Rails community? Become an affiliate.

UI components for Ruby on Rails apps

$ 99 one-time
payment

Get Access
  • One-time Payment

  • Access to the Entire Library

  • Built for Ruby on Rails

  • Designed with Tailwind CSS and Enhanced with Hotwire

  • Updates for 12 months