{
  "slug": "data-transfer-time-calculator",
  "title": "Data Transfer Time Calculator",
  "heading": "Data Transfer Time Calculator",
  "category": "math",
  "url": "https://www.revenuelab.fyi/toolbox/data-transfer-time-calculator",
  "summary": "Estimate how long a data transfer will actually take at a given bandwidth.",
  "description": "Transfer time calculations frequently go wrong because of a unit mismatch: bandwidth is quoted in bits per second (Mbps, Gbps) while file sizes are quoted in bytes (MB, GB), and the conversion factor is 8, not 1000 or 1024. This calculator takes a data size in your chosen unit, a link speed in your chosen unit, and an efficiency factor to account for real-world overhead — TCP/IP headers, protocol negotiation, and the fact that almost no real connection sustains its rated theoretical maximum — and returns the actual expected transfer time. A typical real-world efficiency factor is 70-85% of rated bandwidth for a well-tuned connection, dropping lower over long-distance or high-latency links due to TCP window limits, which is why this tool defaults to 80% rather than assuming the full advertised speed.",
  "formula": "Transfer time (s) = (data size in bits) ÷ (bandwidth in bits/sec × efficiency%). Bits = bytes × 8.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=data-transfer-time-calculator",
  "inputs": [
    {
      "id": "sizeValue",
      "label": "Data size",
      "kind": "number",
      "hint": null,
      "default": 500,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "sizeUnit",
      "label": "Size unit",
      "kind": "select",
      "hint": null,
      "default": "GB",
      "options": [
        {
          "value": "MB",
          "label": "MB"
        },
        {
          "value": "GB",
          "label": "GB"
        },
        {
          "value": "TB",
          "label": "TB"
        }
      ]
    },
    {
      "id": "bandwidthValue",
      "label": "Link bandwidth",
      "kind": "number",
      "hint": null,
      "default": 1,
      "unit": null,
      "min": 0.001,
      "max": null
    },
    {
      "id": "bandwidthUnit",
      "label": "Bandwidth unit",
      "kind": "select",
      "hint": null,
      "default": "Gbps",
      "options": [
        {
          "value": "Mbps",
          "label": "Mbps"
        },
        {
          "value": "Gbps",
          "label": "Gbps"
        }
      ]
    },
    {
      "id": "efficiency",
      "label": "Real-world efficiency",
      "kind": "number",
      "hint": null,
      "default": 80,
      "unit": "%",
      "min": 1,
      "max": 100
    }
  ],
  "outputs": [
    {
      "id": "minutes",
      "label": "Estimated transfer time (minutes)",
      "format": "decimal",
      "hint": null,
      "primary": true
    },
    {
      "id": "seconds",
      "label": "In seconds",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "hours",
      "label": "In hours",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "theoreticalSeconds",
      "label": "Theoretical time at rated speed (no overhead)",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Data size: 500",
      "Size unit: GB",
      "Link bandwidth: 1",
      "Bandwidth unit: Gbps",
      "Real-world efficiency: 80 %"
    ],
    "outputs": [
      "Estimated transfer time (minutes): 83.33",
      "In seconds: 5,000",
      "In hours: 1.389",
      "Theoretical time at rated speed (no overhead): 4,000"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter data size.",
      "Enter size unit.",
      "Enter link bandwidth.",
      "Enter bandwidth unit.",
      "Enter real-world efficiency (%).",
      "Read your estimated transfer time (minutes) 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": {
        "sizeValue": 300,
        "sizeUnit": "GB",
        "bandwidthValue": 0.6,
        "bandwidthUnit": "Gbps",
        "efficiency": 48
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "sizeValue": 500,
        "sizeUnit": "GB",
        "bandwidthValue": 1,
        "bandwidthUnit": "Gbps",
        "efficiency": 80
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "sizeValue": 800,
        "sizeUnit": "GB",
        "bandwidthValue": 1.6,
        "bandwidthUnit": "Gbps",
        "efficiency": 100
      }
    }
  ],
  "limitations": [
    "Results are rounded for display; the underlying calculation keeps full precision.",
    "Very large or very small inputs may hit floating-point limits in the browser.",
    "Inputs outside the accepted range are clamped rather than rejected."
  ],
  "faq": [
    {
      "q": "Why is my actual transfer time always longer than advertised?",
      "a": "Advertised bandwidth is a link-layer ceiling, not a guaranteed throughput. TCP/IP overhead, packet retransmission, other traffic sharing the link, and TCP's slow-start ramp-up all cut into effective throughput, and long-distance links suffer further from bandwidth-delay-product limits unless window scaling is properly tuned. 70-85% of rated speed is realistic for a healthy local network; long-haul internet transfers often land lower."
    },
    {
      "q": "Why does the calculator use 8 bits per byte and not divide by 1024?",
      "a": "Network bandwidth is universally quoted in bits per second using base-10 (1 Mbps = 1,000,000 bits/sec), while file sizes are usually quoted in bytes using base-2 conventions in some tools (1 GB = 2^30 bytes) and base-10 in others (1 GB = 10^9 bytes). This calculator uses base-10 throughout for consistency with how ISPs and cloud providers quote both bandwidth and storage."
    },
    {
      "q": "How much faster is a physical drive shipment than network transfer for huge datasets?",
      "a": "Past a certain size, physically shipping drives ('sneakernet' or a service like AWS Snowball) beats network transfer on pure time — a 10Gbps link needs about 9 days to move 100TB even at 100% efficiency, while shipping drives overnight moves the same data in 1-2 days including shipping transit. The crossover typically sits around 20-50TB depending on your actual sustained bandwidth."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/file-transfer-duration",
    "https://www.revenuelab.fyi/toolbox/bandwidth-for-n-users",
    "https://www.revenuelab.fyi/toolbox/cloud-egress-cost"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Data Transfer Time Calculator (https://www.revenuelab.fyi/toolbox/data-transfer-time-calculator)"
}