HTML Checking for Large Sites
Rocket Validator automatically checks your pages on the W3C Validator.
The element “label” must not appear as a descendant of the “a” element.
A <label>
tag can’t be used inside an <a>
tag. Consider using other tags like <span>
.
Related W3C validator issues
A button
element, or an element with the role=button
attribute, is not allowed to be nested inside an <a>
element.
An <a>
element cannot contain a descendant element with the attribute tabindex
.
Learn more:
When nesting a select
element inside a label
that has a for
attribute, the id
attribute of the select
is required to match it.
The label
element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element’s labeled control, either using the for
attribute, or by putting the form control inside the label
element itself.
When the select is inside the label
, there’s no need to specify a for
attribute as there can only be one select
, as in this example:
<label>
Age
<select>
<option>young</option>
<option>old</option>
</select>
</label>
However, if the for
attribute is specified, then it must match the id
of the select
like this:
<label for="age">
Age
<select id="age">
<option>young</option>
<option>old</option>
</select>
</label>
Learn more:
HTML Living Standard: the label element HTML Living Standard: the select element
The href
attribute of an <a>
element contains an invalid character, that should be properly encoded as a URI percent-encoded character.
Learn more:
The target
attribute on <a>
elements can’t be blank.
This attribute defines the browsing context for links, that is, where should the linked documents be opened. This was used extensively on the now deprecated <frame>
element, so you could give the name of the frame to open the document in, but is now more used to force links to open in a separate tab or window using target="_blank"
. Another option is using a name, so the new browsing context can be referred to on subsequent clicks on links with the same target
.
For example, this will force the links to open on a new tab:
<a href="https://example.com" target="_blank">will open a blank tab</a>
Learn more:
The href
attribute on an a
tag expects a valid URL, but only http://
was found.
<a>
tags can be used to link to an email address using the mailto
protocol in the href
attribute. Ensure that there is no space in the email address.
<a href="mailto: liza@example.com">This is wrong as it contains an space</a>
<a href="mailto:liza@example.com">This is OK</a>
The <label>
element represents a caption in a document, and it can be associated with a form input using the for
attribute, which must be an ID. Document IDs cannot contain whitespace.
Example:
<form>
<label for="user_name">Name</label>
<input type="text" id="user_name" />
</form>
Learn more:
Space characters are not allowed in href
attributes. Instead, they should be converted to %20
. In this example, the first line is invalid and the second is valid:
<a href="https://example.com#some term">invalid</a>
<a href="https://example.com#some%20term">valid</a>
The href
attribute on an <a>
tag contains an space, which is not allowed. Consider replacing space characters with “%20”.
The value used in the target
property of an <a>
element has been identified as a keyword because it starts with an underscore _
, but it’s not a valid keyword.
Values starting with an underscore for the target
property are used for reserved keywords like _blank
, _self
, _parent
or _top
.
Learn more:
The value provided on the type
attribute of an a
element is not a valid MIME type.
The type
attribute expects a MIME type that hints at the linked URL’s format.
Read more:
The type
attribute on <a>
elements, when present, gives a hint on the MIME type of the linked resource, for example:
<a href="application/pdf" src="book.pdf">Read our book</a>
<a href="image/jpeg" src="photo.jpeg">See a photo</a>
That is, we’re talking about the type of the linked resource, not the type of the <a>
element, as it’s sometimes misunderstood. The following example is invalid because button
is not a valid MIME type.
<a href="/order.php" type="button">Submit</a>
Learn more:
The <a>
element requires either a href
attribute, or a role
attribute.
Learn more:
A <div>
tag has been found as a direct child of an <ul>
tag, and this is not allowed. For example, <ul><div><li>item</li></div></ul>
is not valid, but <ul><li><div>item</div></li></ul>
is valid as the direct child of <ul>
is <li>
.
Drop-down lists can be defined in HTML by using the <select>
tag, containing the different <option>
s. Each <option>
must have a name, which can be either contained between <option>
and </option>
, or alternatively using the label
attribute.
Example:
<select name="size">
<option value="s">small</option>
<option value="m" label="medium"></option>
</select>
The element X is not allowed as a child element of Y. For example, a <ul>
element cannot have a <div>
child element.
An </a>
end tag has been found to violate nesting rules. <a>
tags can’t include other <a>
tags inside. Most probable cause is an unclosed <a>
tag, like in this example:
<a href="one.html">Page 1
<a href="two.html">Page 2</a>
An end tag </code>
has been found violating nesting rules. Check other errors in the same document related to the <code>
element, and fix the unallowed nested elements.
An end tag </strong>
has been found in an incorrect place within the document, violating nesting rules. A common case is closing it before closing other nested tags, for example:
<!-- This line is incorrect as the <strong> tag was closed before the nested <a> tag -->
<strong><a href="#">link</strong></a>
<!--- This line is OK as every end tag respects the nesting rules -->
<strong><a href="#">link</a></strong>
The label
element may only contain one labelable descendant.
For example:
<label for="age">
Age
<select id="age">
<option>young</option>
<option>old</option>
</select>
</label>
Learn more:
An <a>
tag can’t include other <a>
tags inside. Most probable cause is an unclosed <a>
tag, like in this example:
<a href="one.html">Page 1
<a href="two.html">Page 2</a>
An <a>
element has been found in an invalid place within a <table>
element.
For example, the following code would cause this issue:
<table>
<tr>
<a href="#">link</a>
</tr>
</table>
Instead, the <a>
element should be inside a <td>
element, as a <tr>
can’t hold content directly:
<table>
<tr>
<td>
<a href="#">link</a>
</td>
</tr>
</table>
A button
element, or an element with the role=button
attribute, is not allowed to be nested inside an <a>
element.
A label
element is not allowed as a descendant of a button
element.
The label
element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element’s labeled control, either using the for
attribute, or by putting the form control inside the label element itself.
Learn more:
A <label>
element cannot contain other <label>
as a descendant. Check for nested elements or closing tags that may have been misinterpreted, for example:
<label>name</label></label>
The <caption>
element specifies the caption (or title) of a table. It’s not allowed for a <caption>
to contain another table.
The label
element may contain only one labelable descendant.
For example:
<label for="age">
Age
<select id="age">
<option>young</option>
<option>old</option>
</select>
</label>
Learn more:
Links created with the <a>
element no longer accept a shape
attribute. In order to define image maps, use the <area>
element instead.
Learn more:
<label>
tags are used to label inputs in form, which need to be present and visible in the document, for example:
<label for="age">Age</label>
<input id="age" />
25,000 HTML checks per month. Is that enough for your site?
Save time using our automated web checker. Let our crawler check your web pages on the W3C Validator.