The flex-grow property sets a flex item’s grow factor — how much of the container’s leftover main-axis space it should take compared with its siblings.
The initial value is 0 (do not grow). Use a non-negative number such as 1 or 2. It applies only to flex items inside a display: flex (or inline-flex) container. It is not inherited. For everyday layouts, MDN also recommends the flex shorthand, which sets grow, shrink, and basis together.
Baseline widely available.
Not deprecated. Prefer non-negative numbers. Negative values are invalid. Prefer flex: 1 (or similar) when you want the usual grow + shrink + basis combo in one line.
A gets one part. About one-third of the leftover width.
B gets two parts. About two-thirds of the leftover width.
Not double total width. Growth is only the extra space, added to each item’s base size.
Edge Cases & Pitfalls
If nothing grows, one of these is usually why.
parent
Needs a flex container
flex-grow on a block in a non-flex parent does nothing. Set display: flex on the parent first.
space
No free space, no growth
If items already fill the container (or wrap onto new lines with no leftover), grow factors have nothing to distribute.
ratio
Ratios, not percentages
2 is not “200% width.” It is twice the free-space share of 1.
minus
Negatives are invalid
flex-grow: -1 is dropped. Use 0 or a positive number.
shrink
Grow is not shrink
When space is tight, flex-shrink controls how items get smaller. Pair both via the flex shorthand when you can.
Compatibility
Browser Support
flex-grow is a browser CSS property for Flexbox. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available
flex-grow
Supported in all modern browsers as part of CSS Flexible Box Layout (Baseline since September 2015).
100%Non-negative numbers
Google Chrome29+
Full support
Mozilla Firefox20+
Full support
Apple Safari9+
Full support
Microsoft Edge12+
Full support
Opera17+
Full support
Samsung InternetAll versions
Full support
Internet Explorer11
Full support
flex-growWidely supported
Bottom line: Safe for production Flexbox layouts. Prefer the flex shorthand for common grow + shrink + basis patterns. It is not a runtime API.
Remember
Key Takeaways
Role: decide how flex items share leftover main-axis space.
Initial value:0. Not inherited.
Ratios:1 and 2 split free space 1:2, not total width.
Tip: use the flex shorthand when you also care about shrink and basis.
One line:flex-grow is the ratio for sharing leftover flex space — 0 stays put, 1 shares equally.
Frequently Asked Questions
It sets how much leftover main-axis space a flex item should take relative to its siblings. Higher factors get a larger share of the free space.
The initial value is 0, so items do not grow and stay at their content or flex-basis size unless you change it.
It gets twice as much of the leftover free space, not twice the total width. Base sizes still matter.
No. It only applies to flex items. The parent needs display: flex or inline-flex.
MDN recommends the flex shorthand for common patterns, because it also sets flex-shrink and flex-basis reliably. flex-grow alone is fine for study and precise control.
It is Baseline and widely available in modern browsers. It is a browser CSS property, not a Node.js feature.