Home Page Check Accessibility, HTML, CSS, Broken Links & Spelling

Reference > HTML errors

Errors due to non-conformance with the chosen HTML specification

Code
Summary
Details
E600
Unrecognised element
This error is often raised when an old element has been used when testing against a newer HTML specification. Alternatively, you may have misspelt the name. LINK TO STANDARD.
E601
This tag must not be nested within any other tags
This issue is normally due to structural errors with the page, such as placing tags in the wrong order.
E602
The <!DOCTYPE> tag should be the first HTML tag or content in the file
The <!DOCTYPE> tag should appear before all other HTML tags or non-whitespace content (with XHTML it may appear after the XML declaration).
E603
An end tag is not allowed for this element
This issue occurs when you use an end tag where no end tag is allowed according to the HTML specification being tested against. Correcting this issue is normally a matter of deleting the end tag indicated. LINK TO STANDARD.
E604
The matching end tag appears to be missing
According to the HTML specification being tested against, the tag must have an end tag. Sometimes this error is caused by improperly nested tags where the end tag exists but cannot be matched with the corresponding start tag. LINK TO STANDARD.
E606
This tag or content must be nested within <html> tags
The tag or content appears outside of the <html> tags, but it must be nested inside them. This error is typically caused by missing or misplaced <html>, <head> and <body> start and end tags. Although these three tags are normally optional in HTML, it is poor practice to miss them off and often causes problems for search engine robots.
E607
This tag or content must be nested within <html> tags
The tag or content appears outside of the <html> tags, but it must be nested inside them. This error is typically caused by missing or misplaced <html>, <head> and <body> start and end tags. The start and end tags for these three elements are mandatory for XHTML.
E608
There must be a <!DOCTYPE> tag at the top of the page (if 'auto-detecting' then a best-fit <!DOCTYPE> will be used)
A <!DOCTYPE> tag should be placed before any other HTML tag or non-whitespace characters on the page. Sometimes the <!DOCTYPE> tag is in the wrong place, but is usually missing altogether in these cases. A correct <!DOCTYPE> tag is needed to ensure that the browser interprets the HTML correctly. See Recognised Doctypes.
E6091
This tag or content is not allowed here. One of the following was expected: LIST OF VALID TYPES/TAGS
There are strict rules as to what tags may be nested within others, as well as the order and number of tags allowed. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. LINK TO STANDARD.
E6092
This tag or content is not allowed here
There are strict rules as to what tags may be nested within others, as well as the order and number of tags allowed. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. LINK TO STANDARD.
E6093
TAG NOT ALLOWED HERE
There are strict rules as to what tags may be nested within others, as well as the order and number of tags allowed. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. LINK TO STANDARD.
E6094
This tag or content is not allowed here. One of the following was expected: LIST OF VALID TYPES/TAGS
When using ARIA role there are additional rules for what HTML elements can be nested within others. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. See ARIA in HTML.
E6095
Interactive elements are not allowed here
There are strict rules where interactive elements may appear. Note that as well as obvious interactive elements like buttons, adding a tabindex attribute to any element will also make it interactive. So if it is not obvious this is an interactive element, check the attributes too. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. LINK TO STANDARD.
E6096
Interactive elements are not allowed here
When using ARIA role there are additional rules where interactive elements may appear. This error may also be caused by incorrectly nesting tags, missing end tags, or similar structural issues. So if it is not obvious what is wrong, fix any structural issues first. See ARIA in HTML.
E6097
Because the parent TAG NAME is "transparent" only phrasing elements are allowed here
Elements that are "transparent" can only contain child elements that are allowed in their parent's element. In this case the grandparent element of this one only allows phrasing elements. So you need to replace this element with a phrasing one to fix this problem. LINK TO STANDARD.
E6098
Because the parent is TAG NAME only inline elements are allowed here
The <ins> and <del> elements can only contain child elements that are allowed in their parent's element. In this case the grandparent element of this one only allows inline elements. So you need to replace this element with an inline one to fix this problem. LINK TO STANDARD.
E610
One or more of the following tags are missing from within the enclosing tag: LIST OF MISSING TAGS
The HTML specification being tested against defines that the tag identified must have one or more specific tags nested within it. You should add one or more of the missing tags as appropriate. LINK TO STANDARD.
E611
Only one of this type of tag should be used within the enclosing tag
This error occurs when the specification only allows one of a certain tag to be nested within the enclosing tag, and more than one tag was found. LINK TO STANDARD.
E612
There are too many h1-h6 elements within the <hgroup>
This error occurs if there are more than one of the h1-h6 elements. Remove the excess ones to resolve this. LINK TO STANDARD.
E613
Exactly one of the h1-h6 elements is expected
This error occurs if there are no h1-h6 elements within the <hgroup>. Add one of the h1-h6 elements to the group to resolve this. LINK TO STANDARD.
E614
The <!DOCTYPE> tag does not match the HTML specification being tested against
The <!DOCTYPE> tag should exactly match the one that uniquely identifies the specification being tested. See Recognised Doctypes.
E620
The ATTRIBUTE NAME attribute is not allowed here
The most common reasons for this error are the use of an old unsupported attribute, a new one which is not yet part of the specification being tested against, or the misuse of attributes for use with JavaScript. If the attribute is for use with AngularJS, then see the FAQ for more information. LINK TO STANDARD.
E621
The ATTRIBUTE NAME attribute for this tag is missing
The HTML specification being tested against requires that the attribute indicated must be used. LINK TO STANDARD.
E622
The ATTRIBUTE NAME attribute does not have a valid value: LIST OF VALID VALUES
The HTML specification being tested against defines certain valid values for each attribute. Usually a list of valid values will be displayed when you see this message. Note that many values must be in lower case in XHTML, including the 'x' in numeric hex entity references. Also note that what values are allowed varies from standard to standard.
E623
The values of all attributes must be enclosed by quotes
In XHTML all attribute values must be enclosed by quotes. See XHTML 1.0 Attributes. This error is sometimes caused by a badly formatted tag possibly with single or double quotes in the wrong place or mismatched. Check that there are no extra or missing quote characters.
E624
The content attribute should have a value of application/xhtml+xml for XHTML
Note that <meta> tags override HTTP headers and XHTML should be served with a content type of application/xhtml+xml, but the content type used was not recognised. See Media Types.
E625
The content attribute should have a value of 'text/html' for HTML
Note that <meta> tags override HTTP headers and HTML should be served with a content type of 'text/html'. See Media Types.
E626
All element names must be in lower case
XHTML is case-sensitive and in XHTML all element names are defined as being in lower case. See XHTML 1.0 Elements.
E627
All attribute names must be in lower case: ATTRIBUTE NAME
XHTML is case-sensitive and in XHTML all attribute names are defined as being in lower case. See XHTML 1.0 Elements.
E628
Self-closing tags are not allowed in HTML 1-4
In older versions of HTML you are not allowed to end a tag with the '/' character. This is only valid with HTML5 and XHTML documents.
E630
The name and id attributes must have the same value
When name and id attributes appear in the same element they must have the same value. See HTML 4.01 Anchors.
E631
Anchor name and id attributes must be unique in the same document. See matching tags on lines: LINE NUMBERS
All id and anchor name attributes in the same document must have unique values. See HTML5 IDs, and HTML 4.01 Anchors.
E633
The content-type http header should have a value of application/xhtml+xml for XHTML
XHTML should be served with a content type of application/xhtml+xml, but the content type used was not recognised. See Media Types.
E634
The content-type http header should have a value of 'text/html' for HTML
HTML should be served with a content type of text/html. See Media Types.
E635
The XML declaration must appear before any other content or tags
The XML declaration (if supplied) must be the first thing in the file, before any other content or tags.
E636
Only one XML declaration is allowed
Only one XML declaration may be supplied and this must be the first thing in the file, before any other content or tags.
E637
The XML declaration must contain a version attribute
The XML declaration must contain a version attribute. Check the spelling of any attributes supplied.
E638
Invalid value for the version attribute
The version attribute must be set to the string '1.0'.
E639
Invalid value for the encoding attribute
The encoding attribute must begin with a letter [a-zA-Z] and may be followed by any number of letters, digits [0-9], hyphens, underscores, and periods.
E640
Invalid value for the standalone attribute
The standalone attribute must be set to either 'yes' or 'no'.
E641
Unrecognised or invalid attribute: ATTRIBUTE NAME
The XML declaration contains an unrecognised or invalid attribute. Check for spelling mistakes.
E642
The root element name 'html' is missing from the <!DOCTYPE> tag
The root element name 'html' is either missing from the <!DOCTYPE> tag, misspelt, or the wrong root element name has been used. See Recognised Doctypes.
E643
The keyword 'PUBLIC' is missing from the <!DOCTYPE> tag
The keyword 'PUBLIC' is either missing from the <!DOCTYPE> tag, or misspelt. See Recognised Doctypes.
E644
The word '!DOCTYPE' must be in uppercase for XHTML documents
XHTML is case-sensitive and the word '!DOCTYPE' must be all in uppercase. See Recognised Doctypes.
E645
The keyword 'PUBLIC' must be in uppercase for XHTML documents
XHTML is case-sensitive and the word 'PUBLIC' must be all in uppercase. See Recognised Doctypes.
E646
The root element name 'html' must be in lowercase for XHTML documents
XHTML is case-sensitive and the root element name 'html' must be all in lowercase. See Recognised Doctypes.
E647
Unrecognised character set
The character set specified is not recognised. This may be because it is misspelt.
E648
There can be only one labelable element associated with a <label>
The <label> tag can only refer to one labelable element. In this case there is either more than one labelable element within the <label> tag, and/or the <label> tag has a for attribute which refers to a labelable element that is found elsewhere.
E649
The default scripting language must be specified for ATTRIBUTE NAME
When intrinsic events such as onclick and onmouseover are used, the default scripting language should be specified using a Content-Script-Type HTTP header or <meta> tag. See Default Scripting Language.
E650
The default style sheet language must be specified when style attributes are used
The default style sheet language should be specified using a Content-Style-Type HTTP header or <meta> tag. See Default Style Sheet Language.
E651
The value of the for attribute must match the id of the control element it refers to
When you include a for attribute to associate a label with a control you must provide a control with a matching id value in the same document. See The for Attribute.
E652
The values in the headers attribute must have matching the table cell 'ids'
When you include a headers attribute to associate one cell with another you must provide matching 'ids' in <th> cells in the same table. See HTML5: TD and TH elements, and HTML 4.01: TH and TD elements.
E653
The value of the usemap attribute must match the id or name of the <map> it refers to
When you include a usemap attribute for a client-side map you must provide a <map> with a matching id or name.
E654
The keyword 'SYSTEM' is missing from the <!DOCTYPE> tag
The keyword 'SYSTEM' is either missing from the <!DOCTYPE> tag, or misspelt. See Recognised Doctypes.
E655
The keyword 'SYSTEM' must be in uppercase for XHTML documents
XHTML is case-sensitive and the keyword 'SYSTEM' must be all in uppercase. See Recognised Doctypes.
E656
The ATTRIBUTE NAME attribute has an invalid character at position: INDEX
The specification being tested against does not allow attribute names with certain characters in them, this restriction may include namespace prefixes.
E657
The xml:lang and lang attributes must have the same value
When xml:lang and lang attributes appear in the same element they must have the same value. See The lang and xml:lang Attributes
E658
The lang attribute is missing
When the xml:lang attribute is used you must also add a lang attribute to the same element. See The lang and xml:lang Attributes.
E659
The values in the for attribute must have matching ids
When you include a for attribute each of the ids listed must match elements elsewhere in the document.
E660
The value of the list attribute must match the id of the <datalist> it refers to
When you include a list attribute you must provide a <datalist> with a matching id.
E661
The value of the contextmenu attribute must match the id of the <menu> it refers to
When you include a contextmenu attribute you must provide a <menu> with a matching id.
E662
The value of the form attribute must match the id or name (if pre-HTML5) of the <form> it refers to
When you include a form attribute you must provide a <form> with a matching id or name (if pre-HTML5).
E663
The value of the refid attribute must match the id of the element it refers to
When you include a refid attribute you must provide an element with a matching id.
E664
An attribute is not allowed for this input type
For each type attribute only a limited set of other attributes are allowed. LINK TO STANDARD.
E665
Attribute missing, or conflicting ones specified
Exactly one of the name, http-equiv, charset, property, and itemprop attributes must be specified.
E666
Only one charset may be specified per document
You can only use one <meta> tag with a charset, or http-equiv=content-type attribute, per document. You must not specify a charset with <iframe> srcdoc. See Character Encoding Declaration.
E667
For HTML5 documents the value of charset must be a case-insensitive match for utf-8
HTML5 only supports documents encoded using UTF-8. See Character Encoding Declaration
E668
Missing value for content attribute
If either name, http-equiv, property or itemprop is specified, then the content attribute must have a value.
E669
The ATTRIBUTE NAME attribute is not allowed in this context
The HTML specification being tested against specifies that the attribute is not allowed due to special restrictions. LINK TO STANDARD.
E670
Invalid value for type attribute
If the language attribute is specified on the <script> tag then the type attribute must be omitted or be equal to text/javascript.
E671
The charset part of the content attribute is missing
The content attribute must contain charset=utf-8.
E672
Obsolete value for http-equiv
Using the <meta> element to specify the document-wide default language is obsolete. Consider specifying the language on the root element instead.
E673
The summary attribute is obsolete
Authors are encouraged to consider whether the explanatory text in the summary attribute is likely to be useful to the visually impaired, and whether it would be more useful to the visually unimpaired to put this before the table or in a <caption>.
E677
Self-closing tags are not allowed for this element
You can only use self-closing tags with 'void' elements whose content model is EMPTY. See Start Tags.
E679
More than one open <details> in same name group. See matching tags on lines: LINE NUMBERS
A document must not contain more than one <details> element in the same details name group that has the open attribute present. You need to remove the excess open attribute(s), or use different name values. See Details Name.
E680
The value of the menu attribute must match the id of the <menu> it refers to
When you include a menu attribute you must provide a <menu> with a matching id.
E681
ARIA attributes such as role and aria-* are invalid here
Some elements (sometimes combined with certain attributes) cannot have ARIA attributes specified. See ARIA in HTML.
E682
The value of the role attribute is not valid for this element
Elements can only have specific roles as defined by the ARIA specification. So, you may be better off using a more appropriate element for this role. See ARIA in HTML.
E683
The ATTRIBUTE NAME attribute for this ARIA role is missing
The ARIA specification requires that the attribute indicated should be used with the specified roles. See ARIA 1.2.
E684
The ATTRIBUTE NAME attribute is not allowed in this context
The ARIA specification only allows certain aria-* attributes to be used with certain roles. See ARIA 1.2.
E685
Elements with the ROLE role must be owned by an element with one of these roles: LIST OF ROLES
The ARIA specification requires that elements with certain roles must be contained within or owned by elements with other roles. So you need to add one of the roles listed to an owning element. See ARIA 1.2.
E686
The value of the attribute must match an id in the same document
Each of the ids listed for this aria attribute must match elements elsewhere in the document. See ARIA 1.2.
E687
The value of the alt attribute must contain a non-empty string
The alt attribute must be present, and must contain a non-empty string giving the label that would be appropriate for an equivalent button if the image was unavailable. See Image Button.
E6881
Do not use role=presentation|none with a focusable element
Using this with an interactive element, or one with a positive tabindex, will result in some users focusing on 'nothing'. Remove the role, or use tablindex=-1 so it is not sequentially focusable. See Fourth Rule of ARIA Use.
E6882
Do not use aria-hidden=true with a focusable element
Using this with an interactive element, or one with a positive tabindex, will result in some users focusing on 'nothing' when they tab to it. Remove the aria-hidden, or use tablindex=-1 so it is not sequentially focusable. See Fourth Rule of ARIA Use.
E689
Do not mix role=presentation|none and global ARIA attributes
When global ARIA attributes are present using role=presentation|none has no effect. You should either remove all the aria-* attributes or change or remove the role. See Conditions that cause 'presentation' to be ignored.
E690
Elements with the ROLE role must own an element with one of these roles: LIST OF ROLES
The ARIA specification requires that elements with certain roles must contain or own elements with specific roles. So you need to add one or more of the roles listed to an owned element. See ARIA 1.2.
E691
You must not use ARIA ATTRIBUTE NAME as this conflicts with ATTRIBUTE NAME
Web developers must not use an aria-* attribute when it conflicts with an equivalent regular attribute for an element. See ARIA in HTML.
E692
You must not use aria-hidden=true here
Using aria-hidden=true to hide things is not allowed in this context. See ARIA in HTML.
E693
Missing aria-roledescription attribute
If you use aria-brailleroledescription, you must also use aria-roledescription. See ARIA 1.2.

Reference > HTML warnings

Warnings due to non-conformance with the chosen HTML specification

Code
Summary
Details
W600
The ATTRIBUTE NAME attribute has a boolean value, and this may be ignored or cause errors in older browsers/robots
Some older browsers and search engine robots do not recognise XHTML style boolean attributes such as selected="selected". For backwards compatibility just use the attribute without any value, like 'selected'
W601
The ATTRIBUTE NAME attribute for this tag is recommended, but missing
Although this attribute is not required it is recommended that you add it for clarity.
W602
The <!DOCTYPE> tag does not match the HTML specification being tested against
The <!DOCTYPE> tag should exactly match the one that uniquely identifies the specification being tested. See Recognised Doctypes.
W603
The system ID is missing from the <!DOCTYPE> tag
Although not a serious problem, the <!DOCTYPE> tag should exactly match the one that uniquely identifies the specification that the page follows. In this case the system ID is missing and should be added for completeness. This is a URL pointing to the DTD used to test the page. See Recognised Doctypes.
W605
Duplicate tags found
Duplicate tags have been found with the same attributes. Although this should not affect the page, it indicates that a mistake may have been made.
W607
The content attribute should have a value of application/xhtml+xml for XHTML
Note that <meta> tags override HTTP headers and XHTML should be served with a content type of application/xhtml+xml. See Media Types.
W608
The content-type http header should have a value of application/xhtml+xml for XHTML
XHTML should be served with a content type of application/xhtml+xml. See Media Types.
W609
The content-type HTTP header specifies a different character set
The content-type HTTP header specifies a different character set to that specified in the tag. In this case the HTTP header takes precedence.
W610
The BOM specifies a different character set
The BOM (Byte Order Mark) of the document specifies a different character set to that specified in the tag. In this case the BOM takes precedence.
W611
No character set is specified in either the HTTP header, <meta> tag, or XML declaration
The character set (character encoding) should be specified in either a HTTP header or <meta> tag, or XML declaration for XHTML documents. If it isn't then the user agent may select an incorrect character set by mistake. See HTML5: Character Encoding, and HTML 4.01: Character Encoding.
W613
The border attribute is obsolete
Authors should not specify a border attribute on an <img> element. CSS should be used instead.
W614
The name attribute is obsolete
The name attribute on the <a> element is obsolete. Consider putting an id attribute on the nearest container instead. See Obsolete Features.
W616
The language attribute is obsolete
Authors should not specify the language attribute on the <script> element. The type attribute should be used instead.
W617
With XHTML you should not use the content attribute to set the content type or character set
With XHTML the character set should be set by an XML declaration or HTTP header.
W618
This attribute is obsolete: ATTRIBUTE NAME
The attribute indicated is considered obsolete and so should not be used. Browsers will often ignore obsolete attributes. In most cases there is a better alternative using CSS or ARIA, or the attribute is considered redundant.
W619
Unrecognised value for the name attribute
The name attribute in the <meta> element is restricted to values documented in the HTML5 specification with extensions in the WHATWG Wiki. Note that Total Validator will not recognise changes to the wiki after its release date. So, you will have to wait until the next release of Total Validator before new names are recognised. See Meta Extensions.
W620
You should not use ARIA roles or attributes, that are the default for the element
Web developers should not set the ARIA role and aria-* attributes to values that match the default implicit ARIA semantics. See ARIA in HTML.
W621
You should not use ARIA ATTRIBUTE NAME in place of ATTRIBUTE NAME
Web developers should not use aria-* attributes when there is an equivalent regular attribute for an element. See ARIA in HTML.
W622
The ARIA FEATURE has been deprecated
Deprecated features could be removed at any time, so you should not rely on them. The ARIA specification will usually provide an alternative or state why it should not be used at all. See ARIA 1.2.
W623
Use the lang attribute to denote the primary language of the document
You should always identify the primary natural language of a document using a lang attribute on the <html> tag. See Declaring language in HTML.
W624
You should not use the generic role
The generic role is the implicit role of generic elements for use by user agents only. It should not be used by web authors. See ARIA in HTML.
W625
You should use the elements h1-h6 instead of the 'heading' role
The 'heading' role and 'aria-level' attribute should only be used to retrofit accessibility on legacy code that you cannot make major changes to. See First Rule of ARIA Use.
W626
Avoid using ARIA roles that are not recommended
If possible, consider using a different HTML element which allows the specified role. See ARIA in HTML.
W690
The parent tag has a role that must only own an element with one of these roles: LIST OF ROLES
The ARIA specification requires that elements with certain roles must only contain or own elements with specific roles. So you need to move or remove this, or change its role. See ARIA 1.2.