# Connect S3-compatible storage

> Add AWS S3, Cloudflare R2, MinIO, and other S3-compatible providers to BucketMate Web

Canonical: https://docs.bucketmate.app/web/features/connect-s3-compatible-storage

BucketMate Web connects to S3-compatible storage with endpoint, region, access key ID, secret access key, and optional explicit bucket names.

## Browser extension

Install and connect the companion browser extension before testing a connection. Browsers block many direct S3 requests with CORS, and the extension forwards signed requests so BucketMate Web can manage storage from the browser.

Check extension status in the onboarding guide or **Settings > Advance**.

## Supported providers

- AWS S3
- Google Cloud Storage
- Cloudflare R2
- Backblaze B2
- DigitalOcean Spaces
- Wasabi
- MinIO
- Supabase Storage
- Custom S3-compatible endpoints

## Connection fields

| Field | How to use it |
| --- | --- |
| Connection Name | Optional label shown in the sidebar. Use names like `Production R2` or `Backups MinIO`. |
| Provider | Select the closest provider. Use **Custom S3-compatible** for custom endpoints. |
| Endpoint URL | Required for S3-compatible providers. AWS S3 can usually leave this empty. |
| Access Key ID | Provider access key, HMAC key, application key ID, or token access key. |
| Secret Access Key | Matching secret for the access key. |
| Region | Provider region. Cloudflare R2 uses `auto`. MinIO defaults to `us-east-1`. |
| Explicit Buckets | Optional bucket names when credentials cannot list all buckets. |
| Store as encrypted values | Optional passkey protection for saved credentials. |

## General connection steps

1. Open BucketMate Web.
2. Make sure the extension bridge is connected.
3. Choose **Add Connection**.
4. Select the provider.
5. Enter endpoint, region, access key ID, and secret access key.
6. Add explicit bucket names if bucket listing is not allowed.
7. Choose whether to store credentials as encrypted values.
8. Use **Test Connection**.
9. Save the connection.
10. Select a bucket from the sidebar and start managing files.

## Explicit bucket names

Some credentials can access objects inside a bucket but cannot list all buckets in the account. BucketMate Web supports this setup.

1. Enter one bucket name per line in **Explicit Buckets**.
2. Test the connection.
3. Save the connection.

BucketMate Web will show only the buckets you entered.

## Passkey encryption

Turn on **Store as encrypted values** when saving a connection if you want browser-stored credentials protected by a passkey. Encrypted connections must be unlocked before use, and you can lock them again from **Settings > General**.

## Endpoint examples

| Provider | Endpoint |
| --- | --- |
| AWS S3 | Leave empty, or use `https://s3.<region>.amazonaws.com` |
| Google Cloud Storage | `https://storage.googleapis.com` |
| Cloudflare R2 | `https://<account-id>.r2.cloudflarestorage.com` |
| Backblaze B2 | `https://s3.<region>.backblazeb2.com` |
| DigitalOcean Spaces | `https://<region>.digitaloceanspaces.com` |
| Wasabi | `https://s3.<region>.wasabisys.com` |
| Supabase Storage | `https://<project-ref>.storage.supabase.co/storage/v1/s3` |
| MinIO | `https://<your-minio-endpoint>` |

## Troubleshooting

### Extension is disconnected

Install the companion browser extension, refresh BucketMate Web, and check **Settings > Advance**.

### Test Connection fails

Check that the endpoint includes `https://`, the region matches the bucket, the extension is connected, and the access key has permission for the bucket you are testing.

### MinIO HTTP endpoint does not connect

BucketMate Web supports HTTPS MinIO endpoints only. Configure TLS for MinIO and connect with `https://`.

### Buckets do not appear

If credentials cannot call `ListBuckets`, enter bucket names in **Explicit Buckets**.

### Cloudflare R2 region fails

Use `auto` for Cloudflare R2.

### Large bucket search is incomplete

Large buckets may need indexing before full search is available. Use the load-all or indexing action when BucketMate Web shows that search requires all items.
