The <progress>
HTML element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.
<progress>: The Progress Indicator element
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Try it
Attributes
This element includes the global attributes.
max
-
This attribute describes how much work the task indicated by the
progress
element requires. Themax
attribute, if present, must have a value greater than0
and be a valid floating point number. The default value is1
. value
-
This attribute specifies how much of the task that has been completed. It must be a valid floating point number between
0
andmax
, or between0
and1
ifmax
is omitted. If there is novalue
attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.
Note: Unlike the <meter>
element, the minimum value is always 0, and the min
attribute is not allowed for the <progress>
element.
Note: The :indeterminate
pseudo-class can be used to match against indeterminate progress bars. To change the progress bar to indeterminate after giving it a value you must remove the value attribute with element.removeAttribute('value')
.
Accessibility
Labelling
In most cases you should provide an accessible label when using <progress>
. While you can use the standard ARIA labelling attributes aria-labelledby
or aria-label
as you would for any element with role="progressbar"
, when using <progress>
you can alternatively use the <label>
element.
Note: Text placed between the element's tags is not an accessible label, it is only recommended as a fallback for old browsers that do not support this element.
Examples
<label> Uploading Document: <progress value="70" max="100">70 %</progress> </label> <!-- OR --> <br /> <label for="progress-bar">Uploading Document</label> <progress id="progress-bar" value="70" max="100">70 %</progress>
Result
Describing a particular region
If the <progress>
element is describing the loading progress of a section of a page, use aria-describedby
to point to the status, and set aria-busy="true"
on the section that is being updated, removing the aria-busy
attribute when it has finished loading.
Examples
<div aria-busy="true" aria-describedby="progress-bar"> <!-- content is for this region is loading --> </div> <!-- ... --> <progress id="progress-bar" aria-label="Content loading…"></progress>
Result
Examples
<progress value="70" max="100">70 %</progress>
Result
Technical summary
Content categories | Flow content, phrasing content, labelable content, palpable content. |
---|---|
Permitted content | Phrasing content, but there must be no <progress> element among its descendants. |
Tag omission | None, both the starting and ending tag are mandatory. |
Permitted parents | Any element that accepts phrasing content. |
Implicit ARIA role | progressbar |
Permitted ARIA roles | No role permitted |
DOM interface | HTMLProgressElement |
Specifications
Specification |
---|
HTML Standard # the-progress-element |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | ||
progress |
6 | 12 | 6["Before Firefox 14, the<progress> element was incorrectly classified as a form element, and therefore had a form attribute. This has been fixed.", "Firefox provides the ::-moz-progress-bar pseudo-element, which lets you style the part of the interior of the progress bar representing the amount of work completed so far."] |
11 | 6 | 18 | 6["Before Firefox 14, the<progress> element was incorrectly classified as a form element, and therefore had a form attribute. This has been fixed.", "Firefox provides the ::-moz-progress-bar pseudo-element, which lets you style the part of the interior of the progress bar representing the amount of work completed so far."] |
11 | 7Safari on iOS does not support indeterminate progress bars (they are rendered like 0%-completed progress bars). |
1.0 | 4.4 | |
max |
6 | 12 | 6 | 11 | 6 | 18 | 6 | 11 | 7 | 1.0 | 4.4 | |
value |
6 | 12 | 6 | 11 | 6 | 18 | 6 | 11 | 7 | 1.0 | 4.4 |
See also
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress