Skip to content

Linter Rule: Require href attribute on <a> tags ​

Rule: html-anchor-require-href

Description ​

An <a> element that has an href attribute represents a hyperlink (a hypertext anchor) labeled by its contents. Links should go somewhere. If you want to perform an action without navigating the user to a new URL, use a <button> instead.

Rationale ​

Anchor tags without an href attribute are not focusable via keyboard navigation and are not visible to screen readers. This makes them inaccessible to users who rely on assistive technologies.

Examples ​

✅ Good ​

erb
<a href="https://alink.com">I'm a real link</a>

🚫 Bad ​

erb
<a>Go to Page</a>
Add an `href` attribute to `<a>` to ensure it is focusable and accessible. Links should navigate somewhere. If you need a clickable element without navigation, use a `<button>` instead. (html-anchor-require-href)
erb
<a href="#">Go to Page</a>
Avoid `href="#"` on `<a>`. `href="#"` does not navigate anywhere, scrolls the page to the top, and adds `#` to the URL. If you need a clickable element without navigation, use a `<button>` instead. (html-anchor-require-href)
erb
<a data-action="click->doSomething">I'm a fake link</a>
Add an `href` attribute to `<a>` to ensure it is focusable and accessible. Links should navigate somewhere. If you need a clickable element without navigation, use a `<button>` instead. (html-anchor-require-href)

References ​

Released under the MIT License.