Hugging Face Storage Buckets via S3 gateway (s3.hf.co) — as an annex/DVC backend
- Free allowance
- Free user or organisation: public storage 'Best-effort' with no published figure, private storage 100 GB; the storage plans and policies apply to every repository type, buckets included
- Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tierpaid plans from USD 12/TB-month
- Identity
- emailno card, phone unknown
- Binding limit
- volume-quotaprivate storage 100 GB on a free user or organisation; public storage 'Best-effort' with no published figure; egress included up to 8:1 of total storage
- Evidence
- documented34 sources; a first-party page was read and the sentence quoted
- Freshness
- stale on 2026-11-21checked 2026-10-21 (inherited); stale on 2026-11-21
| Free tier | Free user or organisation: public storage 'Best-effort' with no published figure, private storage 100 GB; the storage plans and policies apply to every repository type, buckets included unit GB; metered on stored-bytes; above the first few gigabytes of public storage the page asks for content of value to other users and names abuse mitigations without a figure; PRO, Team and Enterprise plans carry numeric public and private limits |
|---|---|
| Price | USD 12 per TB-month public and USD 18 per TB-month private at the base tier; USD 10 and 16 from 50 TB, USD 9 and 14 from 200 TB, USD 8 and 12 from 500 TB; public storage beyond a plan's base needs a PRO, Team or Enterprise plan |
| Limits |
The S3 gateway is single-region (us-east-1), path-style only and ListObjectsV2 only, and does not parse aws-chunked trailing checksums (request_checksum_calculation and response_checksum_validation set to when_required); ACLs, bucket policies, object tagging, object versioning, lifecycle rules, server-side encryption and bucket notifications are not supported, user metadata is not stored, server-side copy works within one namespace only, and incomplete multipart uploads expire after 7 days; 2 GB multipart parts are recommended. The per-file and file-count figures on the storage-limits page are stated for Git-backed repositories only. |
| Binding | volume-quota a free account holds 100 GB private, and public storage beyond the first few gigabytes is best-effort under abuse mitigations, so the stored volume binds first |
| Identity | email the join form's first step asks an email address and a password and shows no phone field and no card field, and whether a later step asks a phone number is unverified; free-tier accounts exist with no credit card on file, and a card is asked for PRO, Team, paid compute and storage above the free tier |
| Egress | Egress and CDN are included in the storage price up to a ratio of 8:1 to total storage; the storage page publishes no price or action above the ratio. GetObject through the single-region S3 gateway usually answers with a redirect to the nearest Hugging Face CDN edge rather than serving the bytes itself. free allowance: 8:1 of total storage |
| Per-object cap | unverified: the 500 GB per-file hard limit on the storage-limits page is stated in a section marked as not applying to Storage Buckets, and the bucket and S3 gateway pages publish no per-object limit |
| Retention | unverified: the bucket, S3 gateway and storage-limits pages state no expiry or inactivity rule for stored objects; incomplete multipart uploads expire after 7 days |
| Interface | s3-compatible, cli, rest part of the text of Limits, above |
| Tooling | Any S3 client: AWS CLI, boto3, s5cmd; hf CLI (hf sync, hf buckets); python huggingface_hub. For this slot: git annex initremote type=S3 host=s3.hf.co region=us-east-1 requeststyle=path (annex needs path-style, which the gateway requires anyway) and dvc remote add ... ; dvc remote modify myremote endpointurl https://s3.hf.co/<namespace>. S3 creds are derived from an HF token via 'Generate S3 credentials' (HFAK... key). |
| Composes with | Buckets are non-versioned, so a versioning layer on top of the S3 gateway keeps history: DVC is documented as a bucket remote through the gateway, and other S3 clients that take a custom endpoint with path-style addressing reach it the same way; storage is deduplicated at chunk level by Xet, and reads go out through the included CDN. |
| Reliability | Public storage on a free account is 'Best-effort': above the first few gigabytes the page names abuse mitigations without a figure; bucket deletions are immediate and unrecoverable; the S3 gateway is single-region (us-east-1). |
| Notes | Storage Buckets are non-versioned, mutable object storage on the Xet backend; the S3 gateway at https://s3.hf.co/<namespace> takes access keys with the HFAK prefix, derived from a Hugging Face access token whose read or write scope they inherit |
| Evidence note | documented free allowance, egress ratio, identity, gateway limits and prices quoted from the storage-limits, Storage Buckets, S3 gateway and billing documentation, the storage page and the join page on 2026-10-30; the gateway answered an anonymous GET with an S3-style refusal |
| Parsed numbers |
|
Evidence 34
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | huggingface.co/docs/hub/storage-buckets-s3 | endpoint https://s3.hf.co/<namespace>, region us-east-1, path addressing, HFAK credentials from an HF token |
| 2026-10-21 | huggingface.co/docs/hub/storage-limits | Free user or org: Public 'Best-effort', Private 100GB; 'no single file will exceed 500GB' |
| 2026-10-21 | huggingface.co/storage | 'Egress and CDN included at no extra cost' |
| 2026-10-21 | s3.hf.co/ | probe: GET -> HTTP 403 with x-amz-request-id (live S3-compatible gateway answering) |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | buckets are object storage reached through an S3-compatible API |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | the storage plans cover buckets |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | a free user or organisation has best-effort public storage and 100 GB private |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | the free allowance was read on 2026-10-30 |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | public storage above the first few gigabytes is best-effort |
| 2026-10-30 | huggingface.co/storage | egress is included up to 8 times the stored volume |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | downloads redirect to a CDN edge; the gateway is single-region |
| 2026-10-30 | huggingface.co/storage | included egress has a quota tied to stored volume |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | the repository limitations section, which holds the 500 GB per-file limit, does not apply to buckets |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | Git-backed repositories have a 500 GB per-file hard limit |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | a free account holds 100 GB private and best-effort public storage |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | free public storage is under unstated abuse mitigations |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | part of the text of Limits, above |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | the listed S3 features are unsupported on the gateway |
| 2026-10-30 | huggingface.co/join | the join form asks an email address and a password |
| 2026-10-30 | huggingface.co/docs/hub/billing | free-tier accounts exist with no credit card on file |
| 2026-10-30 | huggingface.co/join | the identity cost is read from the join form |
| 2026-10-30 | huggingface.co/docs/hub/storage-buckets | part of the text of Reliability, above |
| 2026-10-30 | huggingface.co/docs/hub/storage-buckets | buckets are reached through the hf CLI and the Python API, not through Git |
| 2026-10-30 | huggingface.co/docs/hub/storage-buckets | an HTTP API under /api/buckets serves bucket change events |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | DVC uses a bucket as a remote through the gateway |
| 2026-10-30 | huggingface.co/storage | the storage page lists per-TB prices for public and private storage by volume tier |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | paid public storage needs a PRO, Team or Enterprise plan |
| 2026-10-30 | huggingface.co/docs/hub/main/storage-buckets-s3 | S3 keys derive from a Hugging Face access token |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | the vendor documentation was read and quoted |
| 2026-10-30 | probe: s3.hf.co | the gateway answers an anonymous GET with an S3-style 403 (application/xml, x-amz-request-id): it is live and refuses unsigned requests |
| 2026-10-30 | huggingface.co/docs/hub/en/storage-limits | the storage plans, including the free allowance, cover buckets |
| 2026-11-01 | huggingface.co/join | the join form asks an email address and a password and no phone field |
| 2026-11-01 | huggingface.co/join | the free-tier join form takes an email address, a password and Next only, with no phone field |
| 2026-11-01 | huggingface.co/join | the identity cost is an email address and a password |