CSS column-width Property: A Practical, Modern Guide

I’ve watched more than one layout implode because a designer wanted “newspaper columns” but the CSS treated the content like a rigid grid. If the column width is too small, text becomes unreadable. If it’s too big, you lose the point of columns altogether. The column-width property is the dial that lets you steer that outcome without hard-coding an exact column count. When I reach for it, I’m aiming for a resilient layout that adapts to narrow phones, mid-size tablets, and wide desktop monitors without manual breakpoints at every stop. You’ll see how column-width chooses the minimum column size, how the browser decides the actual number of columns, and why this property pairs well with modern responsive design. I’ll also show where it can backfire, how to debug layout surprises, and how to combine it with column-count, column-gap, and column-rule for readable, production-ready results.

A clear mental model for column-width

Think of column-width like setting the ideal width of a magazine column and letting the browser decide how many columns fit. You’re giving the layout engine a target size, not a hard promise. If your container is wide enough for three columns at 280px each, it will try to create three columns. If the container shrinks and only fits two columns at that size, you get two. If the container is too narrow to fit at least two columns, you get a single column. That last rule surprises many people, but it’s core to how multi-column layout preserves readability.

In my experience, this behavior makes column-width more forgiving than column-count. column-count says “I want exactly three columns,” which can produce columns that are too narrow on smaller screens. column-width says “I want columns about this wide, but do the reasonable thing.” I treat it as a responsive guardrail.

Here’s the key idea I keep in my head:

  • column-width specifies a preferred minimum column size.
  • The browser calculates how many columns fit at that size, factoring in column-gap.
  • If it can’t fit two columns at that width, it falls back to one.

This behavior is why column-width is a strong default for text-heavy layouts that must scale across devices.

Syntax and values you actually use

The core syntax is straightforward:

column-width: auto    initialinherit;

Here’s how I use those values in practice:

  • auto: The browser chooses the column width, usually based on other properties like column-count. I rarely use auto by itself because it removes my control over readability.
  • : The most useful option. You define a width like 18rem, 260px, or 30ch and let the browser compute the column count.
  • initial: Resets to the default behavior. It’s a reset tool, not a layout strategy.
  • inherit: Pulls the value from the parent, helpful in nested components.

If you’re working with a design system, I recommend defining a column width token, just like you would for spacing. I often base it on ch units because it ties to character width, which aligns with legibility goals. For example, column-width: 30ch; keeps line length reasonable for body text.

Why column-width beats column-count for responsive text

If you’ve ever tried a fixed column-count on a long article, you’ve seen the issue: narrow screens force columns that feel like single words stacked. With column-width, the browser doesn’t force that. The property changes the constraint from “how many columns” to “how wide should each column be.”

I like to think of it as a printer who decides how many columns fit on a page depending on paper size. The column width stays consistent, and the column count adapts. That makes it easier to design for readability, especially when you don’t control all container sizes.

Here’s a small comparison table that mirrors how I decide between the two in real projects.

Approach

Traditional pattern

Modern pattern (my default in 2026) —

— Column structure

Hard-coded column-count

Adaptive column-width with a safe minimum Responsiveness

Needs more breakpoints

Often works with fewer breakpoints Readability control

Indirect

Direct (via target width) Best for

Fixed layouts, kiosks

Articles, cards, content feeds

If you need a fixed number of columns for a dashboard or a brochure-like PDF output, column-count can be correct. For most web content, I prefer the resilience of column-width.

A complete, runnable example you can drop into a page

This example uses column-width with a layout that behaves well from 320px phones to wide desktop screens. It includes vendor-prefixed properties for older engines, although in 2026 most evergreen browsers handle the standard property just fine.






Column Width Demo

:root {

--body-font: "Source Serif 4", Georgia, serif;

--text-color: #1f1f1f;

--bg: #f7f2ea;

--column-gap: 1.5rem;

--column-width: 28ch; / readable measure for body text /

}

body {

margin: 0;

padding: 2rem;

font-family: var(--body-font);

color: var(--text-color);

background: var(--bg);

line-height: 1.6;

}

.article {

max-width: 1100px;

margin: 0 auto;

-webkit-column-width: var(--column-width);

-moz-column-width: var(--column-width);

column-width: var(--column-width);

-webkit-column-gap: var(--column-gap);

-moz-column-gap: var(--column-gap);

column-gap: var(--column-gap);

}

.article h2 {

break-after: avoid;

-webkit-column-span: all;

column-span: all; / keep headings full width /

}

.note {

padding: 0.75rem 1rem;

background: #fff1cf;

border-left: 4px solid #d3a029;

break-inside: avoid; / keep note intact /

}

Column-Width in Action

Readable columns across screen sizes

I design long-form text around a target line length, so I start with a

column width in the range of 24–32ch. This keeps scanning comfortable

and reduces eye fatigue, especially on wide screens.

When the container gets narrow, the browser drops down to two columns

or one, rather than crushing the text into thin strips.

Tip: Combine column-width with column-gap and column-span to preserve

visual hierarchy.

You can experiment by resizing the browser window and watching how the

columns reflow without you writing a single breakpoint.

A few key patterns are doing the heavy lifting:

  • column-width sets a target width that controls readability.
  • column-span: all ensures headings stay full width, which improves hierarchy.
  • break-inside: avoid prevents small boxes like callouts from splitting across columns.

I keep this structure around as a base template for any editorial UI.

How the browser decides column count (and how to steer it)

The browser effectively runs a small layout math loop. It takes your container width, subtracts gaps, and calculates how many columns fit at your specified width. The final column widths might be slightly adjusted to evenly distribute space, but the number of columns is what you feel most as a developer.

You can steer that decision with three knobs:

  • column-width: Your preferred minimum width.
  • column-gap: The space between columns.
  • max-width on the container: How wide the parent can grow.

If you want more columns on wide screens, you can either decrease column-width, increase container width, or reduce the gap. I almost always start with readability and only tweak these knobs if the layout feels too sparse.

Here’s a quick example showing how a smaller column-width increases columns:

/ Narrower columns = more columns at the same container width /

.article--dense {

column-width: 20ch;

column-gap: 1rem;

}

And here’s a pattern for keeping columns from getting too wide on ultra‑wide screens:

/ Keep the content from stretching too far /

.article {

max-width: 1200px;

margin: 0 auto;

column-width: 28ch;

}

The combination of max-width and column-width prevents a “too many columns” effect that can make reading feel fragmented.

Common mistakes I see (and how I avoid them)

I’ve reviewed dozens of multi-column layouts over the years. The same mistakes pop up again and again, so I’ve built a short checklist.

1) Using pixel widths without considering typography

A column-width: 200px can be fine for captions, but it’s usually too narrow for body text. I use ch units for text-heavy columns because it ties width to the font’s character width, giving me more consistent line lengths. When I do use pixels, I base it on the font size, not on an arbitrary number.

2) Forgetting column gaps

When columns are too close, the layout feels cramped, and readers accidentally jump lines. I prefer 1.2rem to 2rem for body text, depending on the font. The gap is not just decoration—it’s a readability tool.

3) Missing break-inside for cards and callouts

Small blocks like figures, pull quotes, or code snippets can split awkwardly. If the content needs to stay together, I add break-inside: avoid to those elements. It’s the difference between a professional layout and a messy one.

4) Assuming column-width sets exact width

It doesn’t. The browser may adjust the final width to distribute space evenly. That’s by design. If you need exact widths, you probably want a grid or flex layout instead.

5) Overusing multi-columns for non-text UI

Columns are great for text, not for forms or interactive components. Multi-column layout can disrupt focus order and keyboard navigation. I avoid it for complex UI and stick to grid or flex for interactive layouts.

When to use it—and when to avoid it

Here’s my practical guidance based on real projects:

Use column-width when:

  • You’re laying out long text: articles, documentation, biographies, FAQs.
  • You want a responsive column count without lots of breakpoints.
  • Readability matters more than rigid layout control.

Avoid it when:

  • The content is highly interactive (forms, dashboards, complex card grids).
  • You need strict alignment of items across rows.
  • You require predictable tab order and screen reader flow across a complex UI.

If you’re unsure, test the keyboard navigation and screen reader reading order. Multi-column layout preserves DOM order, which can cause focus to jump in ways that feel strange. For a purely reading experience, that’s fine. For interactive flows, it’s often a deal-breaker.

Modern practices in 2026: design tokens, AI checks, and content-aware sizing

The multi-column spec hasn’t changed dramatically in the last few years, but the workflows around it have. Here’s how I approach it in 2026.

Design tokens for consistent column sizing

I keep a columnWidth token in the design system, just like spacing or typography tokens. This makes it easy to keep columns consistent across editorial pages.

:root {

--measure-narrow: 24ch;

--measure-default: 28ch;

--measure-wide: 32ch;

}

.article {

column-width: var(--measure-default);

}

AI-assisted readability checks

I sometimes run a quick AI-assisted audit on long-form content to flag sections with unusually long line length or awkward breaks. I treat these reports as suggestions, not rules. The goal is to find outliers, not to standardize everything.

Container queries, but with restraint

If you’re already using container queries, you can adjust column-width based on container size rather than viewport size. This can be useful in complex layouts where an article is nested inside a card or a side panel. I keep the rules minimal, otherwise I lose the simplicity that makes column-width appealing.

@container (min-width: 700px) {

.article {

column-width: 30ch;

}

}

I still prefer a single column-width value as the default, then a small override for very wide containers.

Combining column-width with other multi-column properties

column-width is a foundation. To build a complete multi-column layout, I usually add a few related properties:

  • column-gap: Controls spacing between columns.
  • column-rule: Adds a subtle divider line between columns.
  • column-span: Allows headings or key elements to stretch across columns.
  • break-inside: Keeps elements intact.

Here’s a full example that shows the combination in action:






Multi-Column Layout

:root {

--text: #222;

--bg: #f3f5f8;

--rule: #d6dbe2;

--gap: 1.4rem;

}

body {

margin: 0;

padding: 2rem;

background: var(--bg);

color: var(--text);

font-family: "Crimson Pro", serif;

line-height: 1.65;

}

.story {

max-width: 1200px;

margin: 0 auto;

column-width: 29ch;

column-gap: var(--gap);

column-rule: 1px solid var(--rule);

}

.story h2 {

column-span: all;

margin-top: 0;

}

.story figure {

break-inside: avoid;

margin: 1rem 0;

padding: 0.75rem;

background: white;

border: 1px solid #e2e6ec;

}

Why Column Width Matters

I’m always balancing line length with screen size. The column-width

property gives me a consistent reading measure, while the browser

decides how many columns to render.

Note: Keep blocks intact to avoid awkward breaks.

On narrow screens, the layout drops to a single column without extra

breakpoints. On wide screens, readers still get a comfortable measure.

This pattern scales from phones to desktops with minimal CSS. That’s exactly why I favor it.

Accessibility and reading order

Multi-column layout can be tricky for screen readers and keyboard users because the visual flow doesn’t always match the reading order. Browsers keep DOM order, which means assistive tech reads left-to-right, top-to-bottom, even if the user perceives the content in columns. That’s acceptable for long-form articles, but it can be confusing for mixed content.

My rule of thumb:

  • For articles and static reading content, multi-columns are fine.
  • For interactive content, avoid multi-columns unless you confirm the navigation flow with real testing.

If you do use columns in a mixed layout, I keep interactive elements grouped and avoid splitting them across columns. A small chunk of interactivity—like a single signup form—can still work if it spans all columns.

.cta {

column-span: all;

margin: 1.5rem 0;

padding: 1rem;

background: #fdf6e9;

border: 1px solid #f1d69a;

}

That rule preserves a linear focus order where it matters, while still allowing the text around it to flow in columns.

Edge cases that surprise people (and how I handle them)

Even experienced developers run into some subtle issues with multi-column layout. These are the ones I see most often.

1) Images that overflow or get clipped

Large images don’t magically resize to fit a column. If an image is wider than a column, it can overflow and break the flow. I solve this with a simple rule:

.article img {

max-width: 100%;

height: auto;

break-inside: avoid;

}

The max-width keeps the image in bounds, and break-inside: avoid keeps the image from splitting.

2) Long code blocks that split awkwardly

Code and preformatted text can create very tall boxes, so they sometimes spill into the next column. If a code block is essential, I let it span all columns or avoid columns for that section.

pre {

column-span: all;

overflow: auto;

background: #0e0f12;

color: #e7e7e7;

padding: 1rem;

border-radius: 6px;

}

3) Hidden overflow in the container

If your container has overflow: hidden, you can accidentally crop columns. It sounds obvious, but I’ve seen it happen when a developer adds overflow to clip a background effect. For columns, I avoid hidden overflow unless I’m absolutely sure it won’t clip content.

4) Short content that creates lonely columns

When content is short, you can end up with a second column containing one or two lines. It looks broken. In those cases, I either remove columns or increase column-width so it defaults to a single column.

5) Column balancing in short containers

Browsers try to balance content across columns. With short content, the balancing can create weird line breaks. I avoid this by applying columns only at a breakpoint where I know the content is long enough to justify the layout.

@media (min-width: 900px) {

.article {

column-width: 28ch;

}

}

That minor constraint keeps the layout from looking accidental.

Practical scenarios where column-width shines

To make the property feel less abstract, here are real scenarios where I’ve used it to good effect.

Scenario 1: Long-form blog posts

A common problem with wide screens is overly long line length. column-width keeps the reading measure consistent and adds columns only when there’s enough space.

.blog-post {

column-width: 30ch;

column-gap: 1.8rem;

max-width: 1200px;

margin: 0 auto;

}

This gives you single column on phones, two columns on mid-size screens, and three on wide monitors—without any extra breakpoints.

Scenario 2: Knowledge base and documentation

Documentation pages often have dense text and occasional callouts. Columns keep the content readable while callouts stay intact.

.doc {

column-width: 26ch;

column-gap: 1.4rem;

}

.doc .callout {

break-inside: avoid;

background: #f7fbff;

border-left: 4px solid #7bb3ff;

padding: 0.75rem 1rem;

}

Scenario 3: Biographies and timelines

For bios, a multi-column layout reads like a magazine. I often span headings and key dates across all columns for clarity.

.bio h2,

.bio .date {

column-span: all;

}

Scenario 4: FAQ sections

FAQs can benefit from columns when there are many short entries. With column-width, the columns appear only when there’s space, and it still reads well on mobile.

.faq {

column-width: 24ch;

column-gap: 1.6rem;

}

Performance and layout cost (what to expect)

Multi-column layouts do have a cost because the browser has to flow content into multiple boxes. In practice, for typical article-length content, the performance impact is small and rarely noticeable. The more significant costs come from images, fonts, and scripts.

That said, I keep two performance-friendly habits:

  • Avoid applying column-width to massive, highly dynamic DOM sections that reflow constantly.
  • Keep large images and media outside the multi-column container when possible, especially if they are interactive or animated.

A rough rule of thumb I use: if the content is mostly static text, columns are safe. If it’s a complex, interactive feed that updates frequently, a grid or single-column flow is usually more stable.

Debugging layout surprises

Multi-column layout can be opaque if you don’t know what the browser is doing. Here’s my quick debugging flow.

Step 1: Outline the columns visually

Sometimes I add a temporary column-rule to see the column boundaries.

.article {

column-rule: 1px dashed #ff7a00;

}

This makes it immediately obvious how many columns exist and where the gaps are.

Step 2: Check container width and max-width

If your container is too narrow, you’ll never get multiple columns. I check the computed width and any max-width constraints.

Step 3: Verify column-gap

If the gap is too large, you might reduce the number of columns without realizing it. Reduce the gap to see if the column count changes.

Step 4: Inspect break-inside behavior

Some elements may break unexpectedly. I test with break-inside: avoid on those elements to see if it fixes the problem.

Step 5: Confirm the browser’s final column width

Remember that column-width is a preference, not a strict rule. DevTools often show the computed column width. If it’s very different from what you set, the container width or gap is likely influencing it.

Deep dive: choosing a column width that feels right

There’s no single perfect number, but I do follow a set of heuristics.

Use typographic measure, not pure pixels

I aim for 45–75 characters per line for body text. ch is a convenient unit because it approximates the width of the “0” character in the current font. So 28ch usually yields a good reading measure at common font sizes.

Adjust based on font style

Serif fonts tend to read well at slightly longer measures, while sans-serif can feel dense at the same width. If I switch fonts, I re-check the measure.

Consider line-height and column gap together

If the line-height is tight, I keep the column width slightly smaller to prevent the block from feeling heavy. If line-height is generous, I can stretch the columns a little more without losing readability.

Use a max-width to avoid excessive column counts

Even with a reasonable column width, very large monitors can create too many columns. A max-width keeps the layout cohesive.

Alternatives when column-width isn’t the right tool

Sometimes multi-column layout isn’t appropriate. Here are a few alternatives I reach for instead.

1) CSS Grid for strict alignment

If you need a fixed column count and items aligned across rows, grid is a better fit.

.grid {

display: grid;

grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));

gap: 1.5rem;

}

Grid is great for cards and UI components. It doesn’t flow text across columns, but it gives you consistent alignment.

2) Flexbox for simpler layouts

Flexbox can handle simple multi-column layouts of independent items. If content doesn’t need to flow, flex is simpler and more predictable.

.cards {

display: flex;

flex-wrap: wrap;

gap: 1.5rem;

}

.card {

flex: 1 1 280px;

}

3) Single-column with max-width for pure readability

Sometimes the best solution is to avoid columns entirely and just keep the line length short.

.article {

max-width: 72ch;

margin: 0 auto;

}

This is my fallback if columns start to feel like they’re adding complexity without clear benefit.

Production checklist for multi-column layouts

Before I ship a multi-column layout, I run through a quick production checklist.

  • Readability: Does the measure feel comfortable at small, medium, and large sizes?
  • Gaps: Are column gaps large enough to prevent line-hopping?
  • Headings: Do headings span all columns and preserve hierarchy?
  • Blocks: Are callouts, images, and code blocks kept intact with break-inside?
  • Accessibility: Does reading order still make sense in assistive tech?
  • Responsiveness: Does it gracefully drop to one column when needed?
  • Fallbacks: Does the layout remain readable without columns (older browsers)?

Most of these can be checked in a few minutes and save you from shipping a layout that looks great on your own screen but breaks on others.

A more complete, real-world component

Here’s a slightly more realistic component that you might use in a production article page. It includes a title, byline, lead paragraph, pull quote, figure, and call-to-action. I’m keeping it lightweight, but it shows the common patterns working together.

<header class="featureheader">

The Quiet Power of Column Width

<p class="featurebyline">By A. Designer · 7 min read

<p class="featurelead">

A well-chosen column width reduces eye strain, improves scanning, and

makes long-form reading feel effortless.

<div class="featurebody">

Long-form text benefits from a consistent measure...

When the screen gets wider, columns appear naturally...

“Column width is the hidden lever behind readable layouts.”

Open magazine layout
Columns provide rhythm on wide screens.

Spacing, gaps, and breaks work together...

.feature {

max-width: 1200px;

margin: 0 auto;

padding: 2rem;

font-family: "Source Serif 4", Georgia, serif;

color: #1c1c1c;

background: #faf7f2;

}

.featureheader h1 {

margin: 0 0 0.25rem;

}

.featurebyline {

color: #666;

margin: 0 0 1.5rem;

}

.featurelead {

font-size: 1.15rem;

line-height: 1.7;

margin: 0 0 2rem;

}

.featurebody {

column-width: 28ch;

column-gap: 1.6rem;

}

.pull {

column-span: all;

font-size: 1.3rem;

margin: 1.5rem 0;

padding: 1rem 1.25rem;

border-left: 4px solid #e0b05e;

background: #fff4dc;

}

.figure {

break-inside: avoid;

margin: 1rem 0;

}

.figure img {

max-width: 100%;

display: block;

}

.cta {

column-span: all;

margin-top: 2rem;

padding: 1rem 1.25rem;

background: #fdf0d5;

border: 1px solid #f1d39d;

}

This is a good baseline for editorial pages: headings and calls-to-action span across columns, blocks stay intact, and the main body responds naturally as the container changes.

Pitfalls with mixed media and how I mitigate them

Whenever I mix text, images, and videos in columns, I check the following:

  • Image aspect ratios: Tall images can dominate a column and push text into narrow spaces. I scale or crop them for balance.
  • Video embeds: I keep videos outside the multi-column container or set them to span all columns.
  • Captions: Captions should wrap with the media, not drift into another column. I keep figures as a single unit with break-inside: avoid.

These are small rules, but they keep the layout from feeling chaotic.

Balancing columns vs. natural flow

Columns can sometimes feel too “balanced,” especially for narrative content where natural flow is important. If a paragraph ends halfway down a column and a new column starts, the reader may lose the sense of progression.

I’ve used two strategies to reduce this:

  • Increase column-width slightly so there are fewer columns. This reduces the number of column transitions.
  • Use shorter paragraphs for multi-column text. Long paragraphs can feel heavy when split across columns.

When the content is more technical or reference-like, column balance can actually help scanning. So it’s a trade-off I make based on the reading mode.

How I approach testing on real devices

Testing multi-column layouts is less about pixel precision and more about reading comfort. My quick testing workflow:

  • Phone: Confirm it drops to one column without awkward spacing.
  • Tablet: Ensure two columns aren’t too narrow.
  • Wide desktop: Make sure you’re not getting too many columns or too sparse gaps.

I also check whether headings and callouts span correctly, and whether the line length stays within a readable range.

FAQ-style clarifications

These are the questions I hear most often when teaching teams to use column-width.

Does column-width guarantee a minimum width?

It sets a preferred width. The browser may still adjust the final size to fit the container.

Will column-width override column-count?

If both are set, the browser uses them together to find the best fit, but neither is guaranteed to be exact. I generally set one or the other to avoid surprises.

Can I use percentages with column-width?

No. The property expects a length value or auto. Percentages don’t apply here.

Is column-width good for cards or image grids?

Not really. It’s best for text flow. Use grid or flex for cards.

Long-term maintenance tips

Multi-column layouts are easy to create but sometimes hard to maintain as content evolves. Here are the habits that keep them stable over time:

  • Establish a clear measure token: So designers and developers are aligned on intended column widths.
  • Keep content modules intact: Use break-inside: avoid for blocks that shouldn’t split.
  • Document when not to use columns: So future contributors don’t apply them to interactive components.
  • Re-check after typography changes: Font swaps can change effective line length.

These steps reduce regression risk when content or styles change.

Final takeaways

column-width is less about forcing a layout and more about guiding it. You set the preferred width, and the browser adapts the column count to the available space. That makes it a perfect tool for long-form text that needs to stay readable on every device.

If I had to distill it into a short rule: set a readable measure, let the browser decide the number of columns, and protect the pieces that shouldn’t break. When you do that, you get a layout that feels intentional, modern, and resilient.

In practice, this means:

  • Start with a ch-based width like 28ch.
  • Add a comfortable column-gap.
  • Use column-span: all for headings and calls to action.
  • Use break-inside: avoid for callouts and figures.
  • Add a max-width to avoid too many columns.

Follow those steps, and you’ll get the best version of multi-column layout: one that respects the content, the reader, and the device—without requiring you to hand-craft a dozen breakpoints.

Additional real-world patterns you can borrow

To help you build practical layouts faster, here are a few “recipes” I use regularly. Each one focuses on a specific outcome.

Recipe 1: Minimal, clean article

This is the simplest layout I use when I want the content to breathe without extra decoration.

.article--clean {

column-width: 30ch;

column-gap: 1.8rem;

max-width: 1100px;

margin: 0 auto;

}

.article--clean h2 {

column-span: all;

margin-top: 0;

}

Recipe 2: Dense newsletter layout

For newsletters or dense informational pages, I use narrower columns but keep the gap generous so the text doesn’t feel cramped.

.newsletter {

column-width: 22ch;

column-gap: 2rem;

}

Recipe 3: Magazine-style layout with rules

This adds subtle separators to create a classic editorial look.

.mag {

column-width: 28ch;

column-gap: 1.4rem;

column-rule: 1px solid #e1e1e1;

}

Recipe 4: Two-column only (gentle constraint)

If you want to avoid a third column ever appearing, set a wide max-width or increase the column width slightly so only two columns fit.

.two-column {

column-width: 35ch;

max-width: 900px;

}

Recipe 5: Callout-heavy layout

For content that includes multiple callouts, I apply break-inside: avoid broadly to those blocks.

.article .callout,

.article .quote,

.article .summary {

break-inside: avoid;

padding: 0.75rem 1rem;

background: #f7f7f7;

}

Each recipe is just a starting point, but it shows how flexible column-width can be when you pair it with a few related properties.

Closing thought

Whenever I’m deciding how to structure long-form text, I come back to one question: “What feels effortless to read?” column-width is a practical answer to that question because it gives me a consistent measure, adapts to screen size, and keeps my CSS simple. It’s one of those properties that doesn’t get flashy headlines, but it quietly makes everything better.

If you want to deepen your layout skills, start experimenting with column-width on real text. Resize your browser. Test on a phone. Add a callout and see how it behaves. The more you observe, the more intuitive the property becomes—and the more your layouts start to feel like crafted reading experiences rather than accidental grids.

Scroll to Top