The min-width property sets the minimum horizontal width of an element. It stops the used width from going smaller than the value you set.
It is not inherited. The initial value is auto. Content can still make the box grow wider. For a writing-mode-aware floor, use min-inline-size. Pair with max-width 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 wider floor.min-width: 200px is larger than that preferred size.
The floor wins. The used width becomes 200px, not 80px.
Same idea with max-width. If the floor is larger than max-width, the floor still wins.
Edge Cases & Pitfalls
Most confusion is about growth, mixing with width, and flex/grid auto minima.
grow
A floor is not a fixed width
Content larger than the minimum still expands the box. Use width for a preferred size and max-width for a cap.
win
min-width can beat width
When the floor is larger than width or max-width, the used width becomes the min-width value.
flex
Flex/grid auto is content-based
On flex and grid items, min-width: auto can stop shrinking below content size. Set min-width: 0 when you need overflow or shrink behavior.
percent
Percentage uses the containing block width
Percentages resolve against the parent’s width. Make that width clear when you rely on a percentage floor.
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-width is a browser layout property. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Length/% everywhere
min-width
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-widthWidely 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 horizontal width. The box can still grow with content.
Common values:auto, lengths, and percentages of the parent width.
Initial value:auto. Not inherited. A larger floor overrides a smaller width.
Tip: use min-inline-size when the floor should follow writing mode.
One line:min-width is a horizontal floor — not a fixed width, and not a maximum.
Frequently Asked Questions
It sets a minimum horizontal width for an element. The box can still grow wider when content needs more space, but it cannot shrink below that floor.
The initial value is auto. For ordinary block boxes that usually resolves to 0. For flex and grid items, auto can mean a content-based minimum that stops the item from shrinking below its content.
width sets a preferred or fixed width. min-width only sets a lower limit. If content is wider than the floor, the box grows. If min-width is larger than width, the used width becomes the min-width value.
Yes. Percentages resolve against the containing block width. Give the parent an explicit width when you want a predictable percentage floor.
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.