The column-fill property controls how content is distributed when an element uses multi-column layout. With balance (the default), the browser tries to make columns roughly equal in height. With auto, columns fill in order—first column first—so later columns can stay shorter or empty.
It applies to multicol elements (for example after you set column-count or columns), is not inherited, and the initial value is balance. The difference is clearest when the container has a fixed height.
Standard-track.
Not deprecated. balance and auto are widely available since 2017. The spec also defines balance-all for paged media, but no browser supports it yet.
Warning — interop quirks.
Browsers still disagree in edge cases. Chrome applies column-fill: auto only when the multicol box has a block size (such as height). Firefox may fill the first column even without a height.
Syntax
CSS Syntax
syntax.css
column-fill:auto | balance | initial | inherit;
Use balance or auto in practice. Skip balance-all until browsers implement it.
Values
Property Values
Value
Description
Try it
balance
Default. Spread content so columns are roughly equal in height
Auto: columns fill in order, so later ones may stay empty.
How It Works
Shared scaffold. Both paragraphs use the same height, column count, and rule.
One keyword each.balance vs auto is the only difference that matters.
Read the shapes. Balanced text looks even; sequential fill piles into early columns.
Study tip. Keep content short so empty later columns are obvious under auto.
Edge Cases & Pitfalls
If auto looks balanced, check height and browser behavior first.
height
No height, little difference
Without a fixed block size, columns often grow with content and balance vs auto look similar. Set a height to study sequential fill.
Chrome
Chrome needs a block size for auto
Chrome consults column-fill: auto only when the multicol container has a size in the block dimension. Firefox may fill the first column even without that size.
spec
balance-all is not usable yet
The CSS Multi-column Level 2 value balance-all is defined for fragmented/paged contexts, but no browser implements it. Prefer balance.
long
Long content fills every column
If text is taller than all columns combined under auto, every column fills and the contrast with balance shrinks. Use shorter sample text when teaching.
multicol
Only works on multicol boxes
column-fill has no effect until the element is a multicol container via column-count, column-width, or columns.
Compatibility
Browser Support
column-fill is a browser layout property. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available since 2017
column-fill
Chrome 50+, Firefox 52+, Safari 9+, Edge 12+. Interop quirks remain for auto without a height.
97%modern browsers
Google Chrome50+
Full support
Mozilla Firefox52+
Full support
Apple Safari9+
Full support
Microsoft Edge12+
Full support
Opera37+
Full support
Samsung Internet5.0+
Full support
Internet Explorer10+
Partial / quirks
column-fillWidely supported
Bottom line: Safe for modern sites. Always give a height when relying on column-fill: auto. Do not depend on balance-all yet.
Remember
Key Takeaways
Role: controls whether columns balance or fill in sequence.
Default:balance spreads content evenly.
auto: fills column 1, then 2, and so on—best with a fixed height.
Interop: Chrome needs a block size for reliable auto.
One line:column-fill chooses even columns (balance) or sequential fill (auto); give the multicol box a height when studying auto.
Frequently Asked Questions
column-fill controls how content is distributed across columns. balance spreads content so columns are roughly equal in height. auto fills columns in order, which can leave later columns shorter or empty.
The initial value is balance. Content is divided evenly across columns when possible.
Without a fixed height (block size) on the multicol container, both often look alike. Give the box a height so auto can fill the first column before overflowing into the next.
Yes. Chrome only applies sequential filling when the multicol container has a size in the block dimension (for example height). Firefox may apply auto even without a height.
The spec defines balance-all for balancing every fragment in paged media, but no browser supports it yet. Stick to balance and auto.
Chrome 50+, Firefox 52+, Safari 9+, Edge 12+, and Opera 37+. It is a browser layout property, not a Node.js feature.