CSS font-stretch Property

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

Definition and Usage

The font-stretch property selects a normal, condensed, or expanded width face from a font family. It changes how wide letters are, not their font-size.

The font must offer width variants (a variable font with a width axis, or separate Condensed / Expanded faces). Otherwise the property has little or no visible effect. Demos on this page use the variable font Inconsolata.

Baseline · Widely available.

Not deprecated and not experimental. Spec renamed this to font-width; font-stretch remains a supported legacy alias with the same values.

CSS Syntax

syntax.css
font-stretch: normal | <percentage> | condensed | expanded | … | initial | inherit;

The initial value is normal (100%). Percentage values are typically used between 50% and 200%.

Property Values

ValueDescriptionTry it
condensedNarrower face (maps to 75%)Try it
expandedWider face (maps to 125%)Try it
<percentage>Exact width, e.g. 75% or 150%Try it
ultra-condensedMost condensed keyword (50%)Try it
normalDefault width (100%)Try it
inheritUses the parent’s font-stretchTry it

Other keywords: extra-condensed, semi-condensed, semi-expanded, extra-expanded, ultra-expanded.

How to Use font-stretch

Load a multi-width font, then pick a keyword or percentage.

  1. Choose a font family that supports width variants (variable font or Condensed/Expanded faces).
  2. Set font-family to that face.
  3. Apply font-stretch with a keyword or percentage.
  4. If nothing changes, the font likely has only one width — switch fonts or check the wdth axis.
PieceRequired?Role
Multi-width fontYes (to see a change)Variable width axis or Condensed/Expanded faces
font-familyYesSelects that font for the text
Keyword or %YesChooses how condensed or expanded
font-sizeOptionalSize stays independent of stretch

Live Preview

Sample text uses Inconsolata (variable width). Change only font-stretch.

Width changes; font-size stays the same.

Sample

The quick brown fox jumps.

font-stretch: normal

CSS Examples

Each snippet focuses on font-stretch with a variable-width font. Use Try It Yourself for a live editor.

Example 1 — Condensed

Pick a narrower face with the condensed keyword.

CSS
<style>
  p {
    font-family: "Inconsolata", monospace;
    font-stretch: condensed;
  }
</style>

<p>Condensed text.</p>
Try It Yourself

How It Works

  1. Use a width-capable font. Inconsolata exposes a continuous width axis.
  2. Set the family. font-family must point at that variable font.
  3. Request condensed. font-stretch: condensed maps to 75% width.
  4. Size stays put. Letters get narrower; font-size does not change.

Example 2 — Expanded

Widen the face with the expanded keyword.

CSS
<style>
  p {
    font-family: "Inconsolata", monospace;
    font-stretch: expanded;
  }
</style>

<p>Expanded text.</p>
Try It Yourself

How It Works

  1. Same font family. Keep Inconsolata so width variants exist.
  2. Choose expanded. font-stretch: expanded maps to 125%.
  3. Compare with condensed. Side-by-side, expanded is clearly wider.
  4. Not a scale hack. Real font outlines are used — better than transform: scaleX().

Example 3 — Percentage

Set an exact width with a percentage value.

CSS
<style>
  p {
    font-family: "Inconsolata", monospace;
    font-stretch: 150%;
  }
</style>

<p>Text at 150% width.</p>
Try It Yourself

How It Works

  1. Skip the keyword. 150% is the same numeric width as extra-expanded.
  2. Stay in range. Typical useful values sit between 50% and 200%.
  3. Closest face wins. If a font lacks that exact width, the browser picks the nearest supported face.
  4. Map keywords mentally. normal = 100%, condensed = 75%, expanded = 125%.

Edge Cases & Pitfalls

If width never changes, check these first.

font

Single-width fonts ignore stretch

Many common faces (basic Arial, Times) have only one width. Use a variable font or a family that ships Condensed/Expanded styles.

alias

Spec name is font-width

font-stretch is kept as a legacy alias for font-width. Both select the same width faces today.

scale

Do not fake it with scaleX()

transform: scaleX() squashes glyphs and can look distorted. Prefer real width faces via font-stretch.

range

Fonts may clamp the range

A family might only support 75%–125%. Values outside that range still resolve to the closest available face.

shorthand

font shorthand does not set stretch

The font shorthand does not include font-stretch. Set stretch on its own after the shorthand if needed.

Browser Support

font-stretch is a browser CSS property for font width selection. Node.js, Deno, and Bun do not apply it.

✓ Baseline · Widely available

font-stretch

Supported across modern Chrome, Edge, Firefox, Safari, and Opera. Visible results still depend on the font offering width variants.

97% Modern browser support
Google Chrome 48+
Full support
Mozilla Firefox 9+
Full support
Apple Safari 11+
Full support
Microsoft Edge 12+
Full support
Opera 35+
Full support
Samsung Internet 5+
Full support
Internet Explorer 9+ (limited)
Partial support
font-stretch Widely supported

Bottom line: Safe for modern browsers. Always pair it with a multi-width font or demos will look unchanged. It is not a runtime API.

Key Takeaways

  • Role: select condensed, normal, or expanded font width.
  • Needs widths: without Condensed/Expanded or a wdth axis, nothing changes.
  • Keywords = %: condensed is 75%, normal is 100%, expanded is 125%.
  • Alias: keep using font-stretch; the modern name is font-width.

One line: multi-width font + font-stretch: condensed; = narrower letterforms at the same size.

Frequently Asked Questions

It selects a normal, condensed, or expanded width face from a font family. It changes horizontal width, not font-size.
The initial value is normal, which maps to 100% width.
The current font must offer multiple widths (a variable font with a width axis, or separate Condensed/Expanded faces). A single-width family shows little or no change.
The CSS Fonts specification renamed the property to font-width. font-stretch remains a supported legacy alias with the same values.
Yes. Use a percentage from 50% to 200%. Keywords map to those percentages (for example condensed is 75%, expanded is 125%).
It is Baseline Widely available. Modern Chrome, Edge, Firefox, Safari, and Opera support it. Internet Explorer has partial or limited support for some values. It is a browser CSS property, not a Node.js feature.

Next: font-style

Learn normal, italic, and oblique faces for emphasis.

font-style 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