font-weight
===========

The **`font-weight`** CSS property sets the weight (or boldness) of the font. The weights available depend on the `font-family` that is currently set.

Try it
------

Syntax
------


```css
/\* <font-weight-absolute> keyword values \*/
font-weight: normal;
font-weight: bold;

/\* <font-weight-absolute> numeric values [1,1000] \*/
font-weight: 100;
font-weight: 200;
font-weight: 300;
font-weight: 400; /\* normal \*/
font-weight: 500;
font-weight: 600;
font-weight: 700; /\* bold \*/
font-weight: 800;
font-weight: 900;

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

/\* Global values \*/
font-weight: inherit;
font-weight: initial;
font-weight: revert;
font-weight: revert-layer;
font-weight: unset;
```


The `font-weight` property is specified using either a `<font-weight-absolute>` value or a relative weight value, as listed below.

### Values

`normal`

Normal font weight. Same as `400`.

`bold`

Bold font weight. Same as `700`.

`<number>`

A `<number>` value between 1 and 1000, both values included. Higher numbers represent weights that are bolder than (or as bold as) lower numbers. This allows fine-grain control for variable fonts. For non-variable fonts, if the exact specified weight is unavailable, a fallback weight algorithm is used — numeric values that are divisible by 100 correspond to common weight names, as described in the Common weight name mapping section below.

`lighter`

One relative font weight lighter than the parent element. Note that only four font weights are considered for relative weight calculation; see the Meaning of relative weights section below.

`bolder`

One relative font weight heavier than the parent element. Note that only four font weights are considered for relative weight calculation; see the Meaning of relative weights section below.

### 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 below chart shows how the absolute font weight of the element is determined.

Note that when using relative weights, only four font weights are considered — thin (100), normal (400), bold (700), and heavy (900). If a font family has more weights available, they are ignored for the purposes of relative weight calculation.

| 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 (see the OpenType specification):

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

### Variable fonts

While many fonts have a particular weight corresponding to one of the numbers in Common weight name mapping, most variable fonts support a range of weights providing much finer granularity, giving designers and developers more control over the chosen weight.

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

This demo loads with `font-weight: 500;` set. Change the value of the `font-weight` property to see the weight of the text change.

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.

* MDN Understanding WCAG, Guideline 1.4 explanations
* Understanding Success Criterion 1.4.8 | W3C Understanding WCAG 2.0
Formal definition
-----------------

|  |  |
| --- | --- |
| Initial value | `normal` |
| Applies to | all elements and text. It also applies to `::first-letter` and `::first-line`. |
| Inherited | yes |
| Computed value | the keyword or the numerical value as specified, with `bolder` and `lighter` transformed to the real value |
| Animation type | a font weight |

Formal syntax
-------------
```

font-weight =   
  <font-weight-absolute>  |  
  bolder                  |  
  lighter                   
  
<font-weight-absolute> =   
  normal             |  
  bold               |  
  <number [1,1000]>    
  
```

Examples
--------

### Setting font weights

#### HTML


```html
<p>
  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 conversations?"
</p>

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


#### CSS


```css
/\* 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;
}
```


#### Result

Specifications
--------------

| Specification |
| --- |
| CSS Fonts Module Level 4 # font-weight-prop |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `font-family`
* `font-style`
* Fundamental text and font styling
* CSS fonts module