progress – task progress
<progress value="30" max="100">30%</progress>
A progress indicator of a task: uploading a file, processing, the completed part of a questionnaire. Without value the progress is indeterminate – the browser shows an animation that something is being worked on. The text inside is seen only by a browser without support.
- Default display:
display: inline-block - End tag: required
- Content: phrasing content without another
progress - Where it can be used: anywhere phrasing content is allowed
- DOM interface:
HTMLProgressElement
Attributes
- value – how much is done (0 to
max). - max – the total value (default 1).
Examples
Uploading a file and indeterminate progress:
<p><label for="upload">Uploading the photo</label><br> <progress id="upload" value="65" max="100">65%</progress></p> <p><label for="processing">Processing the order</label><br> <progress id="processing"></progress></p>
The progress bar is drawn by the operating system – it looks different in every browser, which is why the example has no preview.
Accessibility
progress has the progressbar role and the screen reader reads the percentage. It needs a label (label or aria-label).
Things to watch out for
- For measured values that are not progress (disk usage, a rating) there is
meter. - The look is styled with pseudo-elements that differ between browsers (
::-webkit-progress-value,::-moz-progress-bar). The simplest way to change the color isaccent-color.
Browser support
Baseline – widely available: works in all major browsers and has for a long time (since 2015 at the latest). Since version: Chrome 6, Firefox 6, Safari 6. As of October 2026 (MDN browser-compat-data).
Related:
meter – gauge
output – calculation result
label – field label