ETA Calculator

Work out the finishing time of a long-running task from its throughput. Enter the total, what is already done and how fast it is going to get remaining time and a completion timestamp.

How long until this thing is done? Give it a total, how much is already finished and the rate you are managing, and it works out the remaining time and the wall-clock moment the job lands.

Progress 0%
Time remaining
Total duration
Finishes at

Estimating completion time without fooling yourself

The arithmetic is trivial, the assumption is not

An ETA is one division: remaining work divided by rate. If 40,000 rows are left and you are managing 500 rows a minute, you have 80 minutes to go. This calculator does that division, converts the answer into readable units and adds it to your start time so you get an actual clock time rather than a duration you then have to add up in your head.

The hard part is not the division. It is that the division assumes the rate you measured will hold for the rest of the run, and that assumption is wrong more often than it is right. Bulk imports slow down as indexes grow. Downloads speed up once TCP finishes ramping. Batch jobs hit a stretch of unusually large records. An ETA is a projection of the present, not a prediction of the future, and it is worth saying that out loud before anyone writes the number into a status update.

Pick the rate window deliberately

Because the estimate inherits whatever rate you feed it, the window you measure over is the most consequential input on the page. A rate taken from the last ten seconds is responsive and jumpy: it will swing wildly and give you a different ETA every time you look. A rate averaged over the whole run so far is stable but slow to react, and it will keep quoting an optimistic number long after the job has bogged down.

For anything short, use the whole-run average. For a job measured in hours, a rolling window of a few minutes usually strikes the right balance: recent enough to notice a slowdown, long enough not to react to every hiccup. If the two numbers disagree sharply, that disagreement is itself the useful signal - it means the rate is changing, and the honest answer is a range rather than a single timestamp.

Read the total duration alongside the remainder

The tool reports total duration as well as remaining time, and the pair is more informative than either alone. If a job is 5% done and the total duration reads eleven hours, you know immediately that this is not something to sit and watch, regardless of what the remaining figure says. It also gives you a sanity check: if the projected total is wildly different from how long the same job took last week, either the rate measurement is wrong or something has genuinely changed, and both are worth investigating before the run finishes.

Progress percentage is shown for the same reason. Early in a run, when the completed count is small, the rate estimate rests on very few samples and the ETA is close to meaningless. Watching the percentage climb tells you when the estimate has enough data behind it to be worth quoting.

Runs entirely in your browser with plain JavaScript - no libraries, no uploads, no tracking.

Frequently asked questions

How is the remaining time calculated?
The rate you enter is normalised to units per second, then remaining units are divided by that rate. Everything else - the readable duration, the finish timestamp, the percentage - is derived from that one number.
Why does it only show two units?
Because "3 d 4 h" is easier to act on than "3 d 4 h 12 m 7 s". At that scale the minutes and seconds are noise, and the smaller units are dropped rather than rounded away, so nothing is being hidden.
Can I use it for things that are not data?
Yes. The units are whatever you say they are: rows, files, kilometres, pages, tickets. The calculator never assumes what a unit means, so anything with a countable total and a measurable rate works.
What if my rate changes during the run?
Re-enter the current figures. The tool has no memory of previous inputs, so updating the completed count and the observed rate gives you a fresh projection based on where the job actually is now.
Does the finish time account for time zones?
The finish time is rendered in your browser's local time zone using your locale's formatting. The start field is also local wall-clock time, so the two are consistent with each other.
Is anything sent to a server?
No. Every value stays in the page - the whole calculation is a handful of arithmetic operations running in your browser, so there is nothing to upload.