CSS Portal

CSS font-stretch Property

If this site has been useful, we’d love your support! Consider buying us a coffee to keep things going strong!

Description

The font-stretch property controls which width variant of a typeface the user agent should choose when rendering text. Rather than changing the weight, style, or size of glyphs, it influences selection from the available faces in a font family so that the chosen face is narrower or wider than the default face. When a family provides multiple width variants (or when a variable font exposes a width axis), font-stretch is used by the font selection algorithm to prefer the best match for the requested text, which in turn affects glyph shapes and horizontal spacing at the font-face level. Because it operates at the font selection stage, this property works together with the family you specify via font-family.

In practice the user agent considers font-stretch alongside other font-selection properties such as font-weight and font-style to pick the most appropriate face from the available sources. For variable fonts that expose a width axis, developers can use font-variation-settings (or the variable-font axis) to achieve continuous width tuning; in those cases font-stretch maps conceptually to the font’s width axis and the browser resolves the requested width by reading or synthesizing that axis from the variable data. If an exact width variant isn’t available, user agents will choose the nearest matching face or fall back to the family’s default, which means using font-stretch may produce different results depending on which font files are loaded.

Because changing the chosen face changes the underlying glyph outlines and metrics, font-stretch can have noticeable effects on layout and legibility. Wider or narrower faces alter character advance widths, word widths, and line breaks; they can also shift text alignment and wrapping behavior, potentially affecting vertical rhythm and the perceived density of text blocks. Designers should test combinations of width adjustments with font sizing and spacing - the visual effect of a width change may differ substantially at small vs. large sizes - so consider this when you plan responsive typography with font-size variations.

For practical use, rely on real font files to supply the intended width variants when consistency matters (webfonts or font collections that include condensed/expanded masters or a width axis). Be aware that in some environments the renderer might approximate a missing width by scaling a face horizontally, which can alter stroke contrast and degrade typographic quality, so always test across your target platforms. Finally, combining thoughtful use of width variants with complementary properties (weight, style, and variable-font settings) lets you target nuanced typographic effects - while keeping an eye on readability and layout stability across your content.

Definition

Initial value
normal
Applies to
All elements
Inherited
Yes
Computed value
As specified
Animatable
Yes
JavaScript syntax
object.style.fontStretch

Interactive Demo

The rusty swing set creaked a lonely lullaby in the twilight, shadows lengthening like grasping fingers across the dew-kissed grass. A lone dandelion seed, adrift on the breeze, whispered secrets of faraway fields, of dandelion suns and galaxies spun from fluff.

Syntax

font-stretch: normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded 

Values

  • normalSpecifies a normal font face.
  • ultra-condensedSpecifies a font face more condensed than normal, with ultra-condensed as the most condensed.
  • extra-condensedSpecifies a font face more condensed than normal, with ultra-condensed as the most condensed.
  • condensedSpecifies a font face more condensed than normal, with ultra-condensed as the most condensed.
  • semi-condensedSpecifies a font face more condensed than normal, with ultra-condensed as the most condensed.
  • semi-expandedSpecifies a font face more expanded than normal, with ultra-expanded as the most expanded.
  • expandedSpecifies a font face more expanded than normal, with ultra-expanded as the most expanded.
  • extra-expandedSpecifies a font face more expanded than normal, with ultra-expanded as the most expanded.
  • ultra-expandedSpecifies a font face more expanded than normal, with ultra-expanded as the most expanded.
  • inherit

Example

<div class="container">
<p class="ultra-condensed">Ultra Condensed (50%)</p>
<p class="extra-condensed">Extra Condensed (62.5%)</p>
<p class="condensed">Condensed (75%)</p>
<p class="semi-condensed">Semi Condensed (87.5%)</p>
<p class="normal">Normal (100%)</p>
<p class="semi-expanded">Semi Expanded (112.5%)</p>
<p class="expanded">Expanded (125%)</p>
<p class="extra-expanded">Extra Expanded (150%)</p>
<p class="ultra-expanded">Ultra Expanded (200%)</p>
</div>
/* We use a generic sans-serif, but font-stretch works best 
   with fonts like 'Roboto Flex' or 'Helvetica Now' */
.container {
  font-family: sans-serif;
  font-size: 1.5rem;
}

.ultra-condensed {
  font-stretch: ultra-condensed; /* or 50% */
}

.condensed {
  font-stretch: condensed; /* or 75% */
}

.normal {
  font-stretch: normal; /* 100% */
}

.expanded {
  font-stretch: expanded; /* or 125% */
}

.ultra-expanded {
  font-stretch: ultra-expanded; /* or 200% */
}

Browser Support

The following information will show you the current browser support for the CSS font-stretch property. Hover over a browser icon to see the version that first introduced support for this CSS property.

This property is supported by all modern browsers.
Desktop
Chrome
Edge
Firefox
Opera
Safari
Tablets & Mobile
Chrome Android
Firefox Android
Opera Android
Safari iOS
Samsung Internet
Android WebView
-

Last updated by CSSPortal on: 1st January 2026

If this site has been useful, we’d love your support! Consider buying us a coffee to keep things going strong!