[{"data":1,"prerenderedAt":1459},["ShallowReactive",2],{"post-\u002Fblog\u002Fs3-total-cost-of-ownership":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"author":11,"tags":12,"body":17,"_type":1453,"_id":1454,"_source":1455,"_file":1456,"_stem":1457,"_extension":1458},"\u002Fblog\u002Fs3-total-cost-of-ownership","blog",false,"","The real cost of S3: 8 providers compared, egress included","Storage is 20% of your bill. We modelled 8 S3 providers across 4 workloads — backup, app, media, DR — with storage, egress, requests and replication.","2026-10-30","Clement Baranger",[13,14,15,16],"s3","pricing","cloud","cost-optimisation",{"type":18,"children":19,"toc":1439},"root",[20,28,33,38,45,58,103,115,134,140,194,199,205,475,494,500,505,624,636,641,647,652,764,776,791,797,802,917,932,959,976,991,1003,1009,1014,1129,1144,1156,1162,1172,1182,1192,1198,1271,1283,1289,1301,1313,1331,1343,1348,1358,1370,1376,1434],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","Every \"S3 pricing comparison\" ranks providers by the storage line: $0.023 here, $0.00695 there. That number is almost meaningless.",{"type":21,"tag":22,"props":29,"children":30},{},[31],{"type":26,"value":32},"On a real invoice, storage is often a minority. Egress, request volume, retrieval fees, replication and minimum-storage durations decide the bill — and they scale differently for every workload. A provider that is 3× cheaper per stored gigabyte can be 5× more expensive the moment you actually serve the data.",{"type":21,"tag":22,"props":34,"children":35},{},[36],{"type":26,"value":37},"So we modelled it. Eight providers, four workloads, one formula, every component included.",{"type":21,"tag":39,"props":40,"children":42},"h2",{"id":41},"what-we-modelled-and-what-we-did-not",[43],{"type":26,"value":44},"What we modelled (and what we did not)",{"type":21,"tag":22,"props":46,"children":47},{},[48,50,56],{"type":26,"value":49},"Monthly cost = ",{"type":21,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":26,"value":55},"storage + egress + requests + base fee",{"type":26,"value":57},", for a steady-state month.",{"type":21,"tag":59,"props":60,"children":61},"ul",{},[62,73,83,93],{"type":21,"tag":63,"props":64,"children":65},"li",{},[66,71],{"type":21,"tag":51,"props":67,"children":68},{},[69],{"type":26,"value":70},"Storage",{"type":26,"value":72},": GB-month, binary gigabytes (1 TB = 1,024 GB), as every provider bills it.",{"type":21,"tag":63,"props":74,"children":75},{},[76,81],{"type":21,"tag":51,"props":77,"children":78},{},[79],{"type":26,"value":80},"Egress",{"type":26,"value":82},": internet data transfer out, after each provider's free allowance and fair-use rules.",{"type":21,"tag":63,"props":84,"children":85},{},[86,91],{"type":21,"tag":51,"props":87,"children":88},{},[89],{"type":26,"value":90},"Requests",{"type":26,"value":92},": PUT\u002FLIST and GET class pricing, at the volume each scenario implies.",{"type":21,"tag":63,"props":94,"children":95},{},[96,101],{"type":21,"tag":51,"props":97,"children":98},{},[99],{"type":26,"value":100},"Not modelled",{"type":26,"value":102},": cross-region replication transfer (treated separately in scenario 4), retrieval fees for cold tiers, Transfer Acceleration, and support plans.",{"type":21,"tag":22,"props":104,"children":105},{},[106,108,113],{"type":26,"value":107},"Prices are ",{"type":21,"tag":51,"props":109,"children":110},{},[111],{"type":26,"value":112},"list prices captured on 30 October 2026",{"type":26,"value":114}," from each vendor's pricing page, in USD. They change constantly — treat the shape of the curves as the durable insight, not the exact dollars.",{"type":21,"tag":116,"props":117,"children":118},"figure",{},[119,121,127,128],{"type":26,"value":120},"\n  ",{"type":21,"tag":122,"props":123,"children":126},"img",{"src":124,"alt":125},"\u002Fcharts\u002Fcost-backup-and-archive.svg","Monthly cost for 10 TB stored with 5% monthly egress across 8 S3 providers",[],{"type":26,"value":120},{"type":21,"tag":129,"props":130,"children":131},"figcaption",{},[132],{"type":26,"value":133},"Backup & archive: 10 TB stored, 512 GB served per month.",{"type":21,"tag":39,"props":135,"children":137},{"id":136},"the-five-components-nobody-quotes",[138],{"type":26,"value":139},"The five components nobody quotes",{"type":21,"tag":141,"props":142,"children":143},"ol",{},[144,154,164,174,184],{"type":21,"tag":63,"props":145,"children":146},{},[147,152],{"type":21,"tag":51,"props":148,"children":149},{},[150],{"type":26,"value":151},"Storage per GB-month.",{"type":26,"value":153}," The headline, and the least interesting.",{"type":21,"tag":63,"props":155,"children":156},{},[157,162],{"type":21,"tag":51,"props":158,"children":159},{},[160],{"type":26,"value":161},"Egress per GB.",{"type":26,"value":163}," Ranges from $0 to $0.12 — a 12× spread on the same gigabyte.",{"type":21,"tag":63,"props":165,"children":166},{},[167,172],{"type":21,"tag":51,"props":168,"children":169},{},[170],{"type":26,"value":171},"Requests.",{"type":26,"value":173}," Negligible below ~50M\u002Fmonth, decisive above ~500M\u002Fmonth.",{"type":21,"tag":63,"props":175,"children":176},{},[177,182],{"type":21,"tag":51,"props":178,"children":179},{},[180],{"type":26,"value":181},"Minimum durations.",{"type":26,"value":183}," Wasabi bills 90 days whether you keep the object 90 days or 90 minutes. GCS Nearline is 30 days, Coldline 90, Archive 365.",{"type":21,"tag":63,"props":185,"children":186},{},[187,192],{"type":21,"tag":51,"props":188,"children":189},{},[190],{"type":26,"value":191},"Minimum billable size.",{"type":26,"value":193}," S3 Standard-IA bills 128 KB minimum per object — a million 4 KB objects cost you 32× their real size.",{"type":21,"tag":22,"props":195,"children":196},{},[197],{"type":26,"value":198},"Items 4 and 5 are where \"cheap\" providers quietly become expensive.",{"type":21,"tag":39,"props":200,"children":202},{"id":201},"the-list-prices",[203],{"type":26,"value":204},"The list prices",{"type":21,"tag":206,"props":207,"children":208},"table",{},[209,243],{"type":21,"tag":210,"props":211,"children":212},"thead",{},[213],{"type":21,"tag":214,"props":215,"children":216},"tr",{},[217,223,228,233,238],{"type":21,"tag":218,"props":219,"children":220},"th",{},[221],{"type":26,"value":222},"Provider",{"type":21,"tag":218,"props":224,"children":225},{},[226],{"type":26,"value":227},"Storage $\u002FGB-mo",{"type":21,"tag":218,"props":229,"children":230},{},[231],{"type":26,"value":232},"Egress $\u002FGB",{"type":21,"tag":218,"props":234,"children":235},{},[236],{"type":26,"value":237},"Free egress",{"type":21,"tag":218,"props":239,"children":240},{},[241],{"type":26,"value":242},"Requests (PUT \u002F GET per 1M)",{"type":21,"tag":244,"props":245,"children":246},"tbody",{},[247,276,302,333,361,392,418,446],{"type":21,"tag":214,"props":248,"children":249},{},[250,256,261,266,271],{"type":21,"tag":251,"props":252,"children":253},"td",{},[254],{"type":26,"value":255},"AWS S3 (us-east-1)",{"type":21,"tag":251,"props":257,"children":258},{},[259],{"type":26,"value":260},"0.023",{"type":21,"tag":251,"props":262,"children":263},{},[264],{"type":26,"value":265},"0.09",{"type":21,"tag":251,"props":267,"children":268},{},[269],{"type":26,"value":270},"100 GB",{"type":21,"tag":251,"props":272,"children":273},{},[274],{"type":26,"value":275},"$5.00 \u002F $0.40",{"type":21,"tag":214,"props":277,"children":278},{},[279,284,289,294,298],{"type":21,"tag":251,"props":280,"children":281},{},[282],{"type":26,"value":283},"Google Cloud Storage",{"type":21,"tag":251,"props":285,"children":286},{},[287],{"type":26,"value":288},"0.020",{"type":21,"tag":251,"props":290,"children":291},{},[292],{"type":26,"value":293},"0.12",{"type":21,"tag":251,"props":295,"children":296},{},[297],{"type":26,"value":270},{"type":21,"tag":251,"props":299,"children":300},{},[301],{"type":26,"value":275},{"type":21,"tag":214,"props":303,"children":304},{},[305,310,315,323,328],{"type":21,"tag":251,"props":306,"children":307},{},[308],{"type":26,"value":309},"Cloudflare R2",{"type":21,"tag":251,"props":311,"children":312},{},[313],{"type":26,"value":314},"0.015",{"type":21,"tag":251,"props":316,"children":317},{},[318],{"type":21,"tag":51,"props":319,"children":320},{},[321],{"type":26,"value":322},"0",{"type":21,"tag":251,"props":324,"children":325},{},[326],{"type":26,"value":327},"unlimited",{"type":21,"tag":251,"props":329,"children":330},{},[331],{"type":26,"value":332},"$4.50 \u002F $0.36",{"type":21,"tag":214,"props":334,"children":335},{},[336,341,346,351,356],{"type":21,"tag":251,"props":337,"children":338},{},[339],{"type":26,"value":340},"Backblaze B2",{"type":21,"tag":251,"props":342,"children":343},{},[344],{"type":26,"value":345},"0.00695",{"type":21,"tag":251,"props":347,"children":348},{},[349],{"type":26,"value":350},"0.01",{"type":21,"tag":251,"props":352,"children":353},{},[354],{"type":26,"value":355},"up to 3× stored",{"type":21,"tag":251,"props":357,"children":358},{},[359],{"type":26,"value":360},"free",{"type":21,"tag":214,"props":362,"children":363},{},[364,369,374,383,388],{"type":21,"tag":251,"props":365,"children":366},{},[367],{"type":26,"value":368},"Wasabi",{"type":21,"tag":251,"props":370,"children":371},{},[372],{"type":26,"value":373},"0.00799",{"type":21,"tag":251,"props":375,"children":376},{},[377,381],{"type":21,"tag":51,"props":378,"children":379},{},[380],{"type":26,"value":322},{"type":26,"value":382}," (fair use)",{"type":21,"tag":251,"props":384,"children":385},{},[386],{"type":26,"value":387},"policy-bound",{"type":21,"tag":251,"props":389,"children":390},{},[391],{"type":26,"value":360},{"type":21,"tag":214,"props":393,"children":394},{},[395,400,405,409,414],{"type":21,"tag":251,"props":396,"children":397},{},[398],{"type":26,"value":399},"DigitalOcean Spaces",{"type":21,"tag":251,"props":401,"children":402},{},[403],{"type":26,"value":404},"0.02 (after 250 GiB)",{"type":21,"tag":251,"props":406,"children":407},{},[408],{"type":26,"value":350},{"type":21,"tag":251,"props":410,"children":411},{},[412],{"type":26,"value":413},"1 TiB",{"type":21,"tag":251,"props":415,"children":416},{},[417],{"type":26,"value":360},{"type":21,"tag":214,"props":419,"children":420},{},[421,426,431,438,442],{"type":21,"tag":251,"props":422,"children":423},{},[424],{"type":26,"value":425},"OVHcloud (Standard 3-AZ)",{"type":21,"tag":251,"props":427,"children":428},{},[429],{"type":26,"value":430},"0.0157",{"type":21,"tag":251,"props":432,"children":433},{},[434],{"type":21,"tag":51,"props":435,"children":436},{},[437],{"type":26,"value":322},{"type":21,"tag":251,"props":439,"children":440},{},[441],{"type":26,"value":327},{"type":21,"tag":251,"props":443,"children":444},{},[445],{"type":26,"value":360},{"type":21,"tag":214,"props":447,"children":448},{},[449,454,459,466,471],{"type":21,"tag":251,"props":450,"children":451},{},[452],{"type":26,"value":453},"MinIO (self-hosted)",{"type":21,"tag":251,"props":455,"children":456},{},[457],{"type":26,"value":458},"~fixed infra",{"type":21,"tag":251,"props":460,"children":461},{},[462],{"type":21,"tag":51,"props":463,"children":464},{},[465],{"type":26,"value":322},{"type":21,"tag":251,"props":467,"children":468},{},[469],{"type":26,"value":470},"n\u002Fa",{"type":21,"tag":251,"props":472,"children":473},{},[474],{"type":26,"value":360},{"type":21,"tag":22,"props":476,"children":477},{},[478,480,485,487,492],{"type":26,"value":479},"Two entries deserve immediate suspicion. ",{"type":21,"tag":51,"props":481,"children":482},{},[483],{"type":26,"value":484},"R2's $0.015 is more than double Backblaze's $0.00695.",{"type":26,"value":486}," And ",{"type":21,"tag":51,"props":488,"children":489},{},[490],{"type":26,"value":491},"Wasabi is cheaper per GB than R2 while also having no egress fees",{"type":26,"value":493}," — on paper, R2 loses to Wasabi on every axis. Keep that in mind for the rest of the article.",{"type":21,"tag":39,"props":495,"children":497},{"id":496},"scenario-1-backup-archive",[498],{"type":26,"value":499},"Scenario 1 — Backup & archive",{"type":21,"tag":22,"props":501,"children":502},{},[503],{"type":26,"value":504},"10 TB stored, 5% served per month (512 GB), 1M PUT, 2M GET.",{"type":21,"tag":206,"props":506,"children":507},{},[508,523],{"type":21,"tag":210,"props":509,"children":510},{},[511],{"type":21,"tag":214,"props":512,"children":513},{},[514,518],{"type":21,"tag":218,"props":515,"children":516},{},[517],{"type":26,"value":222},{"type":21,"tag":218,"props":519,"children":520},{},[521],{"type":26,"value":522},"Monthly",{"type":21,"tag":244,"props":524,"children":525},{},[526,538,550,562,574,587,599,611],{"type":21,"tag":214,"props":527,"children":528},{},[529,533],{"type":21,"tag":251,"props":530,"children":531},{},[532],{"type":26,"value":453},{"type":21,"tag":251,"props":534,"children":535},{},[536],{"type":26,"value":537},"$55",{"type":21,"tag":214,"props":539,"children":540},{},[541,545],{"type":21,"tag":251,"props":542,"children":543},{},[544],{"type":26,"value":340},{"type":21,"tag":251,"props":546,"children":547},{},[548],{"type":26,"value":549},"$71",{"type":21,"tag":214,"props":551,"children":552},{},[553,557],{"type":21,"tag":251,"props":554,"children":555},{},[556],{"type":26,"value":368},{"type":21,"tag":251,"props":558,"children":559},{},[560],{"type":26,"value":561},"$82",{"type":21,"tag":214,"props":563,"children":564},{},[565,569],{"type":21,"tag":251,"props":566,"children":567},{},[568],{"type":26,"value":309},{"type":21,"tag":251,"props":570,"children":571},{},[572],{"type":26,"value":573},"$159",{"type":21,"tag":214,"props":575,"children":576},{},[577,582],{"type":21,"tag":251,"props":578,"children":579},{},[580],{"type":26,"value":581},"OVHcloud",{"type":21,"tag":251,"props":583,"children":584},{},[585],{"type":26,"value":586},"$161",{"type":21,"tag":214,"props":588,"children":589},{},[590,594],{"type":21,"tag":251,"props":591,"children":592},{},[593],{"type":26,"value":399},{"type":21,"tag":251,"props":595,"children":596},{},[597],{"type":26,"value":598},"$205",{"type":21,"tag":214,"props":600,"children":601},{},[602,606],{"type":21,"tag":251,"props":603,"children":604},{},[605],{"type":26,"value":283},{"type":21,"tag":251,"props":607,"children":608},{},[609],{"type":26,"value":610},"$260",{"type":21,"tag":214,"props":612,"children":613},{},[614,619],{"type":21,"tag":251,"props":615,"children":616},{},[617],{"type":26,"value":618},"AWS S3",{"type":21,"tag":251,"props":620,"children":621},{},[622],{"type":26,"value":623},"$278",{"type":21,"tag":22,"props":625,"children":626},{},[627,629,634],{"type":26,"value":628},"For cold-ish data, storage price dominates and ",{"type":21,"tag":51,"props":630,"children":631},{},[632],{"type":26,"value":633},"Backblaze wins the managed providers",{"type":26,"value":635}," at $6.95\u002FTB. AWS costs 3.9× more than B2 for the same 10 TB.",{"type":21,"tag":22,"props":637,"children":638},{},[639],{"type":26,"value":640},"Note that R2 lands mid-table. Its free egress buys nothing when you barely egress.",{"type":21,"tag":39,"props":642,"children":644},{"id":643},"scenario-2-application-data",[645],{"type":26,"value":646},"Scenario 2 — Application data",{"type":21,"tag":22,"props":648,"children":649},{},[650],{"type":26,"value":651},"10 TB stored, 30% served (3 TB), 20M PUT, 200M GET — a typical SaaS tenant dataset.",{"type":21,"tag":206,"props":653,"children":654},{},[655,669],{"type":21,"tag":210,"props":656,"children":657},{},[658],{"type":21,"tag":214,"props":659,"children":660},{},[661,665],{"type":21,"tag":218,"props":662,"children":663},{},[664],{"type":26,"value":222},{"type":21,"tag":218,"props":666,"children":667},{},[668],{"type":26,"value":522},{"type":21,"tag":244,"props":670,"children":671},{},[672,683,694,705,716,728,740,752],{"type":21,"tag":214,"props":673,"children":674},{},[675,679],{"type":21,"tag":251,"props":676,"children":677},{},[678],{"type":26,"value":453},{"type":21,"tag":251,"props":680,"children":681},{},[682],{"type":26,"value":537},{"type":21,"tag":214,"props":684,"children":685},{},[686,690],{"type":21,"tag":251,"props":687,"children":688},{},[689],{"type":26,"value":340},{"type":21,"tag":251,"props":691,"children":692},{},[693],{"type":26,"value":549},{"type":21,"tag":214,"props":695,"children":696},{},[697,701],{"type":21,"tag":251,"props":698,"children":699},{},[700],{"type":26,"value":368},{"type":21,"tag":251,"props":702,"children":703},{},[704],{"type":26,"value":561},{"type":21,"tag":214,"props":706,"children":707},{},[708,712],{"type":21,"tag":251,"props":709,"children":710},{},[711],{"type":26,"value":581},{"type":21,"tag":251,"props":713,"children":714},{},[715],{"type":26,"value":586},{"type":21,"tag":214,"props":717,"children":718},{},[719,723],{"type":21,"tag":251,"props":720,"children":721},{},[722],{"type":26,"value":399},{"type":21,"tag":251,"props":724,"children":725},{},[726],{"type":26,"value":727},"$225",{"type":21,"tag":214,"props":729,"children":730},{},[731,735],{"type":21,"tag":251,"props":732,"children":733},{},[734],{"type":26,"value":309},{"type":21,"tag":251,"props":736,"children":737},{},[738],{"type":26,"value":739},"$316",{"type":21,"tag":214,"props":741,"children":742},{},[743,747],{"type":21,"tag":251,"props":744,"children":745},{},[746],{"type":26,"value":618},{"type":21,"tag":251,"props":748,"children":749},{},[750],{"type":26,"value":751},"$683",{"type":21,"tag":214,"props":753,"children":754},{},[755,759],{"type":21,"tag":251,"props":756,"children":757},{},[758],{"type":26,"value":283},{"type":21,"tag":251,"props":760,"children":761},{},[762],{"type":26,"value":763},"$741",{"type":21,"tag":22,"props":765,"children":766},{},[767,769,774],{"type":26,"value":768},"R2 climbs because 200M GET requests cost $72 and its storage premium bites. ",{"type":21,"tag":51,"props":770,"children":771},{},[772],{"type":26,"value":773},"AWS and GCS are now 8–10× B2.",{"type":26,"value":775}," At this egress ratio, B2's \"3× free\" rule is still not binding (3 TB \u003C 3 × 10 TB).",{"type":21,"tag":116,"props":777,"children":778},{},[779,780,785,786],{"type":26,"value":120},{"type":21,"tag":122,"props":781,"children":784},{"src":782,"alt":783},"\u002Fcharts\u002Fcost-application-data.svg","Monthly cost for 10 TB stored with 30% monthly egress across 8 S3 providers",[],{"type":26,"value":120},{"type":21,"tag":129,"props":787,"children":788},{},[789],{"type":26,"value":790},"Application data: 10 TB stored, 3 TB served, 200M GETs.",{"type":21,"tag":39,"props":792,"children":794},{"id":793},"scenario-3-media-distribution-the-egress-cliff",[795],{"type":26,"value":796},"Scenario 3 — Media distribution: the egress cliff",{"type":21,"tag":22,"props":798,"children":799},{},[800],{"type":26,"value":801},"5 TB stored, but 20 TB served per month — a 400% egress ratio, normal for video, images or public datasets.",{"type":21,"tag":206,"props":803,"children":804},{},[805,819],{"type":21,"tag":210,"props":806,"children":807},{},[808],{"type":21,"tag":214,"props":809,"children":810},{},[811,815],{"type":21,"tag":218,"props":812,"children":813},{},[814],{"type":26,"value":222},{"type":21,"tag":218,"props":816,"children":817},{},[818],{"type":26,"value":522},{"type":21,"tag":244,"props":820,"children":821},{},[822,834,845,857,869,881,893,905],{"type":21,"tag":214,"props":823,"children":824},{},[825,829],{"type":21,"tag":251,"props":826,"children":827},{},[828],{"type":26,"value":368},{"type":21,"tag":251,"props":830,"children":831},{},[832],{"type":26,"value":833},"$41*",{"type":21,"tag":214,"props":835,"children":836},{},[837,841],{"type":21,"tag":251,"props":838,"children":839},{},[840],{"type":26,"value":453},{"type":21,"tag":251,"props":842,"children":843},{},[844],{"type":26,"value":537},{"type":21,"tag":214,"props":846,"children":847},{},[848,852],{"type":21,"tag":251,"props":849,"children":850},{},[851],{"type":26,"value":581},{"type":21,"tag":251,"props":853,"children":854},{},[855],{"type":26,"value":856},"$80",{"type":21,"tag":214,"props":858,"children":859},{},[860,864],{"type":21,"tag":251,"props":861,"children":862},{},[863],{"type":26,"value":340},{"type":21,"tag":251,"props":865,"children":866},{},[867],{"type":26,"value":868},"$87",{"type":21,"tag":214,"props":870,"children":871},{},[872,876],{"type":21,"tag":251,"props":873,"children":874},{},[875],{"type":26,"value":309},{"type":21,"tag":251,"props":877,"children":878},{},[879],{"type":26,"value":880},"$194",{"type":21,"tag":214,"props":882,"children":883},{},[884,888],{"type":21,"tag":251,"props":885,"children":886},{},[887],{"type":26,"value":399},{"type":21,"tag":251,"props":889,"children":890},{},[891],{"type":26,"value":892},"$297",{"type":21,"tag":214,"props":894,"children":895},{},[896,900],{"type":21,"tag":251,"props":897,"children":898},{},[899],{"type":26,"value":618},{"type":21,"tag":251,"props":901,"children":902},{},[903],{"type":26,"value":904},"$2,082",{"type":21,"tag":214,"props":906,"children":907},{},[908,912],{"type":21,"tag":251,"props":909,"children":910},{},[911],{"type":26,"value":283},{"type":21,"tag":251,"props":913,"children":914},{},[915],{"type":26,"value":916},"$2,678",{"type":21,"tag":116,"props":918,"children":919},{},[920,921,926,927],{"type":26,"value":120},{"type":21,"tag":122,"props":922,"children":925},{"src":923,"alt":924},"\u002Fcharts\u002Fcost-media-distribution.svg","Monthly cost for 5 TB stored with 400% monthly egress across 8 S3 providers",[],{"type":26,"value":120},{"type":21,"tag":129,"props":928,"children":929},{},[930],{"type":26,"value":931},"Media distribution: 5 TB stored, 20 TB served per month.",{"type":21,"tag":22,"props":933,"children":934},{},[935,937,942,944,949,951,957],{"type":26,"value":936},"* ",{"type":21,"tag":51,"props":938,"children":939},{},[940],{"type":26,"value":941},"And this is where the asterisk matters.",{"type":26,"value":943}," Wasabi's \"no egress fees\" is a ",{"type":21,"tag":51,"props":945,"children":946},{},[947],{"type":26,"value":948},"fair-use",{"type":26,"value":950}," policy: free egress is expected to stay around or below your stored volume. Serving 4× your stored data every month is outside that policy — Wasabi can throttle or bill the excess. The $41 is the price ",{"type":21,"tag":952,"props":953,"children":954},"em",{},[955],{"type":26,"value":956},"if they let you",{"type":26,"value":958},", which for a real media workload they probably won't.",{"type":21,"tag":22,"props":960,"children":961},{},[962,964,968,970,974],{"type":26,"value":963},"The honest winner for high-egress workloads is ",{"type":21,"tag":51,"props":965,"children":966},{},[967],{"type":26,"value":309},{"type":26,"value":969}," or ",{"type":21,"tag":51,"props":971,"children":972},{},[973],{"type":26,"value":581},{"type":26,"value":975},", both with genuinely unlimited free egress. R2 costs 10× less than AWS here; OVH costs 26× less.",{"type":21,"tag":116,"props":977,"children":978},{},[979,980,985,986],{"type":26,"value":120},{"type":21,"tag":122,"props":981,"children":984},{"src":982,"alt":983},"\u002Fcharts\u002Fegress-cliff.svg","Line chart of monthly cost versus monthly egress volume at 10 TB stored, showing AWS and GCS crossing $2,000 while R2 and OVH stay flat",[],{"type":26,"value":120},{"type":21,"tag":129,"props":987,"children":988},{},[989],{"type":26,"value":990},"Same 10 TB stored, egress from 0 to 20 TB\u002Fmonth. The managed giants are linear in egress; R2 and OVH are flat.",{"type":21,"tag":22,"props":992,"children":993},{},[994,996,1001],{"type":26,"value":995},"This is the chart to keep. At 20 TB egress per month, ",{"type":21,"tag":51,"props":997,"children":998},{},[999],{"type":26,"value":1000},"AWS costs $2,082 and GCS $2,678, against $194 for R2 and $161 for OVHcloud.",{"type":26,"value":1002}," Storage is identical in all four cases.",{"type":21,"tag":39,"props":1004,"children":1006},{"id":1005},"scenario-4-cross-region-dr",[1007],{"type":26,"value":1008},"Scenario 4 — Cross-region DR",{"type":21,"tag":22,"props":1010,"children":1011},{},[1012],{"type":26,"value":1013},"10 TB primary + 10 TB replica, 5% served.",{"type":21,"tag":206,"props":1015,"children":1016},{},[1017,1031],{"type":21,"tag":210,"props":1018,"children":1019},{},[1020],{"type":21,"tag":214,"props":1021,"children":1022},{},[1023,1027],{"type":21,"tag":218,"props":1024,"children":1025},{},[1026],{"type":26,"value":222},{"type":21,"tag":218,"props":1028,"children":1029},{},[1030],{"type":26,"value":522},{"type":21,"tag":244,"props":1032,"children":1033},{},[1034,1045,1057,1069,1081,1093,1105,1117],{"type":21,"tag":214,"props":1035,"children":1036},{},[1037,1041],{"type":21,"tag":251,"props":1038,"children":1039},{},[1040],{"type":26,"value":453},{"type":21,"tag":251,"props":1042,"children":1043},{},[1044],{"type":26,"value":537},{"type":21,"tag":214,"props":1046,"children":1047},{},[1048,1052],{"type":21,"tag":251,"props":1049,"children":1050},{},[1051],{"type":26,"value":340},{"type":21,"tag":251,"props":1053,"children":1054},{},[1055],{"type":26,"value":1056},"$142",{"type":21,"tag":214,"props":1058,"children":1059},{},[1060,1064],{"type":21,"tag":251,"props":1061,"children":1062},{},[1063],{"type":26,"value":368},{"type":21,"tag":251,"props":1065,"children":1066},{},[1067],{"type":26,"value":1068},"$164",{"type":21,"tag":214,"props":1070,"children":1071},{},[1072,1076],{"type":21,"tag":251,"props":1073,"children":1074},{},[1075],{"type":26,"value":309},{"type":21,"tag":251,"props":1077,"children":1078},{},[1079],{"type":26,"value":1080},"$314",{"type":21,"tag":214,"props":1082,"children":1083},{},[1084,1088],{"type":21,"tag":251,"props":1085,"children":1086},{},[1087],{"type":26,"value":581},{"type":21,"tag":251,"props":1089,"children":1090},{},[1091],{"type":26,"value":1092},"$322",{"type":21,"tag":214,"props":1094,"children":1095},{},[1096,1100],{"type":21,"tag":251,"props":1097,"children":1098},{},[1099],{"type":26,"value":399},{"type":21,"tag":251,"props":1101,"children":1102},{},[1103],{"type":26,"value":1104},"$410",{"type":21,"tag":214,"props":1106,"children":1107},{},[1108,1112],{"type":21,"tag":251,"props":1109,"children":1110},{},[1111],{"type":26,"value":283},{"type":21,"tag":251,"props":1113,"children":1114},{},[1115],{"type":26,"value":1116},"$527",{"type":21,"tag":214,"props":1118,"children":1119},{},[1120,1124],{"type":21,"tag":251,"props":1121,"children":1122},{},[1123],{"type":26,"value":618},{"type":21,"tag":251,"props":1125,"children":1126},{},[1127],{"type":26,"value":1128},"$561",{"type":21,"tag":116,"props":1130,"children":1131},{},[1132,1133,1138,1139],{"type":26,"value":120},{"type":21,"tag":122,"props":1134,"children":1137},{"src":1135,"alt":1136},"\u002Fcharts\u002Fcost-cross-region-dr.svg","Monthly cost for 10 TB primary plus 10 TB replica across 8 S3 providers",[],{"type":26,"value":120},{"type":21,"tag":129,"props":1140,"children":1141},{},[1142],{"type":26,"value":1143},"Cross-region DR: 20 TB total stored, 5% served.",{"type":21,"tag":22,"props":1145,"children":1146},{},[1147,1149,1154],{"type":26,"value":1148},"Replication doubles storage and adds inter-region transfer. On AWS, replicating 10 TB across regions costs ",{"type":21,"tag":51,"props":1150,"children":1151},{},[1152],{"type":26,"value":1153},"$0.02\u002FGB",{"type":26,"value":1155}," in transfer alone — $205 for a one-off, plus double storage forever. B2 and Wasabi stay cheapest because their storage rate is simply lower.",{"type":21,"tag":39,"props":1157,"children":1159},{"id":1158},"the-three-traps-that-break-the-model",[1160],{"type":26,"value":1161},"The three traps that break the model",{"type":21,"tag":22,"props":1163,"children":1164},{},[1165,1170],{"type":21,"tag":51,"props":1166,"children":1167},{},[1168],{"type":26,"value":1169},"1. Fair-use egress.",{"type":26,"value":1171}," \"Free egress\" is not always free. Wasabi ties it to your stored volume; Backblaze caps it at 3× stored; DigitalOcean gives 1 TiB then bills. Only R2 and OVHcloud are unconditional.",{"type":21,"tag":22,"props":1173,"children":1174},{},[1175,1180],{"type":21,"tag":51,"props":1176,"children":1177},{},[1178],{"type":26,"value":1179},"2. Minimum storage duration.",{"type":26,"value":1181}," Wasabi's 90-day minimum means deleting a 10 TB dataset after a week still bills three months — $240 instead of $18. GCS Nearline (30 days) and Archive (365 days) have the same trap. For ephemeral data (CI artifacts, temporary exports), a \"cheap\" tier can cost more than S3 Standard.",{"type":21,"tag":22,"props":1183,"children":1184},{},[1185,1190],{"type":21,"tag":51,"props":1186,"children":1187},{},[1188],{"type":26,"value":1189},"3. Retrieval and request fees at scale.",{"type":26,"value":1191}," GCS and S3 charge per GB retrieved from cold tiers. At 500M GETs\u002Fmonth, AWS's $0.0004\u002F1,000 becomes $200 — more than the storage of most small buckets.",{"type":21,"tag":39,"props":1193,"children":1195},{"id":1194},"what-the-numbers-actually-say",[1196],{"type":26,"value":1197},"What the numbers actually say",{"type":21,"tag":59,"props":1199,"children":1200},{},[1201,1210,1226,1242,1251,1261],{"type":21,"tag":63,"props":1202,"children":1203},{},[1204,1208],{"type":21,"tag":51,"props":1205,"children":1206},{},[1207],{"type":26,"value":340},{"type":26,"value":1209}," is the cheapest managed provider for low-to-moderate egress. $6.95\u002FTB and a 3× egress allowance cover most application workloads.",{"type":21,"tag":63,"props":1211,"children":1212},{},[1213,1217,1219,1224],{"type":21,"tag":51,"props":1214,"children":1215},{},[1216],{"type":26,"value":368},{"type":26,"value":1218}," is the cheapest per GB with free egress, but the 90-day minimum and fair-use policy make it a fit for ",{"type":21,"tag":952,"props":1220,"children":1221},{},[1222],{"type":26,"value":1223},"stable, long-lived",{"type":26,"value":1225}," data only.",{"type":21,"tag":63,"props":1227,"children":1228},{},[1229,1233,1235,1240],{"type":21,"tag":51,"props":1230,"children":1231},{},[1232],{"type":26,"value":309},{"type":26,"value":1234}," is not the cheapest — it is the ",{"type":21,"tag":51,"props":1236,"children":1237},{},[1238],{"type":26,"value":1239},"safest bet when egress is unpredictable",{"type":26,"value":1241},". No minimum duration, no fair-use clause, no egress fee, and it beats AWS on storage by 35%.",{"type":21,"tag":63,"props":1243,"children":1244},{},[1245,1249],{"type":21,"tag":51,"props":1246,"children":1247},{},[1248],{"type":26,"value":581},{"type":26,"value":1250}," is the dark horse: $0.0157\u002FGB, zero egress, zero API fees, EU sovereign. At high egress it is the cheapest thing on the list.",{"type":21,"tag":63,"props":1252,"children":1253},{},[1254,1259],{"type":21,"tag":51,"props":1255,"children":1256},{},[1257],{"type":26,"value":1258},"AWS and GCS",{"type":26,"value":1260}," win on ecosystem, tiering depth, regions and compliance — never on this bill.",{"type":21,"tag":63,"props":1262,"children":1263},{},[1264,1269],{"type":21,"tag":51,"props":1265,"children":1266},{},[1267],{"type":26,"value":1268},"MinIO",{"type":26,"value":1270}," wins below ~30 TB if you already run hardware and value the operational control. Above that, the ops burden grows faster than the savings.",{"type":21,"tag":22,"props":1272,"children":1273},{},[1274,1276,1281],{"type":26,"value":1275},"The rule of thumb: ",{"type":21,"tag":51,"props":1277,"children":1278},{},[1279],{"type":26,"value":1280},"compute your egress-to-storage ratio first.",{"type":26,"value":1282}," Below 30%, buy the cheapest storage. Above 100%, buy the cheapest egress. Everything else is marketing.",{"type":21,"tag":39,"props":1284,"children":1286},{"id":1285},"where-this-model-meets-your-actual-bill",[1287],{"type":26,"value":1288},"Where this model meets your actual bill",{"type":21,"tag":22,"props":1290,"children":1291},{},[1292,1294,1299],{"type":26,"value":1293},"Everything above assumes a workload profile. Your real numbers live in your bucket — and the ",{"type":21,"tag":51,"props":1295,"children":1296},{},[1297],{"type":26,"value":1298},"request",{"type":26,"value":1300}," side is the one nobody looks at, even though it is easy to measure.",{"type":21,"tag":22,"props":1302,"children":1303},{},[1304,1306,1311],{"type":26,"value":1305},"S3 Explorer is the desktop client we build. It connects to 25 S3-compatible providers with a read-only key and keeps a ",{"type":21,"tag":51,"props":1307,"children":1308},{},[1309],{"type":26,"value":1310},"local request-metrics dashboard",{"type":26,"value":1312},": requests per category, error rate, an hourly distribution, and a cost estimate with a monthly projection, priced from the provider's own request rates.",{"type":21,"tag":116,"props":1314,"children":1315},{},[1316,1317,1325,1326],{"type":26,"value":120},{"type":21,"tag":122,"props":1318,"children":1324},{"src":1319,"alt":1320,"width":1321,"height":1322,"loading":1323},"\u002Fscreenshots\u002Fs3-request-metrics.webp","S3 Explorer request metrics dashboard: 250 requests, $0.0011 cost, $0.03 monthly projection, requests by category with LIST at 87.6%, index efficiency gauge showing 135 requests saved, and an hourly distribution chart",1500,690,"lazy",[],{"type":26,"value":120},{"type":21,"tag":129,"props":1327,"children":1328},{},[1329],{"type":26,"value":1330},"The request-metrics dashboard: cost estimate, monthly projection, request mix, and the index efficiency that counts the LIST calls the local index avoided.",{"type":21,"tag":22,"props":1332,"children":1333},{},[1334,1336,1341],{"type":26,"value":1335},"That is a real session against a MinIO endpoint: 250 requests, of which ",{"type":21,"tag":51,"props":1337,"children":1338},{},[1339],{"type":26,"value":1340},"87.6% were LIST",{"type":26,"value":1342}," — the exact request type this article prices at $5 per million on AWS. The local index answered 135 of those listings without touching the bucket, and the dashboard turns that into money ($0.0007 on 250 requests — multiply by your real volume before dismissing it).",{"type":21,"tag":22,"props":1344,"children":1345},{},[1346],{"type":26,"value":1347},"Requests are one half of the bill. For the egress half, read your provider's usage report, then come back to the scenario that matches your ratio.",{"type":21,"tag":22,"props":1349,"children":1350},{},[1351,1356],{"type":21,"tag":51,"props":1352,"children":1353},{},[1354],{"type":26,"value":1355},"Run the numbers on your own buckets.",{"type":26,"value":1357}," Connect a read-only key and the dashboard shows what your workload actually costs per month — a Rust + Tauri app for Windows, macOS and Linux, free to start.",{"type":21,"tag":22,"props":1359,"children":1361},{"style":1360},"margin:1.75rem 0 0",[1362],{"type":21,"tag":1363,"props":1364,"children":1367},"a",{"href":1365,"style":1366},"https:\u002F\u002Fs3explorer.accessdevops.com\u002F","display:inline-block;background:#0f766e;color:#ffffff;font-weight:600;font-size:0.95rem;padding:0.8rem 1.5rem;border-radius:0.5rem;text-decoration:none",[1368],{"type":26,"value":1369},"Download S3 Explorer →",{"type":21,"tag":39,"props":1371,"children":1373},{"id":1372},"sources",[1374],{"type":26,"value":1375},"Sources",{"type":21,"tag":22,"props":1377,"children":1378},{},[1379,1381,1388,1390,1396,1397,1403,1404,1410,1411,1417,1418,1424,1425,1432],{"type":26,"value":1380},"List prices captured 30 October 2026: ",{"type":21,"tag":1363,"props":1382,"children":1386},{"href":1383,"rel":1384},"https:\u002F\u002Faws.amazon.com\u002Fs3\u002Fpricing\u002F",[1385],"nofollow",[1387],{"type":26,"value":618},{"type":26,"value":1389},", ",{"type":21,"tag":1363,"props":1391,"children":1394},{"href":1392,"rel":1393},"https:\u002F\u002Fcloud.google.com\u002Fstorage\u002Fpricing",[1385],[1395],{"type":26,"value":283},{"type":26,"value":1389},{"type":21,"tag":1363,"props":1398,"children":1401},{"href":1399,"rel":1400},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fr2\u002Fpricing\u002F",[1385],[1402],{"type":26,"value":309},{"type":26,"value":1389},{"type":21,"tag":1363,"props":1405,"children":1408},{"href":1406,"rel":1407},"https:\u002F\u002Fwww.backblaze.com\u002Fcloud-storage\u002Fpricing",[1385],[1409],{"type":26,"value":340},{"type":26,"value":1389},{"type":21,"tag":1363,"props":1412,"children":1415},{"href":1413,"rel":1414},"https:\u002F\u002Fwasabi.com\u002Fpricing\u002F",[1385],[1416],{"type":26,"value":368},{"type":26,"value":1389},{"type":21,"tag":1363,"props":1419,"children":1422},{"href":1420,"rel":1421},"https:\u002F\u002Fwww.digitalocean.com\u002Fpricing\u002Fspaces-object-storage",[1385],[1423],{"type":26,"value":399},{"type":26,"value":1389},{"type":21,"tag":1363,"props":1426,"children":1429},{"href":1427,"rel":1428},"https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fobject-storage\u002F",[1385],[1430],{"type":26,"value":1431},"OVHcloud Object Storage",{"type":26,"value":1433},".",{"type":21,"tag":22,"props":1435,"children":1436},{},[1437],{"type":26,"value":1438},"The model, its assumptions and the raw output are reproducible — the numbers above come from a script, not a spreadsheet.",{"title":7,"searchDepth":1440,"depth":1440,"links":1441},2,[1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452],{"id":41,"depth":1440,"text":44},{"id":136,"depth":1440,"text":139},{"id":201,"depth":1440,"text":204},{"id":496,"depth":1440,"text":499},{"id":643,"depth":1440,"text":646},{"id":793,"depth":1440,"text":796},{"id":1005,"depth":1440,"text":1008},{"id":1158,"depth":1440,"text":1161},{"id":1194,"depth":1440,"text":1197},{"id":1285,"depth":1440,"text":1288},{"id":1372,"depth":1440,"text":1375},"markdown","content:blog:s3-total-cost-of-ownership.md","content","blog\u002Fs3-total-cost-of-ownership.md","blog\u002Fs3-total-cost-of-ownership","md",1793397202711]