👀 Live Preview
A quiz score meter with value="35", min="0", max="100", and low="40":
Value 35 is at or below low="40", so it falls in the low segment. Above 40, the meter enters the moderate zone.

The low attribute sets the upper bound of the low range on a <meter> element. It works only on <meter>—not on <input type="number">, range sliders, or other form controls. Together with min, max, high, optimum, and value, it helps browsers color-code gauge readings for test scores, fuel levels, battery indicators, and similar measurements.
Valid on <meter> alone.
Upper bound of low zone.
min ≤ low ≤ high ≤ max.
Different from form limits.
Update threshold in JS.
Gauge semantics, not bars.
low AttributeThe low attribute defines where the low (warning) region ends on a <meter> scale. Values at or below low fall into the low segment, which browsers typically render with a caution color. It does not set the meter’s minimum scale bound—that is what min does.
Use low alongside min, max, high, optimum, and value to create semantic gauges for quiz scores, fuel tanks, disk headroom, and similar measurements. When high is also set, the constraint is min ≤ low ≤ high ≤ max.
min on <input>The low attribute marks a threshold zone on a read-only <meter> gauge. min on <input type="number"> or type="range" limits what a user can enter or select. They are completely different features—do not use low on form inputs.
Add low to a <meter> element with a numeric value within the scale:
<!-- Test score: value in low segment -->
<label for="score">Quiz score:</label>
<meter
id="score"
value="35"
min="0"
max="100"
low="40"
high="70"
optimum="85">35/100</meter>
<!-- Fuel gauge with low threshold -->
<meter value="18" min="0" max="100" low="25">18%</meter>low applies only to the <meter> element—not to <input>, <progress>, or other elements.min and max.high is set, ensure min ≤ low ≤ high ≤ max.low marks the upper bound of the low range—values at or below it enter the low (warning) segment.value (current reading), min/max (scale bounds), and optionally high and optimum.<progress> for completion bars; use <meter> for gauges with semantic thresholds.The low attribute accepts a floating-point number representing a point on the meter scale:
low="40" — Low range ends at 40 on a 0–100 scale. Values at or below 40 show in the low segment.low="25" — On a fuel gauge, readings of 25% or below trigger the low zone.low="0.3" — Valid on a 0–1 scale (default min/max when omitted).value and optimum alone.<!-- Full meter with all range attributes -->
<meter
value="35"
min="0"
max="100"
low="40"
high="70"
optimum="85">35/100</meter>
<!-- JavaScript: change low threshold -->
<script>
var meter = document.getElementById("fuel");
meter.low = 30; // 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 | Upper bound of low range | Values ≤ low = low segment |
| Constraint | min ≤ low ≤ high ≤ max | When high is set |
| JS property | meter.low = 40 | Number, not string |
| Not the same as | min on <input> | Form limit vs gauge threshold |
| Element | Supported? | Notes |
|---|---|---|
<meter> | Yes | Only element that supports low |
<progress> | No | Use for completion bars, not threshold gauges |
<input type="range"> | No | Use min attribute for slider lower limit |
<input type="number"> | No | Use min for validation, not low |
<input> (other types) | No | low is not a form validation attribute |
| Any other HTML element | No | low is meter-specific per HTML spec |
low vs min vs high 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="40" | Upper bound of the low segment (at or below = low zone) |
high | high="70" | Lower bound of the high segment (above = warning zone) |
optimum | optimum="85" | Preferred value; influences optimum coloring |
value | value="35" | Current measurement shown on the gauge |
low on <meter> vs min on <input>| Feature | low on <meter> | min on <input> |
|---|---|---|
| Element | <meter> only | <input type="number">, type="range", etc. |
| Purpose | Marks upper bound of low warning zone on a gauge | Sets minimum 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.low = 40 | input.min = "1" (string) |
| Visual effect | Changes meter color regions | Limits slider thumb or number entry |
Test score meter with low threshold, fuel gauge, and dynamic low updates with JavaScript.
A quiz score meter with value="35", min="0", max="100", and low="40":
Value 35 is at or below low="40", so it falls in the low segment. Above 40, the meter enters the moderate zone.
Show a quiz score with a failing threshold at 40. Include visible fallback text inside the meter for older browsers:
<label for="score">Quiz score:</label>
<meter
id="score"
value="35"
min="0"
max="100"
low="40"
high="70"
optimum="85">35/100</meter>The browser divides the 0–100 scale into segments using low and high. Values at or below low="40" render in the low (warning) color. optimum="85" hints that higher scores are preferred.
Track fuel level with low="25" as the warning threshold on a 0–100 range:
<label for="fuel">Fuel level:</label>
<meter
id="fuel"
value="18"
min="0"
max="100"
low="25"
high="75"
optimum="80">18%</meter>The scale runs from min="0" to max="100". Values at or below low="25" trigger the low (caution) color—ideal for fuel, battery, or any “running low” indicator.
Update the low threshold at runtime using the meter.low number property:
<label for="capacity">Storage free:</label>
<meter id="capacity" value="30" min="0" max="100" low="20">30%</meter>
<button type="button" id="raiseLow">Raise low to 35</button>
<script>
document.getElementById("raiseLow").addEventListener("click", function () {
var meter = document.getElementById("capacity");
meter.low = 35;
});
</script>Assigning a number to meter.low updates the lower-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. 35/100) instead of a blank element.value or low, 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 low attribute is fully supported in all modern browsers on <meter> elements. It works alongside min, max, high, optimum, and value for threshold-based gauge coloring.
All major browsers honor low on <meter> and expose the meter.low property.
<meter> 97% supportedBottom line: Use low confidently on <meter>; include inner text as a fallback for rare unsupported environments.
low only on <meter> elementsmin ≤ low ≤ high ≤ max when all are set<label> text<meter> (e.g. 35/100)meter.low = 40 (number) in JavaScriptlow on <input> or <progress>low with min on form controlslow above high or below min<meter> for simple progress bars—use <progress>The low attribute sets the upper bound of the low range on a <meter> gauge. It works exclusively on <meter> alongside min, max, high, optimum, and value to create threshold-aware displays for test scores, fuel levels, and capacity indicators.
Remember that low is not min on form inputs—it marks where the low warning zone ends, not the scale minimum. Update thresholds with meter.low = 40 in JavaScript, label meters for accessibility, and choose <progress> when you need a completion bar instead of a semantic gauge.
lowBookmark these before building your next meter gauge.
Not for input or progress.
ScopeUpper bound of low zone.
MeaningThreshold vs form limit.
CompareNumber property in JS.
ScriptVisible text inside meter.
A11y<meter> element. Values at or below low fall into the low (warning) segment. Browsers use it with min, max, high, and optimum to color-code gauge readings.<meter> element. It does not apply to <input>, <progress>, range sliders, or any other HTML element.low on <meter> marks where the low warning zone ends on a read-only gauge. min on <input type="number"> or type="range" limits what a user can enter or select. They serve completely different purposes.low and high are 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.low = 40. This updates the threshold and may change which color region the current value falls into.low attribute on <meter> along with min, max, high, optimum, and value. Include inner text as a fallback for rare unsupported environments.Practice the low attribute with test scores, fuel gauges, and JavaScript examples in the Try It editor.
5 people found this page helpful