CSS break-inside Property

Beginner
5 min read
Updated: Oct 2026
3 examples
Live preview

Definition and Usage

The break-inside property sets how a page, column, or region break should behave inside an element’s box. If the element does not generate a box, the property is ignored.

Unlike break-before and break-after, it has no forced-break keywords. You only allow or avoid breaks within the box. It applies to block-level elements, is not inherited, and starts at auto.

Standard-track.

Not experimental. Prefer break-inside over the older page-break-inside alias. Region values still have limited support.

CSS Syntax

syntax.css
break-inside: auto | avoid | avoid-page | avoid-column | initial | inherit;

There is also avoid-region for CSS Regions. Start with auto and avoid.

Property Values

ValueDescriptionTry it
autoDefault. Allows a break inside the box when neededTry it
avoidAvoids any break inside the box (page, column, or region)Try it
avoid-columnAvoids a column break inside the boxTry it
avoid-pageAvoids a page break inside the box (print / paged media)Try it
initialResets to autoTry it
inheritTakes the parent’s break-insideTry it

How to Use break-inside

Put avoid on the box you want to keep whole in print or multi-column layout.

  1. Find the block that must stay together (figure, card, table, or list item).
  2. For columns, wrap content in a multi-column container (column-count or columns).
  3. Set break-inside: avoid (or avoid-column / avoid-page) on that block.
  4. Test in Print Preview for page media, and in a multi-column layout for columns.
PieceRequired?Role
Block-level elementYesThe property applies to block boxes
Paged or multi-column contextYes (to see it)Without fragmentation, there is nothing to avoid
break-inside keywordYesavoid, avoid-column, avoid-page, or auto
Reasonable box sizeRecommendedA box taller than the page or column may still split

Live Preview

Two cards in a multi-column article. Toggle break-inside. With avoid, each card tries to stay in one column.

Resize the window or compare values. avoid keeps each card from splitting across columns when possible.

Columns
Card A

Title and body stay together when avoid is set.

Filler text that flows through the columns around the cards so you can see a split with auto.

Card B

Another block that should not tear mid-column.

More filler text so columns have enough content to wrap.

break-inside: avoid on each card

CSS Examples

Each snippet focuses on break-inside. Use Try It Yourself for a live editor.

Example 1 — Keep a Figure Together

Stop a figure from splitting across columns.

CSS
<style>
  article {
    column-count: 3;
  }

  figure {
    break-inside: avoid;
  }
</style>

<article>
  <p>Text before.</p>
  <figure>
    <p>Image</p>
    <figcaption>Caption stays with the image.</figcaption>
  </figure>
  <p>Text after.</p>
</article>
Try It Yourself

How It Works

  1. Make columns. column-count: 3 creates the fragmentation context.
  2. Protect the figure. break-inside: avoid asks the browser not to split that box.
  3. Image + caption stay paired. Both move to the next column together when needed.
  4. Soft request. Forced breaks nearby can still win; oversized boxes may still split.

Example 2 — Avoid Column Breaks Only

Block column splits inside a card, without changing page-break rules.

CSS
<style>
  article {
    column-count: 3;
  }

  .card {
    break-inside: avoid-column;
  }
</style>

<article>
  <div class="card">
    <h2>Card</h2>
    <p>Keep this block in one column.</p>
  </div>
</article>
Try It Yourself

How It Works

  1. Target columns. avoid-column only cares about column breaks.
  2. Card stays whole. The heading and paragraph try to remain in the same column.
  3. Pages stay flexible. Page breaks can still happen inside the box unless you also use avoid or avoid-page.
  4. Pick the right scope. Use avoid when you want both page and column protection.

Example 3 — Avoid Page Breaks

Keep a section from splitting across printed pages.

CSS
<style>
  .section {
    break-inside: avoid-page;
  }
</style>

<div class="section">
  <h2>Heading</h2>
  <p>Body that should stay with the heading when printed.</p>
</div>
Try It Yourself

How It Works

  1. Mark the section. The wrapper gets break-inside: avoid-page.
  2. Print-focused. The browser avoids a page break inside that box when possible.
  3. Check Print Preview. Screen layout will not show the page split.
  4. Size matters. If the section is taller than one page, a break may still occur.

Edge Cases & Pitfalls

If a block still splits, one of these is usually why.

soft

avoid is not a hard lock

It is a request. Forced breaks from neighbors, or a box taller than the fragment, can still cause a split.

context

Needs fragmentation

Without print media or a multi-column container, there is no inside break to avoid.

legacy

page-break-inside is the old alias

Browsers map page-break-inside auto and avoid to break-inside. Prefer the modern name.

priority

Forced breaks beat avoid

At a boundary, forced break-before / break-after values win over break-inside: avoid.

block

Needs a generated block box

The property applies to block-level elements. If no box is generated, break-inside is ignored.

Browser Support

break-inside is a browser fragmentation property for pages and columns. Node.js, Deno, and Bun do not apply it.

✓ Baseline · Values vary

break-inside

Property: Chrome 50+, Firefox 65+, Safari 10+, Edge 12+, IE 10+. avoid is widely available. Region values remain limited.

95% Common avoid values
Google Chrome 50+
Full
Mozilla Firefox 65+
Full
Apple Safari 10+
Full
Microsoft Edge 12+
Full
Opera 37+
Full
Samsung Internet Supported
Full
Internet Explorer 10+
Partial
break-inside Widely supported

Bottom line: Safe for keeping blocks together in modern browsers. Prefer break-inside: avoid over legacy page-break-inside: avoid.

Key Takeaways

  • Role: allow or avoid a break inside a box in paged or multi-column layout.
  • Common values: auto, avoid, avoid-column, avoid-page.
  • Initial value: auto. Not inherited. No forced-break keywords.
  • Modern name: use break-inside; keep page-break-inside only for old code.

One line: break-inside keeps a box whole — or lets the browser split it — across pages and columns.

Frequently Asked Questions

It controls whether a page, column, or region break is allowed inside an element's box. Use avoid to keep cards, figures, and blocks from splitting.
The initial value is auto. The browser may break inside the box when layout needs it.
avoid tries to prevent any break inside the box. avoid-column only avoids column breaks. avoid-page only avoids page breaks.
page-break-inside is the older print-only property. Modern CSS prefers break-inside. Browsers treat auto and avoid as aliases.
avoid is a soft request. A forced break nearby, or a box taller than the page or column, can still force a split.
The property is Baseline for common values: Chrome 50+, Firefox 65+, Safari 10+, Edge 12+. It is a browser layout property, not a Node.js feature.

Next: caption-side

Learn how to place a table caption above or below the table.

caption-side tutorial →

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.

8 people found this page helpful