The min-height property sets the minimum vertical height of an element. It stops the used height from going smaller than the value you set.
It is not inherited. The initial value is auto. Content can still make the box grow taller. For a writing-mode-aware floor, use min-block-size. Pair with max-height when you also need a cap.
Standard-track.
Not deprecated. Length and percentage values are Baseline Widely available. stretch has limited support. The fit-content() function is experimental and not usable in browsers yet.
Set a taller floor.min-height: 150px is larger than that preferred size.
The floor wins. The used height becomes 150px, not 80px.
Same idea with max-height. If the floor is larger than max-height, the floor still wins.
Edge Cases & Pitfalls
Most confusion is about percentages, growth, and mixing with height.
percent
Percentage needs a sized containing block
If the parent height depends on content, a percentage min-height is treated as 0 for normal flow. Give the parent an explicit height.
grow
A floor is not a fixed height
Content larger than the minimum still expands the box. Use height for a preferred size and max-height for a cap.
win
min-height can beat height
When the floor is larger than height or max-height, the used height becomes the min-height value.
flex
Flex items default to min-height: auto
That auto minimum can stop a flex item from shrinking below its content. Set min-height: 0 when you need overflow or shrink behavior.
box
box-sizing still applies
With border-box, padding and border count inside the size. With content-box, they add outside it.
Compatibility
Browser Support
min-height is a browser layout property. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Length/% everywhere
min-height
Length and percentage values work in all modern browsers and older ones. Intrinsic keywords are widely supported in current engines. stretch is limited; fit-content() is not usable yet.
99%Length and % values
Google ChromeAll versions · length/%
Full support
Mozilla FirefoxAll versions · length/%
Full support
Apple SafariAll versions · length/%
Full support
Microsoft EdgeAll versions · length/%
Full support
OperaAll versions · length/%
Full support
Samsung InternetAll versions · length/%
Full support
Internet Explorer6+ length/% · keywords limited
Partial
min-heightWidely supported
Bottom line: Safe for every modern site. Prefer lengths and percentages for everyday work. Treat stretch as limited and fit-content() as experimental.
Remember
Key Takeaways
Role: set a minimum vertical height. The box can still grow with content.
Common values:auto, lengths, and percentages of the parent height.
Initial value:auto. Not inherited. A larger floor overrides a smaller height.
Tip: use min-block-size when the floor should follow writing mode.
One line:min-height is a vertical floor — not a fixed height, and not a maximum.
Frequently Asked Questions
It sets a minimum vertical height for an element. The box can still grow taller when content needs more space, but it cannot shrink below that floor.
The initial value is auto. The browser picks a minimum based on the element and layout rules, which often means no extra floor beyond content for ordinary blocks.
height sets a preferred or fixed height. min-height only sets a lower limit. If content is taller than the floor, the box grows. If min-height is larger than height, the used height becomes the min-height value.
Yes. Percentages resolve against the containing block height. If that height depends on content, the percentage is treated as 0 for non-absolutely positioned elements.
No. Set it on the element that needs the floor. Use inherit only when you want to copy a parent value on purpose.
Length and percentage values are supported in all modern browsers and older ones too. Intrinsic keywords and stretch have newer or limited support. It is a browser layout property, not a Node.js feature.