CSS column-fill Property

Beginner
⏱️ 6 min read
📚 Updated: Jun 2026
🎯 4 Examples
Layout & Columns

What You’ll Learn

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.

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.

📝 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.

⚡ Quick Reference

QuestionAnswer
Initial valuebalance
Applies toMulti-column block containers
InheritedNo
AnimatableNo
Common useFixed-height column boxes with even or sequential content flow

💎 Property Values

The column-fill property accepts two keyword values.

ValueExampleMeaning
balancecolumn-fill: balance;Tries to distribute content evenly across columns so they are approximately equal height.
autocolumn-fill: auto;Fills each column sequentially, one after another, which may result in columns of varying heights.
balance auto

balance vs auto

Featurebalanceauto
Content flowSpreads content to keep column heights similarFills column 1 fully, then column 2, then column 3
Visual resultEven, newspaper-style balanceFirst columns may be full; later columns may be shorter
DefaultYes — initial valueNo
Best forClean, symmetrical multi-column blocksWhen you want content to read column-by-column in order

👀 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.

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.

column-fill-compare.html
<style>
  .columns {
    column-count: 3;
    column-gap: 20px;
    height: 200px;
  }
  .balance { column-fill: balance; }
  .auto { column-fill: auto; }
</style>

<div class="columns balance">...</div>
<div class="columns auto">...</div>
Try It Yourself

How It Works

With a fixed height, balance spreads paragraphs across three columns more evenly. auto fills the first column before moving content to the next.

Example 2 — Balanced Columns with column-fill: balance

Use the default balance value for symmetrical column heights.

column-fill-balance.html
<style>
  .balanced {
    column-count: 3;
    column-gap: 1.5rem;
    column-fill: balance;
    height: 180px;
  }
</style>

<div class="balanced">...</div>
Try It Yourself

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.

column-fill-auto.html
<style>
  .sequential {
    column-count: 3;
    column-fill: auto;
    height: 180px;
  }
</style>

<div class="sequential">...</div>
Try It Yourself

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.

column-fill-article.css
.article-box {
  column-count: 2;
  column-gap: 2rem;
  column-rule: 1px solid #e2e8f0;
  column-fill: balance;
  height: 160px;
  padding: 1rem;
}
Try It Yourself

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.

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 Chrome 50+ · Desktop & Mobile
Full support
Mozilla Firefox 52+ · Desktop & Mobile
Full support
Apple Safari 9+ · macOS & iOS
Full support
Microsoft Edge 12+ · All versions
Full support
Opera 37+ · Modern versions
Full support
column-fill property 97% supported

Bottom line: Use column-fill with multi-column layouts. Test balance vs auto with a fixed container height in your target browsers.

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.

💡 Best Practices

✅ Do

  • Use balance for even, symmetrical column layouts
  • 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

Key Takeaways

Knowledge Unlocked

Five things to remember about column-fill

Use these points when controlling column content flow.

5
Core concepts
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.

Practice in the Live Editor

Open the HTML editor, set column-fill: balance and auto, and compare column distribution.

HTML Editor →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

5 people found this page helpful