Skip to content
Elephant House Logo

Conservative CSS Hyphenation

CSS hyphenation with hyphens: auto can improve text flow, but browsers hyphenate whenever they can—short words get broken, and the text ends up littered with hyphens. Here’s how to make it conservative.

Controlling When Hyphenation Occurs

By Character Count

The hyphenate-limit-chars property controls when hyphenation is allowed:

p {
  hyphens: auto;
  hyphenate-limit-chars: 10 4 4;
}

The three values mean:

  • Only hyphenate words with 10+ characters
  • Leave at least 4 characters before the hyphen
  • Leave at least 4 characters after the hyphen

This means “hyphenation” can break (11 chars), but “breaking” cannot (8 chars).

By Line Position

The hyphenate-limit-zone property defines how close to the margin a word must reach before hyphenation kicks in:

p {
  hyphens: auto;
  hyphenate-limit-zone: 8%;
}

This only hyphenates if a word would extend into the last 8% of the line. Small gaps stay ragged, large ones get fixed.

Browser Support

hyphenate-limit-chars has limited but growing support:

  • Chrome 128+ (August 2024)
  • Firefox 137+ (April 2025)
  • Safari does not support it

Browsers that don’t support the limit properties fall back to hyphens: auto with default behaviour—more hyphenation than you’d prefer.

Progressive Enhancement with @supports

Use @supports to only enable hyphenation when hyphenate-limit-chars is available:

p {
  @supports (hyphenate-limit-chars: auto) {
    hyphens: auto;
    hyphenate-limit-chars: 10 4 4;
  }
}

Safari skips the entire block and gets no hyphenation. Chrome and Firefox get conservative hyphenation.

Conclusion: Combine hyphens: auto with hyphenate-limit-chars for hyphenation that only kicks in when it’s actually needed.

See all thoughts