Rule reference
This is a list of all built-in rules.
Rules with are enabled by html-validate:recommended.
Rules with are enabled by html-validate:document.
Additional presets can be found and compared in Configuration presets.
Third-party rules can be found in Third-party rules.
HTML syntax and concepts
Rules relating to the HTML syntax and concepts.
| attr-delimiter | Disallow whitespace between attribute key and value | |
| attr-spacing | Require attributes to be separated by whitespace | |
| close-attr | Disallow end tags from having attributes | |
| close-order | Require elements to be closed in correct order | |
| element-name | Disallow invalid element names | |
| form-dup-name | Require form controls to have a unique name | |
| map-dup-name | Require `<map name>` to be unique | |
| map-id-name | Require name and id to match on <map> elements | |
| no-dup-attr | Disallow duplicated attributes | |
| no-dup-class | Disallow duplicated classes | |
| no-raw-characters | Disallow the use of unescaped special characters | |
| no-redundant-for | Disallow usage of redundant label for attributes | |
| script-type | Require valid type for `<script>` element | |
| unrecognized-char-ref | Disallow unrecognized character references | |
| valid-autocomplete | Require autocomplete attribute to be valid | |
| valid-id | Require `id` to be a valid identifier |
Content model
| attribute-allowed-values | Validate permitted attribute values | |
| attribute-misuse | Require attribute to be used in correct context | |
| element-permitted-content | Validate permitted content | |
| element-permitted-occurrences | Validate permitted number of element occurrences | |
| element-permitted-order | Validate required element order | |
| element-permitted-parent | Validate permitted element parent | |
| element-required-ancestor | Validate required element ancestors | |
| element-required-attributes | Ensure required attributes are set | |
| element-required-content | Ensure required elements are present | |
| input-attributes | Validates usage of input attributes | |
| no-multiple-main | Disallow multiple `<main>` | |
| script-element | Require end tag for `<script>` | |
| void-content | Disallow void element with content |
Deprecated
Rules related to usage of deprecated or obsolete functionality.
| deprecated | Disallow usage of deprecated elements | |
| deprecated-rule | Disallow usage of deprecated rules | |
| no-conditional-comment | Disallow usage of conditional comments | |
| no-deprecated-attr | Disallow usage of deprecated attributes |
Accessibility
| area-alt | Require alternative text on `<area>` elements | |
| aria-hidden-body | disallow `aria-hidden` from being set on `<body>` | |
| aria-label-misuse | Disallow `aria-label` and `aria-labelledby` misuse | |
| empty-heading | Require headings to have textual content | |
| empty-title | Require title to have textual content | |
| hidden-focusable | Disallows `aria-hidden` on focusable elements | |
| input-missing-label | Require input to have label | |
| meta-refresh | Require meta refresh to have 0 second delay | |
| multiple-labeled-controls | Disallow labels associated with multiple controls | |
| no-abstract-role | Disallow usage of abstract WAI-ARIA roles | |
| no-autoplay | Disallow autoplaying media elements | |
| no-implicit-button-type | Disallow implicit button type | |
| no-redundant-aria-label | Disallow aria-label and label with same text content | |
| no-redundant-role | Disallow usage of redundant roles | |
| prefer-native-element | Prefer to use native HTML element over roles | |
| svg-focusable | Require <svg> to have focusable attribute | |
| tel-non-breaking | Require non-breaking characters in telephone numbers | |
| text-content | Require elements to have valid text content | |
| unique-landmark | Requires landmarks to have unique names | |
| wcag/h30 | WCAG H30: Providing link text | |
| wcag/h32 | WCAG H32: Providing submit buttons | |
| wcag/h36 | WCAG H36: Require alt text on images used as submit buttons | |
| wcag/h37 | WCAG H37: Using alt attributes on img elements | |
| wcag/h63 | WCAG H63: Using the scope attribute to associate header cells and data cells | |
| wcag/h67 | WCAG H67: Using null alt text and no title attribute on img elements | |
| wcag/h71 | WCAG H71: Providing a description for groups of form controls |
Security
| require-csp-nonce | Require CSP nonce for resources | |
| require-sri | Require SRI for resources |
SEO
| long-title | Require title not to have too long text |
Style
| attr-case | Require a specific case for attribute names | |
| attr-pattern | Require attributes to match configured patterns | |
| attr-quotes | Require attribute quoting | |
| attribute-boolean-style | Require a specific style for boolean attributes | |
| attribute-empty-style | Require a specific style for empty attributes | |
| class-pattern | Require classes to match a specific pattern | |
| doctype-style | Require a specific case for DOCTYPE | |
| element-case | Require a specific case for element names | |
| id-pattern | Require IDs to match a specific pattern | |
| name-pattern | Require form control names to match a specific pattern | |
| no-implicit-close | Require elements with optional end tags to be explicitly closed | |
| no-implicit-input-type | Disallow implicit input type | |
| no-inline-style | Disallow inline style | |
| no-self-closing | Disallow self-closing elements | |
| no-style-tag | Disallow usage of <style> tag | |
| no-trailing-whitespace | Disallow trailing whitespace | |
| prefer-button | Prefer to use <button> instead of <input> for buttons | |
| prefer-tbody | Prefer to wrap <tr> inside <tbody> | |
| void-style | Require a specific style for closing void elements |
Document
These rules is to be used on full documents.
| allowed-links | Disallow link types | |
| doctype-html | Require usage of "html" doctype | |
| heading-level | Require headings to start at h1 and increment by one | |
| missing-doctype | Require document to have a doctype | |
| no-dup-id | Disallow duplicated IDs | |
| no-missing-references | Require all element references to exist | |
| no-utf8-bom | Disallow documents from having UTF-8 BOM |
Uncategorized
| no-unknown-elements | Disallow usage of unknown elements | |
| no-unused-disable | Disallow unused disable directives |