Skip to content
Calcrivo

Clone Time Calculator

Estimate how long a full or shallow git clone will take given repository size and available network bandwidth.

Inputs

MB

Total transferable size of the repository (.git + relevant objects).

Mbps

Network throughput available to the client doing the clone.

Enable if using `git clone --depth N` to fetch only recent history.

%

Percent of full repository size a shallow clone actually transfers.

Estimated Clone Time

40ms

Data Transferred

500.0MB

Time Saved vs Full Clone

0ms

Full Clone Time (Reference)

40ms

Step by step

  1. Bandwidth in MB/s

    100Mbps / 8

    = 12.50MB/s

  2. Transfer size

    500MB (full)

    = 500.0MB

  3. Clone time: size / bandwidth

    500.0MB / 12.50MB/s

    = 40.0s

How it works

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

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.

You might also need