Home CSS Properties text-emphasis-style CSS text-emphasis-style Property Definition
Definition and Usage The text-emphasis-style property sets the appearance of emphasis marks on each character (except spaces and control characters). It is a longhand of text-emphasis .
It is inherited. The initial value is none. Pair it with text-emphasis-color for color, and text-emphasis-position for placement.
Note One character for stringsCustom string marks should be a single character. Browsers may truncate or ignore multi-character strings.
Syntax
CSS Syntax text-emphasis-style: none | [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] | <string> | initial | inherit ;
If neither filled nor open is given, filled is assumed. Default shape is circle in horizontal writing and sesame in vertical writing when only a fill keyword is set.
Values
Property Values Value Description Try it noneDefault. No emphasis marks Try itfilled / openSolid or hollow marks Try itdot / circle / triangle …Built-in shapes, also double-circle, sesame Try it<string>One-character custom mark, e.g. "*" Try itinitialResets to none Try itinheritTakes the parent’s style Try it
Approach
How to Use text-emphasis-style Pick a shape (or string), optionally choose filled vs open, then color the marks if needed.
Choose a shape: dot, circle, double-circle, triangle, or sesame. Optionally add filled or open (default fill is filled). Or use a one-character string: text-emphasis-style: "*". Set color with text-emphasis-color, or use the text-emphasis shorthand. Piece Required? Role Style keyword / string Yes (to see marks) Creates the marks Fill keyword Optional filled (default) or openColor Optional Separate longhand; defaults to currentColor Position Optional Separate property; not reset by style alone
Try it
Live Preview Color stays red so shape changes are easy to see. Switch styles to compare built-in marks and a string.
Code
CSS Examples Each snippet focuses on text-emphasis-style. Color is optional and kept minimal. Use Try It Yourself for a live editor.
1. Filled circle 2. Sesame 3. Custom string Example 1 — Filled Circle The usual horizontal default shape when marks are turned on.
<style>
.mark {
text-emphasis-style: filled circle;
text-emphasis-color: #dc2626;
}
</style>
<p class="mark">Important</p> Important
Filled circles sit on each letter; spaces stay empty.
How It Works Combine fill + shape. filled circle draws solid circles.Color separately. text-emphasis-color paints the marks red.Per character. Each letter gets a mark; spaces do not.Shorthand option. text-emphasis: filled circle #dc2626 does both at once.Example 2 — Sesame Marks Sesame marks are common in East Asian typography, especially vertical text.
<style>
h2 {
text-emphasis-style: sesame;
}
</style>
<h2>重要ポイント</h2> 重要ポイント
Shape alone defaults to filled sesame marks.
How It Works Name the shape. sesame selects sesame marks.Fill is implied. Without open, marks are filled.Color defaults. Marks use currentColor until you set a color.Vertical default. In vertical writing, sesame is the default shape if only fill is given.Example 3 — Custom String Use a single character as the mark.
<style>
.star {
text-emphasis-style: "*";
text-emphasis-color: #ca8a04;
}
</style>
<p class="star">Featured</p> Featured
Keep the string to one character.
How It Works Quote one character. "*" becomes the mark for each letter.Skip fill keywords. Strings replace the shape list entirely.Color as needed. Pair with text-emphasis-color for contrast.Avoid long strings. Values like "foo" are not reliable across browsers. Edge Cases & Pitfalls If marks look wrong or missing, check these first.
none none means no marksColor and position do nothing until a non-none style (or shorthand) creates marks.
string One character only Do not use multi-character strings. The browser may show only the first grapheme or ignore them.
defaults Fill and shape defaults Missing fill → filled. Shape-only keywords are fine. Fill-only uses circle (horizontal) or sesame (vertical).
shorthand Shorthand resets style A later text-emphasis rule can override this longhand. It still does not reset position.
spaces Spaces stay unmarked Emphasis skips spaces and control characters. That is normal, not a bug.
Compatibility
Browser Support text-emphasis-style is a browser text-decoration property . Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available
text-emphasis-style Interoperable across modern browsers since about March 2022. Internet Explorer does not support this property.
Google Chrome 99+
Full
Mozilla Firefox 46+
Full
Apple Safari 7+
Full
Microsoft Edge 99+
Full
Opera 85+
Full
Samsung Internet 18+
Full
Internet Explorer No
None text-emphasis-style Widely supported
Bottom line: Safe for modern sites. Support tracks the text-emphasis family. Older Safari used a -webkit- prefix; IE has no support.
Remember
Key Takeaways Role: choose the emphasis mark shape or string symbol.
Shapes: dot, circle, double-circle, triangle, sesame.
Initial value: none. Inherited. Fill defaults to filled.
Shorthand twin: text-emphasis sets style and color together.
One line: text-emphasis-style turns emphasis marks on and chooses their shape.
Frequently Asked Questions What does the CSS text-emphasis-style property do? It sets the appearance of emphasis marks on each character: none, a shape keyword list such as filled circle, or a one-character string.
What is the default value of text-emphasis-style? The initial value is none, so no marks appear until you set a style (or the text-emphasis shorthand).
What is the difference between filled and open? filled draws a solid mark. open draws a hollow outline. If neither is set, filled is assumed.
Can I use a custom symbol? Yes. Use a one-character string such as "*". Multi-character strings may be truncated or ignored.
Is text-emphasis-style inherited? Yes. A parent style can affect child text unless a child overrides it or the shorthand resets it.
Which browsers support text-emphasis-style? It is Baseline Widely available (interoperable since about March 2022) in modern browsers. Internet Explorer does not support it. It is a browser rendering property, not a Node.js feature.
About the author Developer, cloud engineer, and technical writer
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
Helpful Share Copy link Suggestion