👀 Live Preview
A disk usage meter with value="75", min="0", max="100", and high="90":
Value 75 is below high="90", so it stays in the moderate zone. Above 90, the meter enters the high (warning) segment.

The high attribute sets the lower bound of the upper range on a <meter> element. It works only on <meter>—not on <input>, range sliders, or form validation. Together with min, max, low, optimum, and value, it helps browsers color-code gauge readings for disk usage, scores, and capacity indicators.
Valid on <meter> alone.
Lower bound of high zone.
min ≤ low ≤ high ≤ max.
Different from form limits.
Update threshold in JS.
Gauge semantics, not bars.
high AttributeThe high attribute defines where the upper (warning) region begins on a <meter> scale. Values above high fall into the high segment, which browsers typically render with a warning color. It does not cap the meter’s maximum—that is what max does.
Use high alongside min, max, low, optimum, and value to create semantic gauges for disk usage, test scores, battery levels, and similar measurements. When low is also set, the constraint is min ≤ low ≤ high ≤ max.
max on <input>The high attribute marks a threshold zone on a read-only <meter> gauge. max on <input type="number"> or type="range" limits what a user can enter or select. They are completely different features—do not use high on form inputs.
Add high to a <meter> element with a numeric value within the scale:
<!-- Disk usage: value below high threshold -->
<label for="disk">Disk usage:</label>
<meter
id="disk"
value="75"
min="0"
max="100"
low="60"
high="90"
optimum="40">75%</meter>
<!-- Capacity meter with high threshold -->
<meter value="120" min="0" max="200" high="180">120/200</meter>high applies only to the <meter> element—not to <input>, <progress>, or other elements.min and max.low is set, ensure min ≤ low ≤ high ≤ max.high marks the lower bound of the upper range—values above it enter the high (warning) segment.value (current reading), min/max (scale bounds), and optionally low and optimum.<progress> for completion bars; use <meter> for gauges with semantic thresholds.The high attribute accepts a floating-point number representing a point on the meter scale:
high="90" — Upper range begins at 90 on a 0–100 scale. Values above 90 show in the high segment.high="180" — On a 0–200 scale, the warning zone starts at 180.high="0.8" — Valid on a 0–1 scale (default min/max when omitted).value and optimum alone.<!-- Full meter with all range attributes -->
<meter
value="75"
min="0"
max="100"
low="60"
high="90"
optimum="40">75%</meter>
<!-- JavaScript: change high threshold -->
<script>
var meter = document.getElementById("capacity");
meter.high = 250; // number property
</script>| Concept | Details | Notes |
|---|---|---|
| Applies to | <meter> only | Not input, progress, or other elements |
| Value type | Floating-point number | Within min–max scale |
| Meaning | Lower bound of upper range | Values above = high segment |
| Constraint | min ≤ low ≤ high ≤ max | When low is set |
| JS property | meter.high = 250 | Number, not string |
| Not the same as | max on <input> | Form limit vs gauge threshold |
| Element | Supported? | Notes |
|---|---|---|
<meter> | Yes | Only element that supports high |
<progress> | No | Use for completion bars, not threshold gauges |
<input type="range"> | No | Use max attribute for slider upper limit |
<input type="number"> | No | Use max for validation, not high |
<input> (other types) | No | high is not a form validation attribute |
| Any other HTML element | No | high is meter-specific per HTML spec |
high vs max vs low vs optimum on <meter>| Attribute | Example | Role on Meter |
|---|---|---|
min | min="0" | Lower bound of the entire scale |
max | max="100" | Upper bound of the entire scale |
low | low="60" | Upper bound of the low segment (below = low zone) |
high | high="90" | Lower bound of the high segment (above = warning zone) |
optimum | optimum="40" | Preferred value; influences optimum coloring |
value | value="75" | Current measurement shown on the gauge |
high on <meter> vs max on <input>| Feature | high on <meter> | max on <input> |
|---|---|---|
| Element | <meter> only | <input type="number">, type="range", etc. |
| Purpose | Marks start of upper warning zone on a gauge | Sets maximum allowed user input value |
| Interaction | Read-only display | User-editable form control |
| Validation | Not used for form validation | Constrains what users can submit |
| JavaScript | meter.high = 250 | input.max = "100" (string) |
| Visual effect | Changes meter color regions | Limits slider thumb or number entry |
Disk usage meter with warning threshold, capacity gauge, and dynamic high updates with JavaScript.
A disk usage meter with value="75", min="0", max="100", and high="90":
Value 75 is below high="90", so it stays in the moderate zone. Above 90, the meter enters the high (warning) segment.
Show disk usage with a warning threshold at 90%. Include visible fallback text inside the meter for older browsers:
<label for="disk">Disk usage:</label>
<meter
id="disk"
value="75"
min="0"
max="100"
low="60"
high="90"
optimum="40">75%</meter>The browser divides the 0–100 scale into segments using low and high. Values above high="90" render in the upper (warning) color. optimum="40" hints that lower usage is preferred for disk space.
Track capacity on a larger scale with high="180" as the warning threshold on a 0–200 range:
<label for="capacity">Storage used (GB):</label>
<meter
id="capacity"
value="120"
min="0"
max="200"
high="180">120/200 GB</meter>Without low, the meter still uses high to define where the warning zone starts. The scale runs from min="0" to max="200", and value="120" shows the current reading.
Update the high threshold at runtime using the meter.high number property:
<label for="score">Test score:</label>
<meter id="score" value="85" min="0" max="100" high="70">85</meter>
<button type="button" id="raiseHigh">Raise high to 90</button>
<script>
document.getElementById("raiseHigh").addEventListener("click", function () {
var meter = document.getElementById("score");
meter.high = 90;
});
</script>Assigning a number to meter.high updates the upper-range threshold immediately. The browser recalculates which color region the current value falls into. Use addEventListener rather than inline handlers for cleaner separation of markup and behavior.
<label for="id"> paired with the meter’s id, or wrap the meter in a labeled container so users know what the gauge measures.<meter> — Browsers that do not support <meter> show the inner text (e.g. 75%) instead of a blank element.value or high, consider an aria-live region for screen reader updates.<meter> for gauges, <progress> for completion — Picking the correct element gives assistive technology the right semantics.min, max, low, and high use the same units as value so readings make sense when spoken aloud.min, max, low, high, value.
Low, moderate, and high segments.
Color reflects current segment.
Threshold-aware meter coloring.
The high attribute is fully supported in all modern browsers on <meter> elements. It works alongside min, max, low, optimum, and value for threshold-based gauge coloring.
All major browsers honor high on <meter> and expose the meter.high property.
<meter> 97% supportedBottom line: Use high confidently on <meter>; include inner text as a fallback for rare unsupported environments.
high only on <meter> elementsmin ≤ low ≤ high ≤ max when all are set<label> text<meter> (e.g. 75%)meter.high = 250 (number) in JavaScripthigh on <input> or <progress>high with max on form controlshigh above max or below low<meter> for simple progress bars—use <progress>The high attribute sets the lower bound of the upper range on a <meter> gauge. It works exclusively on <meter> alongside min, max, low, optimum, and value to create threshold-aware displays for disk usage, scores, and capacity.
Remember that high is not max on form inputs—it marks where the warning zone begins, not the scale limit. Update thresholds with meter.high = 250 in JavaScript, label meters for accessibility, and choose <progress> when you need a completion bar instead of a semantic gauge.
highBookmark these before building your next meter gauge.
Not for input or progress.
ScopeLower bound of high zone.
MeaningThreshold vs form limit.
CompareNumber property in JS.
ScriptVisible text inside meter.
A11y<meter> element. Values above high fall into the high (warning) segment. Browsers use it with min, max, low, and optimum to color-code gauge readings.<meter> element. It does not apply to <input>, <progress>, range sliders, or any other HTML element.high on <meter> marks where the warning zone begins on a read-only gauge. max on <input type="number"> or type="range" limits what a user can enter or select. They serve completely different purposes.low is set, the constraint is min ≤ low ≤ high ≤ max. low marks the upper bound of the low segment; high marks the lower bound of the high segment. value shows the current reading.meterElement.high = 250. This updates the threshold and may change which color region the current value falls into.high attribute on <meter> along with min, max, low, optimum, and value. Include inner text as a fallback for rare unsupported environments.Practice the high attribute with disk usage, capacity, and JavaScript examples in the Try It editor.
4 people found this page helpful