# Bad value “-1” for attribute “aria-setsize” on element “li”: Expected a digit but saw “-” instead.

> Canonical HTML version: https://rocketvalidator.com/html-validation/bad-value-1-for-attribute-aria-setsize-on-element-li-expected-a-digit-but-saw-instead
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `aria-setsize` attribute tells assistive technologies how many items exist in a set of related elements (such as list items or tree items). It is particularly useful when not all items in a set are present in the DOM — for example, in virtualized lists, paginated results, or lazy-loaded content. According to the [WAI-ARIA 1.2 specification](https://www.w3.org/TR/wai-aria-1.2/#aria-setsize):

> Authors MUST set the value of `aria-setsize` to an integer equal to the number of items in the set. If the total number of items is unknown, authors SHOULD set the value of `aria-setsize` to `-1`.

This means `-1` is a specifically recommended value for cases where the total count of items is indeterminate. The W3C validator's pattern matching expects only non-negative digits, so it rejects the leading `-` character. This is a [known validator bug](https://github.com/validator/validator/issues/1158) and does not reflect an actual problem with your HTML.

## Why `-1` matters for accessibility

When building interfaces with dynamic or partially loaded content, screen readers need to communicate the size of a set to users. If you have a list of search results but don't know the total count, setting `aria-setsize="-1"` tells assistive technologies that the set size is unknown. Without this, a screen reader might announce incorrect or misleading information about how many items exist.

## What you should do

**Do not change your markup to work around this validator error.** The value `-1` is correct and serves an important accessibility purpose. Removing it or replacing it with an arbitrary positive number would degrade the experience for users of assistive technologies.

## Examples

### Valid usage that triggers the false positive

This markup is correct but will be flagged by the validator:

```html
<ul>
  <li role="option" aria-setsize="-1" aria-posinset="1">Result A</li>
  <li role="option" aria-setsize="-1" aria-posinset="2">Result B</li>
  <li role="option" aria-setsize="-1" aria-posinset="3">Result C</li>
</ul>
```

Here, the total number of results is unknown (perhaps they are loaded on demand), so `aria-setsize="-1"` correctly signals this to assistive technologies.

### Known set size (no validator error)

When the total number of items is known, use the actual count. This will not trigger the validator error:

```html
<ul>
  <li role="option" aria-setsize="5" aria-posinset="1">Item 1</li>
  <li role="option" aria-setsize="5" aria-posinset="2">Item 2</li>
  <li role="option" aria-setsize="5" aria-posinset="3">Item 3</li>
</ul>
```

### When `aria-setsize` is not needed

If all items in the set are present in the DOM, you don't need `aria-setsize` at all — the browser can compute the set size automatically:

```html
<ul role="listbox">
  <li role="option">Apple</li>
  <li role="option">Banana</li>
  <li role="option">Cherry</li>
</ul>
```

In summary, if you see this validator error and you're intentionally using `aria-setsize="-1"` because the total item count is unknown, your code is correct. You can safely ignore this particular warning.
