Build1 distinct publisher3 min readUpdated
Flat pricing and free 3x egress make B2 hard to beat at small volumes, but Backblaze lists lifecycle transitions, object tagging, ACLs and IAM roles as unsupported.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Backblaze B2 charges one line item for storage, $0.00695 per GB per month, roughly $6.95 per TB, with free uploads and free egress up to three times your stored capacity before a $0.01/GB overage kicks in [1][2]. That structure makes B2 the cheapest reasonable option inside a specific volume band, but for a lot of teams the disqualifier arrives before the price does.
Start with the crossover. A dev.to comparison by Ethan Carter puts the point where self-hosted S3 becomes cheaper than B2 at about 7 TB for a typical backup or archive workload, inside a 5 to 10 TB band [4]. The model assumes B2 egress stays inside the free 3x allowance, self-hosted hardware amortised over 36 months, and operations at 0.15 FTE [5]. At 7 TB, B2's bill is $48.65 a month, or $583.80 a year [18], and that price includes 21 TB a month of free download [19]. So the comparison is one server, its drives, and about a sixth of an engineer against under $600 a year. The 0.15 FTE line is the assumption to argue with, and the post that publishes the model also links to RustFS downloads and its GitHub repository, so treat the crossover as a starting point rather than a finding [22].
The egress cliff is real but oddly shaped. Overage at $0.01/GB works out to $10 per TB downloaded, about 1.44 times what it costs to store a TB for a month [20]. Self-hosted stays at $0 because the bandwidth is already yours [6]. Notably, the recommendation to stay on B2 only if your monthly download ratio is under 20% of stored data [16] is about 15 times more conservative than the 300% the free tier actually allows [21]. Backup and archive traffic will not get near either number.
The feature list is where this decision usually gets made. Backblaze lists lifecycle tier transitions, object tagging, ACLs and IAM roles as unsupported in its S3-Compatible API [7]. B2 lifecycle rules only hide objects, delete them, or cancel unfinished large uploads [8]. The official gap list names five items: ACLs, IAM roles, object tagging, website configuration, and browser-based POST uploads to presigned URLs [9]. Cloud Replication is absent from the S3 API and runs through the Native API instead [10]. None of that is a pricing negotiation. If your access control model is written in IAM policy, or your cost management depends on tag-driven lifecycle rules, no per-TB rate fixes it.
What does work is the core surface: PutObject, GetObject, ListObjects, multipart upload and DeleteObject, which is why rclone, restic and Cyberduck run against B2 unchanged [12]. Presigned URLs work in both directions, and server-side encryption is available as SSE-B2 or SSE-C [13]. Object Lock with governance, compliance and legal hold modes is supported, as is bucket replication [11]. B2 also has no storage tiers or retrieval classes [3], which is part of why there is nothing for lifecycle transitions to transition to.
The hybrid split follows from that: self-hosted for hot active data, B2 as the off-site cold target, with the shared S3 API moving objects either way [15]. Worth watching before you commit to it: RustFS ships bucket replication, versioning and event notifications today, but its lifecycle management is still marked as under testing [14]. If you are leaving B2 because its lifecycle rules only hide and delete, verify that the replacement's lifecycle engine is production-ready in your own testing, not just on the feature matrix.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Backblaze B2 storage is priced at $0.00695/GB/month (about $6.95/TB/month), with no charge for uploads.
B2 egress is free up to 3x average monthly stored capacity; only egress above that is billed, at $0.01/GB. Egress beyond 3x is also free through CDN or compute partners.
B2 has no storage tiers and no retrieval classes.
Self-hosted S3 download cost is $0 because the bandwidth is the operator's own.
B2 lifecycle rules only hide objects, delete them, or cancel unfinished large uploads.
B2's S3-Compatible API covers core operations including PutObject, GetObject, ListObjects, Multipart Upload and DeleteObject, so S3-aware tools such as rclone, restic and Cyberduck work against it unchanged.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Vendor rates traceable, cost model opaque
The pricing and API-surface claims are specific, internally consistent with each other, and of a kind checkable against Backblaze documentation, which lifts the floor. But everything decision-relevant beyond that comes from one self-published post with no second source: the 7 TB crossover and the 24%/64%/74% savings figures disclose no hardware costs, replication factor, power or bandwidth inputs, self-hosted egress is booked at $0 with no transit line item, and the source contradicts itself on whether lifecycle tier transitions belong to Backblaze's official gap list.
No uptake data supplied
Nothing in the cluster measures real-world adoption of either option: no deployment counts, customer names, download or star figures, capacity under management, or usage disclosures. The two observations available describe a vendor pricing change and a feature-availability status, and the claim that 'a lot of teams' run the hybrid split is asserted without any example, so adoption cannot be scored.
Precision overstated beyond disclosed inputs
The direction of the argument is defensible and the pricing facts are not inflated, but the framing is more certain than the evidence: a single-figure crossover and three savings percentages are presented from a model whose inputs are withheld, self-hosted egress is asserted as $0 with no bandwidth cost, and the headline claims API gaps 'decide it sooner' while the same article shows B2 covering the core S3 surface and supporting Object Lock, replication, presigned URLs and SSE. The checklist is also 15x more conservative on downloads than B2's actual free allowance, which pushes readers toward self-hosting earlier than the stated terms warrant.
Vendor-adjacent comparison with product CTA
The comparison is published on a developer blogging platform and closes with download and GitHub calls to action for RustFS, one of the two self-hosted options whose cost advantage the article concludes in favour of above roughly 7 TB. No sponsorship or affiliation is disclosed, and the cost model that produces that conclusion is the author's own, so the piece carries a clear promotional interest without an independent check.
Facts usable, conclusion unverified
Confidence is moderate-low. The pricing and API-capability facts can be relied on provisionally because they are specific and vendor-documented, but the story's actual conclusion, where the crossover sits, rests on one interested publisher's undisclosed model with no adoption evidence and one unresolved internal contradiction.
build
The streaming edit is a software layer: proxies, stubs and an ffmpeg hook on storage you own1 distinct publisher
build
S3 annotations move the label without moving the bytes, and checksums cannot see it1 distinct publisher
build
One ALB rule, zero legacy commits: shipping a feature around an app nobody will touch1 distinct publisher
build
AWS Network Firewall adds rule hit counts, turning dormant-rule cleanup into a query1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026