CSS ::marker works in Chrome 86+, Edge 86+, Firefox 68+, Opera 72+, and Samsung Internet 14+, while Safari ships partial support. See full browser support.

Prince Dewani
May 1, 2026
CSS ::marker is a W3C pseudo-element that selects the marker box of a list item, the bullet or number next to each list entry. It works in Chrome 86+, Edge 86+, Firefox 68+, Opera 72+, and Samsung Internet 14+, while Safari 11.1+ and Safari on iOS 11.3+ have only partial support and Internet Explorer never added it.
This guide covers what CSS ::marker is, which browsers support it, the supported properties, how to change a marker, and known issues.
CSS ::marker is a pseudo-element from the W3C CSS Lists Module Level 3 that targets the marker box of any element with display: list-item. It applies to li, ol, ul, and summary, letting you style the bullet or number with a limited set of CSS properties.
CSS ::marker works in every modern desktop browser and in Chromium-based mobile browsers, while Safari ships partial support and Internet Explorer never added it. Coverage today reaches roughly 95% of global users when partial support is counted.
Chrome supports CSS ::marker by default from Chrome 86 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 4 to 85 did not recognize the selector. The Blink engine forces white-space: pre on outside-positioned markers, so any trailing space inside the content property is preserved.
Microsoft Edge supports CSS ::marker by default from Edge 86 on Windows, macOS, Linux, and Android. The Chakra-based Edge 12 to 18 never supported the pseudo-element. Chromium-based Edge tracks Chrome exactly, so the same Blink quirks and behavior apply.
Firefox supports CSS ::marker by default from Firefox 68 on Windows, macOS, Linux, and Android. Mozilla shipped the first full implementation, including the content property and animation support. Firefox 2 to 67 did not recognize the selector.
Safari supports CSS ::marker only partially: Safari 11.1+ on macOS and Safari on iOS 11.3+ accept color and font longhands, but the content property and most layout properties are dropped by WebKit. Safari 3.1 to 11 do not support the selector at all. Safari on iPadOS follows the same partial-support behavior.
Opera supports CSS ::marker by default from Opera 72 on Windows, macOS, Linux, and Android. Opera 9 to 71 did not support it. Opera Mini, which renders pages on a remote server, never added the pseudo-element and falls back to the default marker glyph.
Samsung Internet supports CSS ::marker by default from Samsung Internet 14 on Galaxy phones and tablets. Samsung Internet 4 to 13 did not support it because those builds tracked an older Chromium baseline. Every release from version 14 forward inherits the same behavior as Chrome on Android.
The legacy Android Browser, replaced by Chrome for Android on most devices, did not support CSS ::marker. Modern Android Browser builds running on Chromium 86 and later inherit the pseudo-element from the system WebView. Apps that embed Android WebView pick up ::marker once the WebView updates past the Chromium 86 baseline.
Internet Explorer 5.5 through 11 do not support CSS ::marker in any version. The Trident engine never received the pseudo-element and silently ignores the rule. Microsoft has retired Internet Explorer 11, so users on supported Windows builds run Microsoft Edge, which supports ::marker from Edge 86 forward.
Note: CSS ::marker breaks across Safari and older mobile browsers. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
The ::marker pseudo-element accepts only a small set of CSS properties. The W3C CSS Lists Module Level 3 spec and MDN agree on which properties apply, so anything outside the list either has no effect or behaves inconsistently between browsers.
Properties that work on ::marker:
Properties that do NOT work on ::marker:
/* Restyle the bullets and numbers on every list item. */
li::marker {
color: hotpink;
font-size: 1.25rem;
content: "✦ ";
}
/* Replace the default ordered-list number with a custom format. */
ol li::marker {
content: counter(list-item) ". ";
font-weight: 700;
color: #00b7a8;
}The two rules above restyle every bullet on the page and replace the ordered-list number with a bold custom format that still increments through counter(list-item).
Changing a marker takes one of two routes: replace the marker glyph with the content property, or restyle the default glyph through font and color properties. The steps below cover both routes in one pass.
If the marker still does not change after these steps, check that the parent has display: list-item and that list-style-type is not set to none on a higher-priority rule, both of which suppress the marker box entirely.
CSS ::marker has clear sharp edges that show up only when you ship to production across browsers. Plan around these before you replace list-style-image with a ::marker rule.
In my experience, the Safari partial-support gap catches more teams than any other browser quirk: a polished marker design ships, looks perfect in Chrome and Firefox, and falls back to the default disc in Safari without any console warning, so always include Safari in the test matrix before release.
All CSS ::marker version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance