The column-fill property controls how content spreads across columns — evenly balanced or filled one column at a time.
01
Distribution
How columns fill.
02
balance
Equal heights.
03
auto
Sequential fill.
04
Multi-Column
Works with count.
05
Fixed Height
Shows difference.
06
Default
balance.
Fundamentals
Definition and Usage
The column-fill CSS property controls how content is distributed across columns in a multi-column layout. It determines whether columns are balanced so they are approximately equal in height, or filled sequentially one after another.
This property is particularly useful when creating multi-column layouts and you want to control whether content spreads evenly or stacks into the first columns first.
💡
Beginner Tip
Set a fixed height on the column container to clearly see the difference between balance and auto.
Foundation
📝 Syntax
Apply column-fill to any element that uses multi-column layout:
syntax.css
selector{column-fill:balance | auto;}
Basic Example
column-fill-balance.css
.columns{column-count:3;column-fill:balance;}
Syntax Rules
The initial value is balance.
Values: balance (even distribution) or auto (sequential fill).
Requires a multi-column context — use with column-count or column-width.
Most noticeable when the container has a defined height.
Does not change the number of columns — only how content fills them.
Cheat Sheet
⚡ Quick Reference
Question
Answer
Initial value
balance
Applies to
Multi-column block containers
Inherited
No
Animatable
No
Common use
Fixed-height column boxes with even or sequential content flow
Reference
💎 Property Values
The column-fill property accepts two keyword values.
Value
Example
Meaning
balance
column-fill: balance;
Tries to distribute content evenly across columns so they are approximately equal height.
auto
column-fill: auto;
Fills each column sequentially, one after another, which may result in columns of varying heights.
balanceauto
Compare
balance vs auto
Feature
balance
auto
Content flow
Spreads content to keep column heights similar
Fills column 1 fully, then column 2, then column 3
Visual result
Even, newspaper-style balance
First columns may be full; later columns may be shorter
Default
Yes — initial value
No
Best for
Clean, symmetrical multi-column blocks
When you want content to read column-by-column in order
Preview
👀 Live Preview
Both boxes use column-count: 3 and a fixed height. Compare column-fill: balance (even spread) with column-fill: auto (sequential fill).
column-fill: balance
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis egestas rhoncus.
Donec facilisis fermentum sem, ac viverra ante luctus vel. Donec vel mauris quam.
Aliquam euismod, orci vel semper venenatis, mauris ligula consequat purus, non scelerisque magna quam quis elit.
column-fill: auto
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis egestas rhoncus.
Donec facilisis fermentum sem, ac viverra ante luctus vel. Donec vel mauris quam.
Aliquam euismod, orci vel semper venenatis, mauris ligula consequat purus, non scelerisque magna quam quis elit.
Hands-On
Examples Gallery
Compare balance and auto side by side, then try each value on its own with fixed-height column layouts.
🗃 Column Fill Modes
Start with the reference example — compare balance and auto on the same three-column layout.
Example 1 — balance vs auto Comparison
See how column-fill works when set to balance and auto on fixed-height columns.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.
How It Works
balance is the default — you often get even column distribution without setting it explicitly.
📝 Sequential Fill
Use auto when content should fill each column completely before moving to the next.
Example 3 — Sequential Fill with column-fill: auto
Fill columns one at a time — useful when reading order should follow column sequence.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.
How It Works
auto prioritizes filling the first column before spilling into the second and third, which can leave later columns with less content.
Example 4 — Article Box with balance and column-rule
Combine balanced columns with gap and a divider for a polished article snippet.
A balanced two-column article box with a subtle column rule. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
How It Works
column-fill: balance works with other multi-column properties to create readable, evenly filled column layouts.
🧠 How column-fill Works
1
Multi-column layout exists
You set column-count or column-width so the browser creates columns.
Prerequisite
2
You choose balance or auto
Set column-fill to control even distribution or sequential filling.
CSS rule
3
Browser places content in columns
Content flows into columns according to the fill mode and container height.
Layout
=
🗃
Controlled column distribution
Columns appear balanced or sequentially filled depending on your chosen value.
Compatibility
Modern Browser Support
The column-fill property is supported in most modern browsers, including Chrome, Firefox, Safari, Edge, and Opera.
✓ Baseline · Modern browsers
Column fill in today’s browsers
Major browsers support column-fill as part of the CSS Multi-column Layout module.
97%Modern browser support
Google Chrome50+ · Desktop & Mobile
Full support
Mozilla Firefox52+ · Desktop & Mobile
Full support
Apple Safari9+ · macOS & iOS
Full support
Microsoft Edge12+ · All versions
Full support
Opera37+ · Modern versions
Full support
column-fill property97% supported
Bottom line: Use column-fill with multi-column layouts. Test balance vs auto with a fixed container height in your target browsers.
Wrap Up
Conclusion
The column-fill property is a useful tool for controlling the distribution of content in multi-column layouts. By using this property, you can choose whether to balance content evenly across columns or fill each column sequentially.
This helps create visually appealing and well-structured layouts. Experiment with balance and auto to see how this property can enhance your web projects.
Set a fixed height when you need visible balance vs auto differences
Pair with column-count and column-gap
Test in multiple browsers when column height matters for design
Use auto when reading order should follow column sequence
❌ Don’t
Expect big visual differences without a defined container height
Use multi-column fill for separate card grids — use Grid instead
Forget that balance is already the default in most cases
Override column-fill without understanding reading order impact
Confuse column-fill: auto with column-count: auto
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about column-fill
Use these points when controlling column content flow.
5
Core concepts
🗃01
Fill mode
Controls distribution.
Purpose
⚙02
balance Default
Even column heights.
Default
🔢03
auto Value
Sequential fill.
Values
📐04
Fixed height
Shows difference.
Tip
🛸05
With column-count
Multi-column module.
Context
❓ Frequently Asked Questions
column-fill controls how content is distributed across columns. balance tries to make columns roughly equal in height, while auto fills each column sequentially before moving to the next.
The initial value is balance, which distributes content evenly across columns when possible.
balance spreads content so columns are approximately the same height. auto fills the first column completely, then the second, which can leave later columns shorter or empty.
The difference between balance and auto is most visible when the multi-column container has a defined height. Without a height, both values may look similar because columns grow with content.
Use column-fill with column-count or column-width, plus column-gap and column-rule, on block containers that use CSS multi-column layout.