# Storage providers

> s3nd works with AWS S3 and any S3-compatible storage: Cloudflare R2, MinIO, Scaleway Object Storage, Wasabi. The endpoint is the only difference, and the CLI writes a starter configuration for each.

Canonical: https://www.s3nd.sh/providers · Markdown: https://www.s3nd.sh/providers.md · Français: https://www.s3nd.sh/fr/providers

Set an endpoint and s3nd adjusts the two defaults S3-compatible providers expect. Both stay overridable. The CLI writes a starter configuration for each provider, and doctor tells you whether it actually works.

```ts
const store = createBucket({
  bucket: 'transfers',
  endpoint: 'https://…',   // set this, and two defaults follow:
  // region: 'auto'        // for providers that ignore the region
  // forcePathStyle: true  // https://endpoint/bucket/key
})
```

## Pick yours.
- [Cloudflare R2 (s3nd init --provider r2): No egress fees, which is exactly what moving a 2 GB file between two laptops wants.](https://www.s3nd.sh/providers/cloudflare-r2)
- [AWS S3 (s3nd init --provider aws): The original. Credentials come from the provider chain, so a Lambda or an ECS task needs no keys at all.](https://www.s3nd.sh/providers/aws-s3)
- [MinIO (s3nd init --provider minio): One Docker command, and the real code path runs on your laptop and in CI.](https://www.s3nd.sh/providers/minio)
- [Scaleway Object Storage (s3nd init --provider scaleway): European regions, S3-compatible, and the region actually means something.](https://www.s3nd.sh/providers/scaleway)
- [Wasabi (s3nd init --provider wasabi): Flat-rate storage with no egress charge, on a regional endpoint.](https://www.s3nd.sh/providers/wasabi)

Not listed? Ceph, Garage, SeaweedFS, Backblaze B2, DigitalOcean Spaces and the rest work the same way: an endpoint, a key pair, and `s3nd doctor` to confirm the conditional writes are honoured. [The CLI](https://www.s3nd.sh/cli) has the details.
