Back up Android photos to Cloudflare R2 — step-by-step
Enable R2 on your Cloudflare account, create a bucket, mint a scoped R2 API token, paste the access key, secret, account ID, and bucket name into Breazzy. Cost: $1.50 per 100 GB per month; egress is free forever. First 10 GB per month are free.
What you need
- A Cloudflare account. Free to create at dash.cloudflare.com. R2 itself requires a credit card on file but does not bill until you exceed the free tier.
- The Breazzy app on Android 8.0+.
- About 10 minutes.
Step 1 — Enable R2 on your account
- Log into the Cloudflare dashboard.
- In the left sidebar, click R2 Object Storage.
- If this is the first time, you will see a banner asking you to enable R2. Click Purchase R2 (the wording is misleading — you only pay if you exceed the free tier) and add a payment method.
Step 2 — Create an R2 bucket
- On the R2 overview page, click Create bucket.
- Pick a bucket name. R2 names are scoped to your account, so
photosorbreazzyis fine. - Under Location, choose Automatic (Cloudflare places it close to your traffic) or pin a jurisdiction (EU / FedRAMP) if you have a compliance reason.
- Click Create bucket.
Step 3 — Find your account ID and endpoint
On the R2 overview page (the top-level R2 page, not the bucket details), look for the Account ID in the right-hand sidebar. It is a 32-character hex string. The S3-compatible endpoint Breazzy needs is constructed from it:
https://<account-id>.r2.cloudflarestorage.com
Breazzy will build the full URL from the account ID you paste, so you only need to copy the ID itself.
Step 4 — Create a scoped R2 API token
- On the R2 overview page, click Manage R2 API Tokens (top right).
- Click Create API token.
- Token name:
breazzy-phone. - Under Permissions, choose Object Read & Write.
- Under Specify bucket(s), choose Apply to specific buckets only and select the bucket you created. Do not grant account-wide access.
- Leave TTL empty (or set one if you want the token to auto-expire).
- Click Create API Token.
Cloudflare shows the Access Key ID and Secret Access Key exactly once. Copy both before leaving the page. The Account ID is shown again on this same screen for convenience.
Step 5 — Configure Breazzy and start syncing
- Open Breazzy, tap Add destination.
- Pick Cloudflare R2.
- Fill in:
- Account ID — the 32-char hex string from step 3.
- Access Key — the Access Key ID from the token.
- Secret Key — the Secret Access Key from the token.
- Bucket — the bucket name from step 2.
- Tap Test connection.
- Tap Save, then start your first backup from the Photos tab.
Cloudflare-specific gotchas
- Account ID, not zone ID. Cloudflare has two IDs visible in the dashboard. R2 uses the Account ID, found on the R2 overview or the right sidebar of the main dashboard.
- Jurisdictional buckets. If you create an EU-pinned bucket, the endpoint changes to
https://<account-id>.eu.r2.cloudflarestorage.com. Breazzy detects this automatically when you save. - Free egress is a real moat. If you ever want to sync the bucket back to a desktop or to another provider, R2 charges $0; B2 and S3 do not.
- Class A operations are billed beyond 1M/mo free. A photo backup at 100 GB triggers around 5,000–10,000 PUT operations — nowhere near the limit.
- Public buckets are off by default. Leave them off. Breazzy never needs public access; it always uses signed requests.
Verifying your photos
From the Cloudflare dashboard, click into the bucket — you will see your photos listed as objects with their original filenames. From a desktop, you can use rclone with the R2 backend or any S3 client pointed at https://<account-id>.r2.cloudflarestorage.com with the same access key and secret.
Frequently asked
What does Cloudflare R2 cost for 100 GB of photos?
$1.50 per month for storage, $0 for egress, plus negligible operation fees. The first 10 GB stored per month are free. Verified May 2026.
Can I serve photos from R2 publicly?
Yes — R2 supports public buckets and custom domains. Breazzy itself only needs private access. If you want a public family album, attach a Worker or enable public access on a separate prefix.
Does R2 have a free tier?
Yes: 10 GB storage, 1M Class A operations, 10M Class B operations per month. Enough to test Breazzy on a small album before deciding.
What if I cancel R2?
Download your bucket (egress is free) with rclone or the Cloudflare CLI, then delete the bucket. Your photos do not depend on Breazzy or Cloudflare to remain readable.