coderef

@counter-styleBaseline · Widely available

The @counter-style CSS at-rule sets custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Sep 18, 2023. Widely available since Mar 18, 2026.

Browser support

DesktopChrome
1–90Not supported
91+Supportedsince May 25, 2021
Current: 155
Edge
12–90Not supported
91+Supportedsince May 27, 2021
Current: 154
Firefox
1–32Not supported
33+Supportedsince Oct 14, 2014
Current: 157
Safari
1–16.6Not supported
17+Supportedsince Sep 18, 2023
Current: 27
MobileChrome Android
18–90Not supported
91+Supportedsince May 25, 2021
Current: 155
Firefox Android
4–32Not supported
33+Supportedsince Oct 14, 2014
Current: 157
Safari iOS
1–16.6Not supported
17+Supportedsince Sep 18, 2023
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: CSSCounterStyleRule.

Feature detection

JS · check before using
if ("CSSCounterStyleRule" in globalThis) {
  // CSSCounterStyleRule is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (23). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
CSSCounterStyleRule91913317913317
CSSCounterStyleRule.additiveSymbols91913317913317
CSSCounterStyleRule.fallback91913317913317
CSSCounterStyleRule.name91913317913317
CSSCounterStyleRule.negative91913317913317
CSSCounterStyleRule.pad91913317913317
CSSCounterStyleRule.prefix91913317913317
CSSCounterStyleRule.range91913317913317
CSSCounterStyleRule.speakAs91913317913317
CSSCounterStyleRule.suffix91913317913317
CSSCounterStyleRule.symbols91913317913317
CSSCounterStyleRule.system91913317913317
@counter-style91913317913317
@counter-style.additive-symbols91913317913317
@counter-style.fallback91913317913317
@counter-style.negative91913317913317
@counter-style.pad91913317913317
@counter-style.prefix91913317913317
@counter-style.range91913317913317
@counter-style.speak-as919133✕9133✕
Show 3 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
@counter-style.suffix91913317913317
@counter-style.symbols✕✕✕17✕✕17
@counter-style.system91913317913317