{
  "slug": "s3-storage-tiering-cost",
  "title": "S3-Style Storage Tiering Cost Calculator",
  "heading": "Object Storage Tiering Cost Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/s3-storage-tiering-cost",
  "summary": "Compare hot, infrequent-access, and archive storage costs for the same data.",
  "description": "Object storage services like S3, GCS, and Azure Blob offer multiple storage classes with dramatically different price points and access costs. Standard/hot storage costs more per GB but has no retrieval fee; infrequent-access tiers cost less per GB but charge a per-GB retrieval fee; archive tiers (Glacier, Archive) cost the least per GB but charge the highest retrieval fees and have retrieval delays measured in hours. This calculator computes blended monthly cost for a given data volume across a chosen tier, factoring in both storage and expected retrieval volume, so you can see the break-even point where moving data to a colder tier stops being worth it. As a rule of thumb, data accessed less than once a month belongs in infrequent-access, and data accessed less than once a quarter belongs in archive — but the exact crossover depends on your retrieval rate, which is what this tool solves for.",
  "formula": "Monthly cost = (stored GB × storage $/GB) + (retrieved GB × retrieval $/GB) + (requests × $/1000 requests).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=s3-storage-tiering-cost",
  "inputs": [
    {
      "id": "storedGb",
      "label": "Total data stored",
      "kind": "number",
      "hint": null,
      "default": 10000,
      "unit": "GB",
      "min": 0,
      "max": null
    },
    {
      "id": "storageRate",
      "label": "Storage rate for this tier",
      "kind": "number",
      "hint": null,
      "default": 0.023,
      "unit": "$/GB-mo",
      "min": 0,
      "max": null
    },
    {
      "id": "retrievedGb",
      "label": "Data retrieved per month",
      "kind": "number",
      "hint": null,
      "default": 500,
      "unit": "GB",
      "min": 0,
      "max": null
    },
    {
      "id": "retrievalRate",
      "label": "Retrieval rate for this tier",
      "kind": "number",
      "hint": null,
      "default": 0,
      "unit": "$/GB",
      "min": 0,
      "max": null
    },
    {
      "id": "requests",
      "label": "GET requests per month",
      "kind": "number",
      "hint": null,
      "default": 100000,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "requestRate",
      "label": "Request cost",
      "kind": "number",
      "hint": null,
      "default": 0.0004,
      "unit": "$/1000 req",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "total",
      "label": "Total monthly cost",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "storage",
      "label": "Storage cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "retrieval",
      "label": "Retrieval cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "requestCost",
      "label": "Request cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "perGb",
      "label": "Blended cost per stored GB",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total data stored: 10000 GB",
      "Storage rate for this tier: 0.023 $/GB-mo",
      "Data retrieved per month: 500 GB",
      "Retrieval rate for this tier: 0 $/GB",
      "GET requests per month: 100000",
      "Request cost: 0.0004 $/1000 req"
    ],
    "outputs": [
      "Total monthly cost: $230.04",
      "Storage cost: $230.00",
      "Retrieval cost: $0.00",
      "Request cost: $0.04",
      "Blended cost per stored GB: $0.023"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total data stored (GB).",
      "Enter storage rate for this tier ($/GB-mo).",
      "Enter data retrieved per month (GB).",
      "Enter retrieval rate for this tier ($/GB).",
      "Enter get requests per month.",
      "Enter request cost ($/1000 req).",
      "Read your total monthly cost on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "storedGb": 6000,
        "storageRate": 0.0138,
        "retrievedGb": 300,
        "retrievalRate": 0,
        "requests": 60000,
        "requestRate": 0.00024
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "storedGb": 10000,
        "storageRate": 0.023,
        "retrievedGb": 500,
        "retrievalRate": 0,
        "requests": 100000,
        "requestRate": 0.0004
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "storedGb": 16000,
        "storageRate": 0.0368,
        "retrievedGb": 800,
        "retrievalRate": 0,
        "requests": 160000,
        "requestRate": 0.00064
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "When does archive storage stop being cheaper?",
      "a": "Run this calculator once with Standard rates (no retrieval fee) and once with Archive rates (low storage, high retrieval) at your real monthly retrieval volume. If retrieval fees plus the lower storage cost exceed Standard's flat storage cost, the data is being accessed too often for archive tiers and should move back up."
    },
    {
      "q": "Do lifecycle policies really save money automatically?",
      "a": "Yes, if configured correctly. A lifecycle rule that moves objects to infrequent-access after 30 days and archive after 90 days can cut storage cost 40-70% for typical log or backup data where 90% of access happens in the first month, but it adds retrieval fees if you're wrong about access patterns, so audit actual retrieval logs before setting the transition windows."
    },
    {
      "q": "Are minimum storage duration charges included?",
      "a": "No. Infrequent-access and archive tiers typically enforce a minimum storage duration (30-180 days) — deleting or transitioning an object before that window still bills as if it stayed the full minimum. Factor that in separately for data with high churn or short retention needs, since it can erase the savings this calculator shows."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/backup-storage-retention-cost",
    "https://www.revenuelab.fyi/toolbox/vector-db-storage-cost",
    "https://www.revenuelab.fyi/toolbox/cloud-egress-cost"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — S3-Style Storage Tiering Cost Calculator (https://www.revenuelab.fyi/toolbox/s3-storage-tiering-cost)"
}