The ‘counter-increment’ property acts like an incremented variable in a programming language – it specifies the amount to increment the specified counter by when the current CSS selector is encountered. The property lists one or more counter labels, each followed by an optional increment integer value (default increment is 1.) Negative integers and zero are also valid.

If a counter is incremented AND rendered using a single CSS selector (with the ‘content’ property and ‘before:’/’after:’ pseudo-elements), it should be incremented first, then rendered. If a single CSS selector both increments and resets a counter, it is reset, then incremented.


h1:before {
counter-increment: main-heading;
counter-reset: sub-heading;
content: “Section ” counter(main-heading) “: ”

h2:before {
counter-increment: sub-heading;
content: “Section ” counter(main-heading) “.” counter(sub-heading) “: ”

Possible Values

inherit: Explicitly sets the value of this property to that of the parent.
none: Suppresses incrementing counters for the current selector.
[identifier integer]: Specifies one or more counters and the amount to increment the counter by.