CSS font-feature-settings Property

Beginner
6 min read
Updated: Oct 2026
3 examples
Live preview

Definition and Usage

The font-feature-settings property turns OpenType features on or off with four-letter tags such as "liga", "tnum", and "smcp". The active font-family must include the feature or you will see no change.

The initial value is normal. Prefer higher-level properties when they exist: font-variant, font-variant-caps, font-variant-ligatures, and font-variant-numeric.

Prefer font-variant Low-level escape hatch

Use font-feature-settings for tags those properties cannot express. Avoid it for everyday small caps — use font-variant-caps instead.

Standard-track.

Not deprecated and not experimental. Baseline widely available across modern browsers.

CSS Syntax

syntax.css
font-feature-settings: normal | <feature-tag-value># | initial | inherit;

A feature tag is a quoted 4-letter string, optionally followed by on/1 or off/0. Example: "liga" 0.

Property Values

ValueDescriptionTry it
normalDefault. Use the font’s normal feature settingsTry it
"liga"Standard ligatures (often on by default)Try it
"tnum"Tabular (fixed-width) figuresTry it
"smcp"Small caps (prefer font-variant-caps when you can)Try it
"zero"Slashed zeroTry it
"frac"Diagonal fractionsTry it
on / 1Enable the tag (default if the number is omitted)Try it
off / 0Disable the tagTry it
inheritTakes the parent value (property is inherited)Try it

How to Use font-feature-settings

Confirm the font supports the tag, then toggle it with a short quoted code.

  1. Pick a font that includes the OpenType feature you need.
  2. Check whether a font-variant longhand already covers it.
  3. If not, set font-feature-settings to a quoted tag, e.g. "tnum".
  4. Pass 0 or off to disable a feature that is on by default (common for "liga").
PieceRequired?Role
4-letter tagYes (unless normal)Names the OpenType feature
ValueOptional1/on enable; 0/off disable
Supporting fontYesWithout the feature in the font file, nothing changes

Live Preview

Change only font-feature-settings. Visible results depend on the fonts installed here.

Sample text includes ligature pairs (fi) and figures (011).

OpenType

Office waffle — 011 / 3.14

font-feature-settings: normal

CSS Examples

Each snippet focuses on font-feature-settings. Effects appear only when the font supports the tag. Use Try It Yourself for a live editor.

Example 1 — Turn Ligatures Off

Common ligatures are often on. Set "liga" 0 to disable them.

CSS
<style>
  p {
    font-feature-settings: "liga" 0;
  }
</style>

<p>Office waffle</p>
Try It Yourself

How It Works

  1. Quote the tag. "liga" is a four-letter OpenType code.
  2. Pass 0. That means off (off is the same).
  3. Pairs like fi / fl. With liga off, letters stay separate when the font supports the feature.
  4. Font dependent. No liga table in the font means no visible change.

Example 2 — Tabular Numbers

Fixed-width digits help columns of numbers line up.

CSS
<style>
  p {
    font-feature-settings: "tnum";
  }
</style>

<p>011<br>3.14<br>2.71</p>
Try It Yourself

How It Works

  1. Enable "tnum". Omitting a number means on / 1.
  2. Digits share width. Useful in tables and price lists.
  3. Prefer numeric longhands when available. See font-variant-numeric for a higher-level option.
  4. Still font dependent. Many UI fonts expose tabular figures; some body fonts do not.

Example 3 — Combine Tags

Comma-separate several feature tags in one declaration.

CSS
<style>
  p {
    font-feature-settings: "smcp", "zero";
  }
</style>

<p>Css 100</p>
Try It Yourself

How It Works

  1. List tags with commas. Each item is its own feature request.
  2. "smcp" requests small-cap forms when available.
  3. "zero" requests a slashed zero when available.
  4. Prefer caps longhands for small caps. Use font-variant-caps for everyday cases.

Edge Cases & Pitfalls

Silent no-ops are common. Match the tag to a font that actually ships it.

font

No feature in the font = no change

The declaration is valid either way. Always verify with a font that documents the tag.

variant

Prefer font-variant-* first

Higher-level properties are clearer and play better with the cascade. Keep this property for special OpenType cases.

tag

Exactly four ASCII characters

Tags must be four characters in the printable ASCII range. Wrong length makes the descriptor invalid.

reset

One declaration replaces the whole list

A later font-feature-settings does not merge with an earlier one. List every tag you need in the winning rule.

a11y

Do not encode meaning only in glyphs

Fancy alternates are decorative. Keep the underlying text readable if features fail to apply.

Browser Support

font-feature-settings is a browser style property. Node.js, Deno, and Bun do not apply it.

✓ Baseline · Widely available

font-feature-settings

Chrome 48+ (prefixed earlier), Firefox 34+, Safari 9.1+, Edge 12+, Opera (Chromium), Internet Explorer 10+. Unprefixed in modern engines.

96% global support
Google Chrome 48+
Full support
Mozilla Firefox 34+
Full support
Apple Safari 9.1+
Full support
Microsoft Edge 12+
Full support
Opera Modern
Full support
Samsung Internet Modern
Full support
Internet Explorer 10+
Full support
font-feature-settings Widely supported in modern browsers

Bottom line: Safe for production. Visible results still depend on OpenType features inside the chosen font.

Key Takeaways

  • Role: low-level OpenType on/off control via 4-letter tags.
  • Prefer: font-variant-* when a high-level property exists.
  • Syntax: "tag" plus optional 1/0 or on/off.
  • Requires: a font that actually contains the feature.

One line: font-feature-settings toggles OpenType tags when higher-level font-variant properties are not enough.

Frequently Asked Questions

It turns OpenType features on or off with four-letter tags such as liga, tnum, or smcp. The font must include the feature or nothing changes.
normal — the browser and font use their default feature settings.
Yes when a higher-level property exists (for example font-variant-caps for small caps). Use font-feature-settings for special tags those properties cannot express.
Write a quoted four-letter tag, optionally followed by 1/on or 0/off. Omitting the number means on (1).
The active font likely lacks that OpenType feature. Switch fonts or inspect the font’s feature list.
It is Baseline widely available: Chrome 48+, Firefox 34+, Safari 9.1+, Edge 12+, Opera (Chromium), Internet Explorer 10+. It is a browser style property, not a Node.js feature.

Next: font-kerning

Control how tightly letter pairs sit together.

font-kerning tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

8 people found this page helpful