The font-stretch property selects a condensed, normal, or expanded width from a font so you can fine-tune how wide text appears horizontally.
01
normal
Default width.
02
condensed
Narrower text.
03
expanded
Wider text.
04
Keywords
9 stretch levels.
05
Variable fonts
Width axis.
06
Layout fit
Space control.
Fundamentals
Introduction
The font-stretch property in CSS allows you to select a normal, condensed, or expanded face from a font. It enables finer control over the font appearance by stretching or compressing the text horizontally.
This property is particularly useful when you want to achieve a specific look or ensure text fits within a designated space without changing its font size.
Definition and Usage
Unlike changing font-size, font-stretch adjusts character width. The browser picks the closest available width variant in the font family. Variable fonts can interpolate smoothly between condensed and expanded widths.
💡
Beginner Tip
If nothing changes when you set font-stretch, the font probably only has one width. Try a variable font or a family that includes Condensed and Expanded styles.
Foundation
📝 Syntax
The syntax for the font-stretch property is straightforward. You can specify keyword values to achieve the desired effect:
100% equals normal width. Lower percentages condense; higher percentages expand when the font supports continuous width adjustment.
A11y
♿ Accessibility
Do not over-condense body text — very narrow widths can hurt readability for long paragraphs.
Prefer real font variants over transform: scaleX(), which distorts letterforms and can confuse screen magnifiers.
Keep sufficient contrast and size — font-stretch changes width, not height; still set a readable font-size.
Test with your actual web font to confirm condensed styles remain legible at small sizes.
Avoid relying on stretch alone to fix overflow; consider wrapping, truncation, or layout changes too.
🧠 How font-stretch Works
1
You request a width
Set a keyword like condensed or a percentage like 75%.
Declaration
2
Browser checks the font
It looks for matching condensed, normal, or expanded faces in the font family or variable font axis.
Font matching
3
Closest width is used
If an exact match is unavailable, the browser picks the nearest supported width variant.
Selection
=
↔
Horizontally tuned text
Characters render wider or narrower without changing font-size.
Compatibility
🖥 Browser Compatibility
The font-stretch property is supported in most modern browsers, including recent versions of Chrome, Firefox, Safari, Edge, and Opera. Variable font support has improved how smoothly width values interpolate.
✓ Baseline · Modern browsers
font-stretch in current engines
Keyword values are widely supported; percentage syntax works in current Chromium, Firefox, and Safari releases.
94%Modern browser support
Google Chrome60+ · Desktop & Mobile
Supported
Mozilla Firefox9+ · Desktop & Mobile
Supported
Apple Safari11+ · macOS & iOS
Supported
Microsoft Edge79+ (Chromium)
Supported
Opera47+
Supported
font-stretch property94% supported
Bottom line: Safe for modern projects. Visual results still depend on whether your chosen font includes width variants.
Wrap Up
🎉 Conclusion
The font-stretch property is a powerful tool for web developers aiming to fine-tune the appearance of text on their websites. By adjusting the horizontal stretching of text, you can achieve a specific design aesthetic and ensure optimal text fit within your layout.
Experiment with different values to see how this property can enhance your typography and overall design. Pair it with fonts that offer condensed and expanded styles for the best results.
Use percentages on variable fonts for fine control
❌ Don’t
Expect changes from single-width fonts
Over-condense long reading paragraphs
Use scaleX() when a real width exists
Rely on stretch instead of fixing layout
Forget to check fallback font behavior
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about font-stretch
Use these points when tuning horizontal text width.
5
Core concepts
↔01
Width control
Horizontal scale.
Purpose
normal02
Default normal
No stretch.
Default
903
9 keywords
Condensed to expanded.
Syntax
VF04
Variable fonts
Width axis.
Modern CSS
📈05
Layout fit
Tight spaces.
Use case
❓ Frequently Asked Questions
font-stretch selects a condensed, normal, or expanded width variant from a font family. It changes how wide characters appear horizontally without changing font-size.
The default value is normal, which means no extra condensing or expanding is applied.
The active font must include multiple width variants, such as a variable font or a family with Condensed and Expanded faces. If only one width exists, the browser cannot stretch the font and the value has little or no visible effect.
font-stretch uses real font outlines designed for each width, so letterforms stay balanced. scaleX() mechanically squashes or stretches the rendered text and can distort shapes.
Yes in modern CSS. Percentages like 75% or 125% map to width between condensed and expanded. Keyword values such as condensed and expanded are still the most common beginner-friendly syntax.