# range

You’re reading the English version of this content since no translation exists yet for this locale. Help us translate this article!

When defining custom counter styles, the `range` descriptor lets the author specify a range of counter values over which the style is applied. If a counter value is outside the specified range, then the fallback style will be used to construct the representation of that marker. Value of the range descriptor can be either auto or a comma separated list of lower and upper bounds specified as integers.

If value is auto, then for cyclic, numeric, and fixed system, the range will be from negative infinity to positive infinity. For alphabetic and symbolic systems, range will be from 1 to positive infinity. For additive systems, auto will result in the range 0 to positive infinity. For extends systems, the range is whatever auto will produce for the extended system.

When range is specified as integers, the value `infinite` can be used to denote infinity. If infinite is specified as the first value in a range, then it is interpreted as negative infinity. If used as upper bound, it is taken as positive infinity.

Related at-rule `@counter-style` `auto` all as specified order of appearance in the formal grammar of the values

## Syntax

```/* Keyword value */
range: auto;

/* Range values */
range: 2 5;
range: infinite 10;
range: 6 infinite;
range: infinite infinite;

/* Multiple range values */
range: 2 5, 8 10;
range: infinite 6, 10 infinite;
```

### Values

`auto`
The range depends on the counter system:
• For cyclic, numeric, and fixed systems, the range is negative infinity to positive infinity.
• For alphabetic and symbolic systems, the range is 1 to positive infinity.
• For additive systems, the range is 0 to positive infinity.
• For extends systems, the range is whatever auto would produce for the extended system; if extending a complex predefined style (§7 Complex Predefined Counter Styles), the range is the style’s defined range.
`[ [ | infinite ]{2} ]#`
Defines a comma-separated list of ranges. For each individual range, the first value is the lower bound and the second value is the upper bound. A range is inclusive, that means it always contains both, the lower and upper bound numbers. If infinite is used as the first value in a range, it represents negative infinity; if it is used as the second value, it represents positive infinity. The range of the counter style is the union of all the ranges defined in the list.
If the lower bound of any range is higher than the upper bound, the entire descriptor is invalid and will be ignored.

### Formal syntax

`[ [ <integer> | infinite ]{2} ]# | auto`

## Example

```<ul class="list">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
<li>Seven</li>
<li>Eight</li>
<li>Nine</li>
<li>Ten</li>
</ul>```
```@counter-style range-multi-example {
system: cyclic;
symbols: "\25A0" "\25A1";
range: 2 4, 7 9;
}

.list {
list-style: range-multi-example;
}```

The above list will display as follows:

1. One
□. Two
■. Three
□. Four
5. Five
6. Six
■. Seven
□. Eight
■. Nine
10. Ten

## Specifications

Specification Status Comment
CSS Counter Styles Level 3
The definition of 'range' in that specification.
Candidate Recommendation Initial definition

## Browser compatibility

Update compatibility data on GitHub
Desktop Mobile Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Chrome No support No Edge No support No Firefox Full support 33 IE No support No Opera No support No Safari No support No WebView Android No support No Chrome Android No support No Firefox Android Full support 33 Opera Android No support No Safari iOS No support No Samsung Internet Android No support No

### Legend

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.