Clone Time Calculator
Calculate how long a git clone will take based on repo size and network speed.
About Clone Time Calculator
Clone time is primarily bound by how much data must transfer over the network. Formula: time = repo_size / bandwidth. A shallow clone (`--depth N`) only fetches the specified number of recent commits and their objects, so it transfers a fraction of the full history — the calculator models this as transfer_size = repo_size × shallow_fraction, divided by bandwidth to get time.
Formula
clone_time_sec = transfer_size_MB / (bandwidth_Mbps / 8)
- transfer_size_MB
- Data transferred (full size or repo × shallow_fraction)
- bandwidth_Mbps
- Available network bandwidth in Mbps
Worked example
With the default values below, Clone Time Calculator returns Estimated Clone Time of 40m. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Repository Sizeaccepts 0–1,000,000 MB
- 500 MB
- Available Bandwidthaccepts 0.1–100,000 Mbps
- 100 Mbps
- Shallow Clone
- No
- Shallow Fetch Fractionaccepts 1–100 %
- 15 %
Results
- Estimated Clone Time
- 40m s
- Data Transferred
- 500.0 MB
- Time Saved vs Full Clone
- 0m s
- Full Clone Time (Reference)
- 40m s
Step by step
- 1Bandwidth in MB/s= 12.50MB/s
- 2Transfer size= 500.0MB
- 3Clone time: size / bandwidth= 40.0s
Assumptions and limits
- The result is derived only from the 4 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax, fees or charges or compounding frequency into account.
- Figures are rounded for display to 1 decimal place, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
Frequently Asked Questions
Why is my clone slower than this estimate?
This model assumes sustained line-rate throughput. Real clones are also bound by server-side pack generation (CPU), TLS handshake overhead for many small requests, and network latency/packet loss — especially over long geographic distances.
How much does a shallow clone actually save?
It depends entirely on repository history depth. For a repo with years of history, `--depth 1` can transfer 5-20% of the full size; for a young repo with little history, savings are minimal.
Does `--filter=blob:none` help more than shallow clone?
Yes for many workflows — a treeless/blobless partial clone fetches full commit history (small) but defers blob downloads until checkout, which can be smaller than even a shallow clone if you only need recent file content.
Can I convert a shallow clone to a full clone later?
Yes, run `git fetch --unshallow` to backfill the missing history, though this transfers the remaining objects and takes time proportional to that remaining size.
