Fetch Time Calculator
Estimate git fetch duration based on new commits, objects and network conditions.
About Fetch Time Calculator
Unlike a clone, a fetch only transfers objects the remote has that your local repository lacks. Formula: time = delta_objects × avg_object_size / bandwidth. Delta object count grows with how long it's been since your last fetch and how active the branches you're tracking are, so frequent fetches keep this number — and the time it takes — small.
Formula
fetch_time_sec = (delta_objects × avg_object_size_KB) / (bandwidth_Mbps × 1000 / 8)
- delta_objects
- New objects since last fetch
- avg_object_size_KB
- Average compressed object size (KB)
- bandwidth_Mbps
- Available network bandwidth (Mbps)
Worked example
With the default values below, Fetch Time Calculator returns Estimated Fetch Time of 0m. Change any input above and every figure here is recalculated in your browser.
Inputs used
- New Objects Since Last Fetchaccepts 0–10,000,000 objects
- 400 objects
- Average Object Sizeaccepts 0.1–1,000,000 KB
- 8 KB
- Available Bandwidthaccepts 0.1–100,000 Mbps
- 100 Mbps
Results
- Estimated Fetch Time
- 0m s
- Data Transferred
- 3.13 MB
Step by step
- 1Transfer size: delta objects × avg size= 3200KB
- 2Bandwidth in KB/s= 12500KB/s
- 3Fetch time: size / bandwidth= 0.26s
Assumptions and limits
- The result is derived only from the 3 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 2 decimal places, 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 does `git fetch` sometimes take longer than expected?
If you haven't fetched in a long time, or if someone pushed large binary blobs, the delta object count and average object size both spike, increasing transfer size well beyond a typical incremental sync.
Does fetching multiple remotes/branches change this?
Yes — each ref you track adds its own delta objects. Fetching a single feature branch is far cheaper than `git fetch --all` on a repo with hundreds of branches.
How can I reduce fetch time in CI?
Use a persistent clone/cache between CI runs so each fetch is incremental rather than a fresh clone, and consider `git fetch --filter=blob:none` if you don't need full blob history for the fetch step.
Is fetch time affected by server-side processing?
Yes — the server needs to compute the pack of missing objects to send you, which adds CPU-bound time on top of the pure network transfer this calculator models.
