CSS break-before Property

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

Definition and Usage

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

It applies to block-level elements and is not inherited. The initial value is auto. Breaks are decided together with break-after on the previous element and break-inside on the container. Forced values win over avoid values, and a later forced break-before wins over an earlier forced break-after.

Standard-track.

Not experimental. Prefer break-before over the older page-break-before alias. Support for some values (especially column and region) still varies by browser.

CSS Syntax

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

Other keywords exist (always, left, right, region, and more). Start with auto, page, column, and avoid.

Property Values

ValueDescriptionTry it
autoDefault. Allows a break before the box, but does not force oneTry it
pageForces a page break before the box (print / paged media)Try it
columnForces a column break before the box in a multi-column layoutTry it
avoidAvoids any break right before the boxTry it
initialResets to autoTry it
inheritTakes the parent’s break-beforeTry it

How to Use break-before

Pick the fragmentation context first (print page or multi-column), then force or avoid a break so the target block starts cleanly.

  1. Choose the element that should start a new page or column (often a heading).
  2. For print, use break-before: page and check Print Preview.
  3. For columns, put the content in a multi-column container (column-count or columns), then use break-before: column.
  4. Use avoid when this box should not start right after a break if the browser can keep flowing.
PieceRequired?Role
Block-level elementYesThe property applies to block boxes
Paged or multi-column contextYes (to see it)Without fragmentation, forced breaks have nowhere to go
break-before keywordYespage, column, avoid, and others
Print PreviewFor pagePage breaks are not visible in normal screen layout

Live Preview

A three-column article. Toggle break-before on each heading. With column, each heading starts a new column in Chromium browsers.

column works best in Chrome and Edge. Firefox and Safari may keep flowing without a forced column break.

Columns

One

Short note under the first heading.

Two

Short note under the second heading.

Three

Short note under the third heading.

break-before: column on each heading

CSS Examples

Each snippet focuses on break-before. Use Print Preview for page breaks. Use Try It Yourself for a live editor.

Example 1 — Force a Page Break

Start this heading on a new printed page.

CSS
<style>
  .chapter {
    break-before: page;
  }
</style>

<h1>Section A</h1>
<p>Content for A.</p>
<h1 class="chapter">Section B</h1>
Try It Yourself

How It Works

  1. Mark the start. The heading with break-before: page is the first box on the new printed page.
  2. Force a page break. Content before it stays on the previous page.
  3. Check Print Preview. Normal screen layout usually ignores the visual page split.
  4. Prefer modern syntax. Use break-before: page instead of the older page-break-before: always.

Example 2 — Force a Column Break

In a multi-column article, put each heading at the top of a column.

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

  h2 {
    break-before: column;
  }
</style>

<article>
  <h2>One</h2>
  <p>Text</p>
  <h2>Two</h2>
  <p>Text</p>
  <h2>Three</h2>
  <p>Text</p>
</article>
Try It Yourself

How It Works

  1. Make columns. column-count: 3 creates the fragmentation context.
  2. Break before each heading. break-before: column starts that heading in a new column.
  3. Neater tops. Each heading can sit at the start of a column instead of mid-flow.
  4. Check the browser. Column breaks are reliable in Chrome and Edge; Firefox and Safari may not force them yet.

Example 3 — Avoid a Break

Ask the browser not to split right before this box when it can avoid it.

CSS
<style>
  .keep {
    break-before: avoid;
  }
</style>

<p>Intro text.</p>
<h2 class="keep">Heading</h2>
Try It Yourself

How It Works

  1. Mark the box. The heading gets break-before: avoid.
  2. Soft request. The browser avoids placing a break right before that heading when possible.
  3. Forced breaks still win. A forced page or column nearby can override avoid rules.
  4. Pair with inside. For keeping a whole block together, also look at break-inside: avoid.

Edge Cases & Pitfalls

If nothing seems to break, one of these is usually why.

print

Page breaks need print media

break-before: page shows in Print Preview or printed output, not as a visible gap in normal screen layout.

column

column support is uneven

break-before: column works in current Chrome and Edge. Firefox and Safari still lack solid column-break support for this property.

legacy

page-break-before is the old alias

Browsers map many page-break-before values to break-before. Note: legacy always aliases to page, not the Level 4 always keyword.

priority

Three properties share one break point

A boundary uses previous break-after, next break-before, and parent break-inside. Forced values beat avoid values; the later forced value wins ties.

block

Needs a generated block box

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

Browser Support

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

✓ Baseline · Values vary

break-before

Property: Chrome 50+, Firefox 65+, Safari 10+, Edge 12+, IE 10+. page is widely available. column needs Chrome/Edge 102+.

95% Common page values
Google Chrome 50+ · column 102+
Full / partial
Mozilla Firefox 65+ · column limited
Partial
Apple Safari 10+ · column limited
Partial
Microsoft Edge 12+ · column 102+
Full / partial
Opera 37+ · column in Chromium 102+
Full / partial
Samsung Internet Supported · column later
Partial
Internet Explorer 10+
Partial
break-before Widely supported

Bottom line: Safe for print page breaks in modern browsers. Treat column as Chromium-first until Firefox and Safari catch up. Prefer break-before over legacy page-break-before.

Key Takeaways

  • Role: control a break before a box in paged or multi-column layout.
  • Common values: auto, page, column, avoid.
  • Initial value: auto. Not inherited. Block-level elements only.
  • Modern name: use break-before; keep page-break-before only for old code.

One line: break-before decides what happens right before this box — stay with previous content, start a new page, or start a new column.

Frequently Asked Questions

It controls whether a page, column, or region break happens before an element's box. Use it so a heading or section starts on a new printed page or column.
The initial value is auto. The browser may break before the element when needed, but nothing is forced.
break-before places the break before the element, so that element starts the new page or column. break-after places the break after the element, so the next content starts fresh.
page-break-before is the older print-only property. Modern CSS prefers break-before. Browsers treat many page-break-before values as aliases of break-before.
page breaks show when printing or in print preview. column breaks need a multi-column container, and column support is strongest in Chromium-based browsers.
The property is Baseline for common page values: Chrome 50+, Firefox 65+, Safari 10+, Edge 12+. The column value is newer and not supported in Firefox or Safari yet. It is a browser layout property, not a Node.js feature.

Next: break-inside

Learn how to allow or avoid breaks inside an element.

break-inside 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