<progress>: The PROGRESS Element
Last updated: 2026-10-13
<progress>The PROGRESS Element
Shows task completion (e.g. upload, loading) via value/max; omit value for an indeterminate progress animation.
| Category | Forms |
|---|---|
| Content Model | Flow content |
| Allowed Parents | Any element that accepts flow content |
| Content Tag | Yes — requires closing </progress> tag |
| Status | Standard |
📝 Syntax
<progress value="70" max="100">70%</progress>
⚙️ Attributes
This element supports the global attributes plus the following:
| Attribute | Value | Description |
|---|---|---|
value | Amount completed; omit for indeterminate progress. | |
max | Total task amount, default 1. |
▶ Example
Edit the code below and see the live result in the playground:
🌐 Browser Support
| Browser | |||||
|---|---|---|---|---|---|
| <progress> | ✓ v1 | ✓ v12 | ✓ v1 | ✓ v1 | ✓ v1 |
| Supported in all major browsers | |||||
Tip: progress is for task progress; for fixed-range measurement use <meter>.
❓ FAQ
QWhat happens if progress has no value attribute?
AWithout
value, the bar is indeterminate — browsers show a sliding or spinning animation for processing with unknown completion. Once value is set (between 0 and max), it shows determinate progress.QWhat is the default max of progress?
AThe default max is 1, so
value='0.5' means 50%. Set max='100' and value becomes a plain 0-100 number, which reads better. Values above max are clamped to max.QCan the progress bar be styled?
AYes, but it needs vendor pseudo-elements: WebKit uses
progress::-webkit-progress-bar and progress::-webkit-progress-value; Firefox uses progress::-moz-progress-bar. Cross-browser styling is fiddly — for elaborate designs, a CSS-drawn progress bar may be simpler.🏷️ Related Tags
💡 Related Cases
More case studies coming soon — check back later.