← All Tools

CSS @counter-style Generator

Build a CSS @counter-style at-rule for custom ordered-list markers. Choose a counter system (cyclic, numeric, alphabetic, symbolic, additive, fixed, or extends), supply symbols, prefix, suffix, range, pad, negative, and fallback — then preview against a live <ol>.

Emoji cyclic Circled digits (fixed) Thumbs (symbolic) Upper alpha (alphabetic) Custom roman (additive) Zero-padded decimal Extends decimal w/ suffix
Custom identifier used in list-style-type: my-counter;.
For cyclic / symbolic / fixed: a list of strings. For numeric / alphabetic: digits in increasing value (need ≥2; alphabetic must not include the "0" digit).
String before the marker. Use the literal text — quotes are added automatically.
Default is ". ". Set empty to omit a suffix.
0 = no padding. Pads short markers with the pad symbol.
Hint for screen readers when the style uses non-text symbols.
Sets the start attribute on the preview <ol> (also useful for testing range & negative).
Live preview
Support: All evergreen browsers (Chrome 91+, Firefox 33+, Safari 17+, Edge 91+). Older Safari versions ignore @counter-style and fall back to the fallback descriptor (default: decimal).
Generated CSS

    

About @counter-style systems

cyclic repeats the symbols forever (good for emoji bullets). numeric uses positional notation like decimal (first symbol = "zero"). alphabetic uses bijective base-N like spreadsheet columns (A, B…Z, AA, AB…). symbolic repeats the symbol N times (i, ii, iii). additive picks symbols whose weights sum to the value (used for roman numerals). fixed applies the symbols N times then falls back. extends inherits from an existing style and lets you override single descriptors (e.g. add a custom suffix to decimal). Apply the style with list-style-type: name; or ::marker { content: counter(c, name); }.