Skip to content

What S3-Compatible Really Means (and Why It Matters When You Switch)

· 4 min read · Updated

What S3-compatible means and why it matters when switching providers

S3-compatible means a storage service speaks the same API language as Amazon S3. Tools, SDKs, and apps built for S3 can usually work with it for common object operations once you change the endpoint and credentials. The service isn't run by Amazon, and compatibility doesn't promise that every feature behaves the same way.

The S3 API became a de facto standard. Once enough tools spoke it, new providers could invent their own interface and ask everyone to re-tool, or speak S3 and work with the existing ecosystem from day one. Most chose S3.

How the S3 API works as a standard

Think of a power socket: a device built for the plug shape draws power without caring which utility generated the electricity. S3 compatibility is that plug shape for object storage. Backblaze B2, Wasabi, Cloudflare R2, and DigitalOcean Spaces all expose an S3-compatible endpoint, so tools such as aws s3, rclone, and desktop transfer apps can point at them by changing the endpoint and the keys.

Why it matters when you switch

S3 compatibility makes providers easier to swap. If your app reads and writes through the common S3 operations, moving from one S3-compatible store to another is mostly a matter of changing the endpoint and the credentials, and the code stays as it is. Your tooling doesn't lock you in, so a provider's pricing model or a new egress policy can't trap your data there.

What compatibility does not guarantee

A few things still vary between S3-compatible providers, so check them before you commit:

  • Feature coverage. Lifecycle rules, versioning, object lock, and multipart limits differ. Most common operations are covered; the long tail is not always.
  • Performance and consistency. Throughput, latency, and edge-case consistency behavior are the provider's own.
  • Regions and durability. Where your data physically sits, and how many copies are kept, is a provider decision.
  • The pricing model. Providers differ most on egress fees and minimum storage duration, and for an archive those terms affect the real cost far more than the storage rate does.

A note on Azure Blob

Azure Blob Storage has its own API, so it is not S3-compatible in the drop-in way the providers above are. The concepts line up (an S3 bucket maps to a container, an object to a blob), but a tool pointed at S3 will not talk to Azure Blob without a translation layer.

To run S3-compatible applications against Azure, you put an S3 gateway in front of Azure Blob, and it converts S3 API calls to Azure Blob calls on the fly. Options include:

  • Flexify.IO runs an S3 gateway in front of Azure Blob Storage[source].
  • s3proxy is an open-source proxy that presents an S3 API backed by Azure Blob and other stores[source].
  • VersityGW is an open-source S3 gateway with pluggable backends[source].
  • MinIO is S3-compatible storage that has been used to put an S3 API in front of other backends[source].

For .NET projects there is FluentStorage, a polymorphic cloud storage abstraction layer. With it, one codebase targets S3, Azure Blob, and other stores without per-provider code[source].

Moving between S3-compatible stores

Because the core API is shared, moving data between S3-compatible providers is usually straightforward. Blober connects to S3, Backblaze B2, Wasabi, Cloudflare R2, and DigitalOcean Spaces, and its generic S3-Compatible provider points at other S3-compatible endpoints by URL when they support the common operations Blober uses. It also bridges to non-S3 services like Azure Blob, Dropbox, and Google Drive. Blober runs on your computer and passes each file from the source to the destination as it goes, so the whole data set never has to fit on your disk.

There are dozens of well-known S3-compatible services, plus self-hosted servers and enterprise systems you can run yourself. For a practical roster with endpoints and setup, see The Complete List of S3-Compatible Storage Providers.

Frequently asked questions

Is Backblaze B2 S3-compatible? Yes. B2 exposes an S3-compatible API, so S3 tools and SDKs work against it once you change the endpoint and keys.

Is Azure Blob Storage S3-compatible? Not natively. Azure Blob uses its own API. The concepts map across (container for bucket, blob for object), but S3 tools need a translation layer to talk to it.

Does S3-compatible mean exactly the same as AWS S3? No. It means the same API language. Features like lifecycle rules and versioning, plus performance, regions, and the pricing model, vary by provider.

Can I switch S3-compatible providers without changing my app? Usually yes, if your app uses the S3 API. You change the endpoint and credentials. First check that the new provider supports the specific features you rely on.