HTML Progress Generator
Build a native HTML progress bar for uploads, downloads and multi-step tasks.
HTML
<label for="upload">Upload progress</label> <progress id="upload" value="40" max="100">40%</progress>
HTML Progress Generator
The <progress> element shows how far a task has advanced: a file upload, a download, an installation, a multi-step form or a reading position. It is rendered as a native progress bar by every browser and exposes its value to screen readers, so you do not need to build one from nested divs. The HTML Progress Generator creates the markup in seconds.
Options
- value – how much of the task is complete. Values above
maxare clamped so the code stays valid. - max – the total amount of work. Use 100 for percentages, or the real total such as the number of bytes or steps.
- Indeterminate – leaves out
value, which turns the bar into an animated "loading" indicator for tasks of unknown length. - Label and id – an accessible
<label for>connected to the bar.
The text between the tags (for example 40%) is a fallback for very old browsers and a useful hint when reading the source.
Progress vs. meter
Use <progress> for anything moving toward completion. For a static measurement within a range — disk usage, a rating, a battery level — use <meter> instead; it supports low/high thresholds and color states. Our HTML Meter Generator builds that element.
Updating it with JavaScript
In real applications the value changes over time. Set element.value from an upload's progress event or after each step of a wizard. Style the bar with accent-color for a quick brand color, or use vendor pseudo-elements for full control. To give the surrounding card some depth, see the CSS Box Shadow Generator.
Frequently Asked Questions
How do I show an indeterminate (loading) progress bar?
Omit the value attribute. Browsers then render an animated bar that indicates work is in progress without a known completion percentage. Switch on Indeterminate to generate this form.
How do I update the progress bar with JavaScript?
Select the element and set its value property, e.g. document.getElementById("upload").value = 75. The bar redraws immediately; remove the attribute with removeAttribute("value") to return to the indeterminate state.
What is the default max?
max defaults to 1, so values are fractions between 0 and 1. Setting max="100" lets you use percentages directly, which the generator does by default.
Is a progress bar accessible?
Yes. It is exposed with the progressbar role and its value to screen readers. Add a label so users know which task the bar represents.