I have a webpage where the client has to do some work, and would like to show progress of this to the user.

The task is completely client-side. It consists of making an "attempt", which has a (known) small chance of success. If the attempt succeeds, the task is over and the user gets redirected. If the attempt fails, it makes a new attempt (with the exact same chance of success).

The problem is how I'm supposed to convey this to the user. The speed of doing attempts vary greatly across devices, so I want speed to be visible. I can calculate how many attempts needed in aggregate ("task finishes in less than 30 attempts 50% of the time"), but it's impossible to do this for one particular instance.

Currently, there's a crude ascii progress thingy which prints * for every attempt:

Do Action *******

but this isn't exact (no units), responsive (Too small a screen for the *? Too bad!) or intuitive.


I am not sure if I have understood precisely what you want to achieve, but as far as I understand it, I would suggest sticking to the actual steps of the process rather than any time measure.

One example how you could do that would be:

                              30th (50% cases resolved)

Current Attempt: 10

If in some case it becomes very long, then you can display more attempts, just like in old MS-DOS installers:

                              30th (50% cases resolved)

Current Attempt: 104

Basically Dominik answer isn't bad or wrong, but especially the "becomes very long" section needs a better solution than a long line of dots.

So let's see the users pains: - is there progress? - how long does this take? - will it be ever solved?

Thus I would suggest the following interface:

Attempt No. 4 //this line has no really informative content.
time since last attempt: 4sec //it indicates it's still running..
total/estimated duration: 200sec //use a estimate with some buffer...
90% of jobs were solved in this time - stay tuned - we'll finish soon

This could be done in a nice popup/overlay or things like this. You can entertain the use by replace the first line by random funny sentences (like the slack / asana loading screen)

Some interfaces event got nice comments on the status - e.g. "this take longer than expected. we'll double the worker on it, to solve it soon :-)"

The other "nerdy / old school way" instead of a popup/overlay would be a small console with the typical line updates.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.