CSS Portal

CSS font-synthesis-weight 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-synthesis-weight property controls whether the user agent is permitted to create a bolder-looking font form when the specific weight requested by CSS is not available from the font face in use. When a page asks for a heavier weight (for example via font-weight) but the chosen font family lacks an appropriate bold face, this property governs whether the renderer may algorithmically embolden the available glyph outlines to approximate the requested appearance. It is a rendering-level toggle that does not change the specified weight value, only whether the UA can fabricate a heavier style to satisfy the intent.

Synthesis is typically implemented by programmatically thickening strokes or offsetting outlines to produce an apparent increase in weight. Because this is an approximation rather than a true typographic design, synthesized bold can alter metrics, hinting behavior, and visual balance — affecting line breaks, vertical rhythm, and the perceived white space around glyphs. In contrast, variable fonts or families that include multiple masters usually avoid the need for synthesis by offering legitimately designed weights through their axes; authors should prefer supplying real weight variants in the font-family when consistent rendering is important.

This property also interacts with broader font synthesis controls: it is one part of the decision the UA makes about whether to synthesize style differences at all. For example, a related shorthand controls synthesis behavior across weight and style axes, and the overall capability to synthesize can be influenced by font substitution rules and by the presence of matching faces in the loaded font set. Because synthesis produces an artificial result, authors who need precise typographic outcomes — branding, iconography, or fine-grained UI typography — should not rely on synthesis as a substitute for explicitly providing the necessary font faces.

In practice, use this property as a safety net rather than a primary design tool: allowing synthesis can improve robustness when third-party fonts are missing weights, helping maintain emphasis and hierarchy, while disabling it can preserve designer intent where exact weight rendering matters. Test important text at the platforms and rendering engines your audience uses, since synthesis algorithms and the visual results vary between implementations. If consistency and legibility are critical, include proper weight variants (or variable fonts) in your font resources rather than depending on algorithmic synthesis.

Definition

Initial value
auto
Applies to
all elements. It also applies to ::first-letter and ::first-line.
Inherited
yes
Computed value
as specified
Animatable
yes
JavaScript syntax
object.style.fontSynthesisWeight

Syntax

font-synthesis-weight: auto | none

Values

  • autoThe browser may synthesize the missing font style if needed.
  • noneThe browser must not synthesize the missing font style.

Example

<div class='demo'>
<h2>font-synthesis-weight demo</h2>
<div class='card'>
<div class='label'>Synthesis allowed (default)</div>
<p class='text synth-allowed'>This sentence uses font-weight: 700; the browser may synthesize a bold face because only the 400 weight is available from the imported font.</p>
</div>
<div class='card'>
<div class='label'>Synthesis disabled</div>
<p class='text synth-disabled'>This sentence uses font-weight: 700; font-synthesis-weight: none prevents synthetic bolding, so the regular 400 weight is used instead.</p>
</div>
</div>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400&display=swap');

:root {
  --bg: #f6f7fb;
  --card-bg: #ffffff;
  --muted: #555;
}

body {
  font-family: 'Roboto', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  background: var(--bg);
  color: #111;
  padding: 32px;
}

.demo {
  max-width: 720px;
  margin: 0 auto;
}

h2 {
  margin: 0 0 18px 0;
  font-size: 20px;
}

.card {
  background: var(--card-bg);
  border: 1px solid #e6e9ef;
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 12px;
  box-shadow: 0 1px 0 rgba(0,0,0,0.02);
}

.label {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 6px;
}

.text {
  margin: 0;
  font-size: 18px;
  line-height: 1.35;
}

/* Default: browser may synthesize bold because only 400 is available */
.text.synth-allowed {
  font-weight: 700;
}

/* Disable weight synthesis: the browser will not generate a synthetic bold */
.text.synth-disabled {
  font-weight: 700;
  font-synthesis-weight: none;
}

Browser Support

The following information will show you the current browser support for the CSS font-synthesis-weight 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!