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.
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.
Compatibility
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 Chrome48+
Full support
Mozilla Firefox9+
Full support
Apple Safari11+
Full support
Microsoft Edge12+
Full support
Opera35+
Full support
Samsung Internet5+
Full support
Internet Explorer9+ (limited)
Partial support
font-stretchWidely 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.
Remember
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.