Codectionary / Developer documentation / HTML

<progress>, <meter>

These two elements display quantities visually without needing custom-built progress bars. <progress> represents the completion progress of a task, like a file upload or multi-step form. <meter> represents a scalar value within a known range, like disk usage or a rating — it is for measuring a static value, not tracking progress toward completion.

Syntax

<progress value="70" max="100"></progress>
<meter value="6" min="0" max="10"></meter>

Examples

File Upload Progress

Showing task completion with progress.

<label for="upload">Uploading file...</label>
<progress id="upload" value="45" max="100"></progress>

Indeterminate Progress

A progress bar with no known completion percentage yet.

<p>Processing your request...</p>
<progress></progress>

Disk Usage Meter

Using meter to represent a static measured value within a range.

<label for="disk">Disk usage:</label>
<meter id="disk" value="7.2" min="0" max="10" low="3" high="8" optimum="0">7.2 out of 10 GB</meter>

Attributes

  • value (number): The current value
  • max (number): The maximum value (progress and meter)
  • min (number): The minimum value (meter only, defaults to 0)
  • low (number): The upper bound of the low range (meter only)
  • high (number): The lower bound of the high range (meter only)

Best practices

  • Use <progress> for tasks that are actively completing, like uploads or multi-step processes
  • Use <meter> for static measurements within a known range, like ratings, disk usage, or scores — not for task completion
  • Omit the value attribute on <progress> to show an indeterminate loading state
  • Always pair with a <label> so the purpose of the bar or gauge is clear

Browser compatibility

Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.

<progress>

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 6
Safari
Supported
From 6
Edge
Supported
From 12
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 7
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 6
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 6

Firefox

  • From 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.

Safari

  • From 6

Edge

  • From 12

Opera

  • From 11

Safari on iOS

  • From 7 · Safari on iOS does not support indeterminate progress bars (they are rendered like 0%-completed progress bars).

Chrome for Android

  • From 18

Firefox for Android

  • From 6 · Before Firefox for Android 14, the <progress> element was incorrectly classified as a form element, and therefore had a form attribute. This has been fixed. · Firefox for Android 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.

Samsung Internet

  • From 1.0
<meter>

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0
<progress> value

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 6
Safari
Supported
From 6
Edge
Supported
From 12
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 7
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 6
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 6

Firefox

  • From 6

Safari

  • From 6

Edge

  • From 12

Opera

  • From 11

Safari on iOS

  • From 7

Chrome for Android

  • From 18

Firefox for Android

  • From 6

Samsung Internet

  • From 1.0
<meter> value

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0
<progress> max

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 6
Safari
Supported
From 6
Edge
Supported
From 12
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 7
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 6
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 6

Firefox

  • From 6

Safari

  • From 6

Edge

  • From 12

Opera

  • From 11

Safari on iOS

  • From 7

Chrome for Android

  • From 18

Firefox for Android

  • From 6

Samsung Internet

  • From 1.0
<meter> max

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0
<meter> min

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0
<meter> low

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0
<meter> high

Desktop

Chrome
Supported
From 6
Firefox
Supported
From 16
Safari
Supported
From 6
Edge
Supported
From 13
Opera
Supported
From 11

Mobile

Safari on iOS
Supported
From 10.3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 16
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 6

Firefox

  • From 16

Safari

  • From 6

Edge

  • From 13

Opera

  • From 11

Safari on iOS

  • From 10.3

Chrome for Android

  • From 18

Firefox for Android

  • From 16

Samsung Internet

  • From 1.0

MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.

HTML Living Standard

Specifications & further reading