# Bad value “” for attribute “is” on element “a”: Must be non-empty.

> Canonical HTML version: https://rocketvalidator.com/html-validation/bad-value-for-attribute-is-on-element-a-must-be-non-empty
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `is` attribute on the `<a>` element is present but set to an empty string. This attribute names a customized built-in element, so it must hold a valid custom element name and cannot be empty.

The `is` attribute tells the browser to upgrade a standard element into a customized built-in element. You register one in JavaScript with `customElements.define("fancy-link", FancyLink, { extends: "a" })`, then write `<a is="fancy-link">` to apply it. The value has to match a registered custom element name, which is always non-empty and contains a hyphen. An empty `is=""` names nothing, so the validator rejects it.

In practice this usually comes from a template that prints `is=""` when the variable feeding it is blank. If the element is not meant to be a customized built-in, remove the `is` attribute entirely. If it is, set the name of the element you registered.

Note that Safari does not support customized built-in elements, so many projects avoid `is` and use autonomous custom elements (a hyphenated tag such as `<fancy-link>`) instead.

## Invalid example

```html
<a is="" href="/pricing">Pricing</a>
```

## Valid example

Remove `is` when the link is an ordinary anchor:

```html
<a href="/pricing">Pricing</a>
```

Or give it the name of a registered customized built-in element:

```html
<a is="fancy-link" href="/pricing">Pricing</a>
```
