What are some good algorithms to calculate the time remaining of downloads? I have an app that may have a bunch of downloads at the same time (with max concurrent run limit), and I want to display an estimate of how much time left. The cheap way is I can easily assume the speed will be (bytes downloaded so far/ time took so far) and compute that against how much bytes are left. I can update this information every 2~3 seconds. The thing is I would like to know what are some better ways?