break-inside

The break-inside CSS property sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored.

/* Keyword values */
break-inside: auto;
break-inside: avoid;
break-inside: avoid-page;
break-inside: avoid-column;
break-inside: avoid-region;

/* Global values */
break-inside: inherit;
break-inside: initial;
break-inside: unset;

Each possible break point (in other words, each element boundary) is affected by three properties: the break-after value of the previous element, the break-before value of the next element, and the break-inside value of the containing element.

To determine if a break must be done, the following rules are applied:

  1. If any of the three concerned values is a forced break value (always, left, right, page, column, or region), it has precedence. If more than one of them are such a break, the value of the element that appears the latest in the flow is used. Thus, the break-before value has precedence over the break-after value, which in turn has precedence over the break-inside value.
  2. If any of the three concerned values is an avoid break value (avoid, avoid-page, avoid-region, or avoid-column), no such break will be applied at that point.

Once forced breaks have been applied, soft breaks may be added if needed, but not on element boundaries that resolve in a corresponding avoid value.

Syntax

The break-inside property is specified as one of the keyword values from the list below.

Values

auto
Allows, but does not force, any break (page, column, or region) to be be inserted within the principal box.
avoid
Avoids any break (page, column, or region) from being inserted within the principal box.
avoid-page
Avoids any page break within the principal box.
avoid-column
Avoids any column break within the principal box.
avoid-region
Avoids any region break within the principal box.

Page break aliases

For compatibility reasons, the legacy page-break-inside property should be treated by browsers as an alias of break-inside. This ensures that sites using page-break-inside continue to work as designed. A subset of values should be aliased as follows:

page-break-inside break-inside
auto auto
avoid avoid

Formal definition

Initial valueauto
Applies toblock-level elements
Inheritedno
Computed valueas specified
Animation typediscrete

Formal syntax

auto | avoid | avoid-page | avoid-column | avoid-region

Examples

Avoiding breaking inside a figure

In the following example we have a container that contains an <h1> spanning all columns (achieved using column-span: all) and a series of paragraphs laid out in multiple columns using column-width: 200px. We also have a <figure> containing an image and a caption.

By default, it is possible for you to get a break between the image and its caption, which is not what we want. To avoid this, we have set break-inside: avoid on the <figure>, which causes them to always stay together.

HTML

<article>
  <h1>Main heading</h1>

  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae fringilla mauris. Quisque commodo eget nisi sed pretium. Mauris luctus nec lacus in ultricies. Mauris vitae hendrerit arcu, ac scelerisque lacus. Aliquam lobortis in lacus sit amet posuere. Fusce iaculis urna id neque dapibus, eu lacinia lectus dictum.</p>

  <figure>
    <img src="https://udn.realityripple.com/samples/fe/4508d88f78.png">
    <figcaption>The Firefox logo — fox wrapped around the world</figcaption>
  </figure>

  <p>Praesent condimentum dui dui, sit amet rutrum diam tincidunt eu. Cras suscipit porta leo sit amet rutrum. Sed vehicula ornare tincidunt. Curabitur a ipsum ac diam mattis volutpat ac ut elit. Nullam luctus justo non vestibulum gravida. Morbi metus libero, pharetra non porttitor a, molestie nec nisi.</p>

  <p>In finibus viverra enim vel suscipit. Quisque consequat velit eu orci malesuada, ut interdum tortor molestie. Proin sed pellentesque augue. Nam risus justo, faucibus non porta a, congue vel massa. Cras luctus lacus nisl, sed tincidunt velit pharetra ac. Duis suscipit faucibus dui sed ultricies.</p>
</article>

CSS

html {
  font-family: helvetica, arial, sans-serif;
}

body {
  width: 80%;
  margin: 0 auto;
}

h1 {
  font-size: 3rem;
  letter-spacing: 2px;
  column-span: all;
}

h1 + p {
  margin-top: 0;
}

p {
  line-height: 1.5;
  break-after: column;
}

figure {
  break-inside: avoid;
}

img {
  max-width: 70%;
  display: block;
  margin: 0 auto;
}

figcaption {
  font-style: italic;
  font-size: 0.8rem;
  width: 70%;
}

article {
  column-width: 200px;
  gap: 20px;
}

Result

Specifications

Specification Status Comment
CSS Fragmentation Module Level 3
The definition of 'break-inside' in that specification.
Candidate Recommendation No change.
CSS Regions Module Level 1
The definition of 'break-inside' in that specification.
Working Draft Extends the property to handle region breaks.
CSS Multi-column Layout Module
The definition of 'break-inside' in that specification.
Working Draft Initial definition.

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Supported in Multi-column LayoutChrome Full support 50Edge Full support 12Firefox Full support 65IE Full support 10Opera Full support 37
Full support 37
No support 11.1 — 12.1
Safari Full support 10WebView Android Full support 50Chrome Android Full support 50Firefox Android Full support 65Opera Android Full support 37
Full support 37
No support 11.1 — 12.1
Safari iOS Full support 10Samsung Internet Android Full support 5.0
multicol_context: column and avoid-columnChrome Full support 50Edge Full support 12Firefox No support NoIE Full support 10Opera Full support 37Safari Full support 10WebView Android Full support 50Chrome Android Full support 50Firefox Android No support NoOpera Android Full support 37Safari iOS Full support 10Samsung Internet Android Full support 5.0
Supported in Paged MediaChrome Full support 50Edge Full support 12Firefox Full support 65IE Full support 10Opera Full support 37
Full support 37
No support 11.1 — 12.1
Safari Full support 10WebView Android Full support 50Chrome Android Full support 50Firefox Android Full support 65Opera Android Full support 37
Full support 37
No support 11.1 — 12.1
Safari iOS Full support 10Samsung Internet Android Full support 5.0
paged_context: page and avoid-pageChrome Full support 51Edge Full support 12Firefox No support NoIE No support NoOpera Full support 38
Full support 38
No support 11.1 — 12.1
Safari No support NoWebView Android Full support 51Chrome Android Full support 51Firefox Android No support NoOpera Android Full support 41
Full support 41
No support 11.1 — 12.1
Safari iOS No support NoSamsung Internet Android Full support 5.0
Supported in CSS Regions
Experimental
Chrome No support NoEdge No support NoFirefox No support NoIE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android No support NoSafari iOS No support NoSamsung Internet Android No support No

Legend

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.

Notes on compatibility

Prior to Firefox 65, the older property of page-break-inside will work in Firefox to prevent breaks in columns, as well as pages. Add both properties for backwards compatibility.

For older WebKit-based browsers, the prefixed property -webkit-column-break-inside can be used to control column breaks.