This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
The font-kerning CSS property sets the use of the kerning information stored in a font.
font-kerning: auto;
font-kerning: normal;
font-kerning: none;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
“We took Tracy to see ‘THE WATERFALL’ in W. Virginia.”
</div>
</section>
section {
font-family: serif;
}
Kerning affects how letters are spaced. In well-kerned fonts, this feature makes character spacing more uniform and pleasant to read by reducing white space between certain character combinations.
In the image below, for instance, the examples on the left do not use kerning, while the ones on the right do:
font-kerning: auto; font-kerning: normal; font-kerning: none; /* Global values */ font-kerning: inherit; font-kerning: initial; font-kerning: revert; font-kerning: revert-layer; font-kerning: unset;
autoThe browser determines whether font kerning should be used or not. For example, some browsers will disable kerning on small fonts, since applying it could harm the readability of text.
normalFont kerning information stored in the font must be applied.
noneFont kerning information stored in the font is disabled.
| Initial value | auto |
|---|---|
| Applies to | all elements and text. It also applies to ::first-letter and ::first-line. |
| Inherited | yes |
| Computed value | as specified |
| Animation type | discrete |
font-kerning =
auto |
normal |
none
<div id="kern"></div> <div id="no-kern"></div> <textarea id="input">AV T. ij</textarea>
div {
font-size: 2rem;
font-family: serif;
}
#no-kern {
font-kerning: none;
}
#kern {
font-kerning: normal;
}
const input = document.getElementById("input");
const kern = document.getElementById("kern");
const noKern = document.getElementById("no-kern");
input.addEventListener("keyup", () => {
kern.textContent = input.value; /* Update content */
noKern.textContent = input.value;
});
kern.textContent = input.value; /* Initialize content */
noKern.textContent = input.value;
| Specification |
|---|
| CSS Fonts Module Level 4> # font-kerning-prop> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
font-kerning |
3329–33 | 79 | 32 | 2016–20 | 96 | 3329–33 | 32 | 2016–20 | 96 | 2.01.0–2.0 | 4.4.34.4–4.4.3 | 96 |
auto |
33 | 79 | 32 | 20 | 9 | 33 | 32 | 20 | 9 | 2.0 | 4.4.3 | 9 |
none |
33 | 79 | 32 | 20 | 9 | 33 | 32 | 20 | 9 | 2.0 | 4.4.3 | 9 |
normal |
33 | 79 | 32 | 20 | 9 | 33 | 32 | 20 | 9 | 2.0 | 4.4.3 | 9 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/font-kerning