HTML high Attribute

Beginner
⏱️ 6 min read
📚 Updated: Jun 2026
🎯 3 Examples
Meter & Form Controls

What You’ll Learn

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.

01

Meter Only

Valid on <meter> alone.

02

Upper Range

Lower bound of high zone.

03

With min/max

min ≤ low ≤ high ≤ max.

04

Not input max

Different from form limits.

05

meter.high

Update threshold in JS.

06

vs progress

Gauge semantics, not bars.

Purpose of high Attribute

The 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.

💡
Not the same as 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.

📝 Syntax

Add high to a <meter> element with a numeric value within the scale:

high.html
<!-- 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>

Syntax Rules

  • high applies only to the <meter> element—not to <input>, <progress>, or other elements.
  • The value must be a valid floating-point number within the meter’s scale defined by min and max.
  • When 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.
  • Pair with value (current reading), min/max (scale bounds), and optionally low and optimum.
  • Use <progress> for completion bars; use <meter> for gauges with semantic thresholds.

💎 Values

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).
  • Attribute absent — No explicit upper-range threshold; browser uses default coloring based on value and optimum alone.
high-values.html
<!-- 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>

⚡ Quick Reference

ConceptDetailsNotes
Applies to<meter> onlyNot input, progress, or other elements
Value typeFloating-point numberWithin min–max scale
MeaningLower bound of upper rangeValues above = high segment
Constraintmin ≤ low ≤ high ≤ maxWhen low is set
JS propertymeter.high = 250Number, not string
Not the same asmax on <input>Form limit vs gauge threshold

Applicable Elements

ElementSupported?Notes
<meter>YesOnly element that supports high
<progress>NoUse for completion bars, not threshold gauges
<input type="range">NoUse max attribute for slider upper limit
<input type="number">NoUse max for validation, not high
<input> (other types)Nohigh is not a form validation attribute
Any other HTML elementNohigh is meter-specific per HTML spec

high vs max vs low vs optimum on <meter>

AttributeExampleRole on Meter
minmin="0"Lower bound of the entire scale
maxmax="100"Upper bound of the entire scale
lowlow="60"Upper bound of the low segment (below = low zone)
highhigh="90"Lower bound of the high segment (above = warning zone)
optimumoptimum="40"Preferred value; influences optimum coloring
valuevalue="75"Current measurement shown on the gauge

high on <meter> vs max on <input>

Featurehigh on <meter>max on <input>
Element<meter> only<input type="number">, type="range", etc.
PurposeMarks start of upper warning zone on a gaugeSets maximum allowed user input value
InteractionRead-only displayUser-editable form control
ValidationNot used for form validationConstrains what users can submit
JavaScriptmeter.high = 250input.max = "100" (string)
Visual effectChanges meter color regionsLimits slider thumb or number entry

Examples Gallery

Disk usage meter with warning threshold, capacity gauge, and dynamic high updates with JavaScript.

👀 Live Preview

A disk usage meter with value="75", min="0", max="100", and high="90":

75%

Value 75 is below high="90", so it stays in the moderate zone. Above 90, the meter enters the high (warning) segment.

Example — Disk Usage Meter

Show disk usage with a warning threshold at 90%. Include visible fallback text inside the meter for older browsers:

disk-meter.html
<label for="disk">Disk usage:</label>
<meter
  id="disk"
  value="75"
  min="0"
  max="100"
  low="60"
  high="90"
  optimum="40">75%</meter>
Try It Yourself

How It Works

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.

Example — Capacity Meter

Track capacity on a larger scale with high="180" as the warning threshold on a 0–200 range:

capacity-meter.html
<label for="capacity">Storage used (GB):</label>
<meter
  id="capacity"
  value="120"
  min="0"
  max="200"
  high="180">120/200 GB</meter>
Try It Yourself

How It Works

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.

Dynamic Values with JavaScript

Update the high threshold at runtime using the meter.high number property:

dynamic-high.html
<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>
Try It Yourself

How It Works

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.

♿ Accessibility

  • Label every meter with visible text — Use <label for="id"> paired with the meter’s id, or wrap the meter in a labeled container so users know what the gauge measures.
  • Include fallback text inside <meter> — Browsers that do not support <meter> show the inner text (e.g. 75%) instead of a blank element.
  • Do not rely on color alone — Supplement meter color regions with visible numeric values or descriptive labels so color-blind users understand the reading.
  • Announce changes when updating dynamically — If JavaScript changes value or high, consider an aria-live region for screen reader updates.
  • Use <meter> for gauges, <progress> for completion — Picking the correct element gives assistive technology the right semantics.
  • Keep scale attributes consistent — Ensure min, max, low, and high use the same units as value so readings make sense when spoken aloud.

🧠 How high Works

1

Author sets meter scale

min, max, low, high, value.

Markup
2

Browser divides scale

Low, moderate, and high segments.

Parse
3

Value mapped to region

Color reflects current segment.

Render
=

Semantic gauge display

Threshold-aware meter coloring.

Browser Support

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.

HTML5 · Fully supported

Universal meter thresholds

All major browsers honor high on <meter> and expose the meter.high property.

97% Browser support
Google Chrome Fully supported
Full support
Mozilla Firefox Fully supported
Full support
Apple Safari Fully supported
Full support
Microsoft Edge Fully supported
Full support
high attribute on <meter> 97% supported

Bottom line: Use high confidently on <meter>; include inner text as a fallback for rare unsupported environments.

💡 Best Practices

✅ Do

  • Use high only on <meter> elements
  • Keep min ≤ low ≤ high ≤ max when all are set
  • Pair meters with visible <label> text
  • Include fallback text inside <meter> (e.g. 75%)
  • Use meter.high = 250 (number) in JavaScript

❌ Don’t

  • Put high on <input> or <progress>
  • Confuse high with max on form controls
  • Set high above max or below low
  • Rely on meter color alone without numeric labels
  • Use <meter> for simple progress bars—use <progress>

Conclusion

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.

Key Takeaways

Knowledge Unlocked

Five truths every developer should know about high

Bookmark these before building your next meter gauge.

5
Core concepts
⚠️ 02

Upper range start

Lower bound of high zone.

Meaning
📝 03

Not input max

Threshold vs form limit.

Compare
⚙️ 04

meter.high = 250

Number property in JS.

Script
05

Label + fallback

Visible text inside meter.

A11y

❓ Frequently Asked Questions

It sets the lower bound of the upper range on a <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.
Only the <meter> element. It does not apply to <input>, <progress>, range sliders, or any other HTML element.
No. 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.
When 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.
Use the numeric IDL property: meterElement.high = 250. This updates the threshold and may change which color region the current value falls into.
Yes. All modern browsers support the high attribute on <meter> along with min, max, low, optimum, and value. Include inner text as a fallback for rare unsupported environments.

Build threshold-aware meter gauges

Practice the high attribute with disk usage, capacity, and JavaScript examples in the Try It editor.

Try disk usage example →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

4 people found this page helpful