<progress>

<progress> represents completion of a task. The value is between zero and max, which defaults to 1. Omitting value makes it indeterminate; there is no min attribute.

A working example

Use progressLink

HTML and CSS

HTML

<label for="task">Example task progress</label
><progress id="task" value="2" max="5">2 of 5</progress>
<p>2 of 5 steps complete.</p>

CSS

/* Optional presentation */
label {
  display: block;
  margin: 0.75rem 0 0.25rem;
}
input,
select,
textarea,
button {
  font: inherit;
  max-width: 100%;
}

Edit HTML or CSS to update the preview as you type. Copy code snippet copies the selected tab. Preview spacing and font defaults are not included.

Use it in a form

A real application should update the value from actual completed work. To switch to an unknown duration, remove value rather than setting it to zero. A still-visible status helps explain what is happening.

Common mistakes and accessibility

Text inside progress is not a reliable accessible label. Supply a label or an appropriate accessible name. Do not fabricate completion from a timer. Use meter for a scalar measurement such as storage usage.

Continue with meter for the related behavior.

Sources and browser support

MDN: progress describes the syntax and links to the specification and compatibility data. Check individual values in that table when supporting older browsers.