This page is not complete.

The font-weight CSS property sets the weight (or boldness) of the font i.e. to set how thick or thin characters in the text should be displayed. The weights available depend on the font-family you are using. 

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone and send us a pull request.


/* Keyword values */
font-weight: normal;
font-weight: bold;

/* Keyword values relative to the parent */
font-weight: lighter;
font-weight: bolder;

/* Numeric keyword values */
font-weight: 1
font-weight: 100;
font-weight: 100.6;
font-weight: 123;
font-weight: 200;
font-weight: 300;
font-weight: 321;
font-weight: 400;
font-weight: 500;
font-weight: 600;
font-weight: 700;
font-weight: 800;
font-weight: 900;
font-weight: 1000;

/* Global values */
font-weight: inherit;
font-weight: initial;
font-weight: unset;

The font-weight property is specified using any one of the values listed below.


Normal font weight. Same as 400.
Bold font weight. Same as 700.
One font weight lighter than the parent element (among the available weights of the font).
One font weight heavier than the parent element (among the available weights of the font).
A <number> value between 1 and 1000, inclusive. Higher numbers represent weights that are bolder than (or as bold as) lower numbers. Certain commonly used values correspond to common weight names, as described in the Common weight name mapping section below.

In earlier versions of the font-weight specification, the property accepts only keyword values and the numeric values 100, 200, 300, 400, 500, 600, 700, 800, and 900; non-variable fonts can only really make use of these set values, although fine-grained values (e.g. 451) will be translated to one of these values for non-variable fonts using the Fallback weights system.

CSS Fonts Level 4 extends the syntax to accept any number between 1 and 1000 and introduces Variable fonts, which can make use of this much finer-grained range of font weights.

Fallback weights

If the exact weight given is unavailable, then the following rule is used to determine the weight actually rendered:

  • If the target weight given is between 400 and 500 inclusive:
    • Look for available weights between the target and 500, in ascending order.
    • If no match is found, look for available weights less than the target, in descending order.
    • If no match is found, look for available weights greater than 500, in ascending order.
  • If a weight less than 400 is given, look for available weights less than the target, in descending order. If no match is found, look for available weights greater than the target, in ascending order.
  • If a weight greater than 500 is given, look for available weights greater than the target, in ascending order. If no match is found, look for available weights less than the target, in descending order.

Meaning of relative weights

When lighter or bolder is specified, the following chart shows how the absolute font weight of the element is determined:

Inherited value bolder lighter
100 400 100
200 400 100
300 400 100
400 700 100
500 700 100
600 900 400
700 900 400
800 900 700
900 900 700

Common weight name mapping

The numerical values 100 to 900 roughly correspond to the following common weight names:

Value Common weight name
100 Thin (Hairline)
200 Extra Light (Ultra Light)
300 Light
400 Normal
500 Medium
600 Semi Bold (Demi Bold)
700 Bold
800 Extra Bold (Ultra Bold)
900 Black (Heavy)

Variable fonts

Most fonts have a particular weight which corresponds to one of the numbers in Common weight name mapping. However some fonts, called variable fonts, can support a range of weights with more or less fine granularity, and this can give the designer a much closer degree of control over the chosen weight.

For TrueType or OpenType variable fonts, the "wght" variation is used to implement varying widths.

For the example below to work, you'll need a browser that supports the CSS Fonts Level 4 syntax in which font-weight can be any number between 1 and 1000.


    <input type="range" id="weight" name="weight" min="1" max="1000" />
    <label for="weight">Weight</label>
<div class="container">
    <p class="sample"> would not be wonderful to meet a Megalosaurus, forty feet long or so, waddling like an elephantine lizard up Holborn Hill.</p>


Mutator Sans is created by LettError (
and is used here under the terms of its license:

@font-face {
  src: url('');
  font-style: normal;

label {
  font: 1rem monospace;
  white-space: nowrap;

.container {
  max-height: 150px;
  overflow-y: auto;

.sample {
  text-transform: uppercase;
  font: 1.5rem 'MutatorSans', sans-serif;
html, body {
  max-height: 100vh;
  max-width: 100vw;
  overflow: hidden;

body {
  display: flex;
  flex-direction: column;

header {
  margin-bottom: 1.5rem;

.container {
  flex-grow: 1;

.container > p {
  margin-top: 0;
  margin-bottom: 0;


let weightLabel = document.querySelector('label[for="weight"]');
let weightInput = document.querySelector('#weight');
let sampleText = document.querySelector('.sample');

function update() {
  weightLabel.textContent = `font-weight: ${weightInput.value};`; = weightInput.value;

weightInput.addEventListener('input', update);


Formal syntax

<font-weight-absolute> | bolder | lighter

<font-weight-absolute> = normal | bold | <number>



  Alice was beginning to get very tired of sitting by her sister on the
  bank, and of having nothing to do: once or twice she had peeped into the
  book her sister was reading, but it had no pictures or conversations in
  it, "and what is the use of a book," thought Alice "without pictures or

<div>I'm heavy<br/>
  <span>I'm lighter</span>


/* Set paragraph text to be bold. */
p {
  font-weight: bold;

/* Set div text to two steps heavier than
   normal but less than a standard bold. */
div {
 font-weight: 600;

/* Set span text to be one step lighter
   than its parent. */
span {
  font-weight: lighter;


Accessibility concerns

People experiencing low vision conditions may have difficulty reading text set with a font-weight value of 100 (Thin/Hairline) or 200 (Extra Light), especially if the font has a low contrast color ratio.


Specification Status Comment
CSS Fonts Module Level 4
The definition of 'font-weight' in that specification.
Working Draft Defines font-weight to accept any numbers between 1 and 1000.
CSS Fonts Module Level 3
The definition of 'font-weight' in that specification.
Candidate Recommendation No change.
CSS Transitions
The definition of 'font-weight' in that specification.
Working Draft Defines font-weight as animatable.
CSS Level 2 (Revision 1)
The definition of 'font-weight' in that specification.
Recommendation No change.
CSS Level 1
The definition of 'font-weight' in that specification.
Recommendation Initial definition.
Initial valuenormal
Applies toall elements. It also applies to ::first-letter and ::first-line.
Computed valuethe keyword or the numerical value as specified, with bolder and lighter transformed to the real value
Animation typea font weight
Canonical orderthe unique non-ambiguous order defined by the formal grammar

Browser compatibility

The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out and send us a pull request.

Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
font-weightChrome Full support 2Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3.5Safari Full support 1WebView Android Full support 1Chrome Android Full support YesFirefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support Yes
<number> syntaxChrome Full support 62Edge Full support 17Firefox Full support 61IE No support NoOpera Full support 49Safari Full support 11WebView Android Full support 62Chrome Android Full support 62Firefox Android Full support 61Opera Android ? Safari iOS Full support 11Samsung Internet Android ?


Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown

Document Tags and Contributors

Contributors to this page: SphinxKnight, pereiraryan
Last updated by: SphinxKnight,