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.
List tags with commas. Each item is its own feature request.
"smcp" requests small-cap forms when available.
"zero" requests a slashed zero when available.
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.
Compatibility
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 Chrome48+
Full support
Mozilla Firefox34+
Full support
Apple Safari9.1+
Full support
Microsoft Edge12+
Full support
OperaModern
Full support
Samsung InternetModern
Full support
Internet Explorer10+
Full support
font-feature-settingsWidely supported in modern browsers
Bottom line: Safe for production. Visible results still depend on OpenType features inside the chosen font.
Remember
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.