Description of Errors

HTML5 Character Encoding Errors

Character encoding $0 is not allowed for HTML document.

The character encoding used for the document is not allowed for HTML document. The document is non‐conforming.

Character encoding $0 should not be used for HTML document.

The character encoding used for the document is not recommended for HTML document. The document is non‐conforming unless there is any good reason to use that encoding.

Use of UTF-8 is encouraged.

Use of UTF-8 as the character encoding of the document is encouraged, though the use of another character encoding is conforming.

Conformance for character encoding requirements cannot be checked.

The conformance checker cannot detect whether the input document met the requirements on character encoding, since the document is not inputed as a serialized byte sequence. The document is not conforming if it is not encoded in an appropriate character encoding with appropriate labeling.

There is no character encoding declaration.

The document does not contain a character encoding declaration. Unless the character encoding is explicitly specified in lower‐level protocol, e.g. in HTTP, or is implied by BOM, there must be a character encoding declaration. The document is non‐conforming.

The long character encoding declaration syntax <meta http-equiv="Content-Type" content="text/html; charset=charset-name"> is obsolete. The new syntax is:

<meta charset="charset-name">

Note that the encoding declaration in XML declaration has no effect for HTML document.

No character encoding metadata is found in lower‐level protocol nor is there BOM, while character encoding $0 is not a superset of ASCII.

The document is not labeled with character encoding name in lower‐level protocol, e.g. in HTTP, and the document is not begin with BOM. In addition, the character encoding of the document is not a superset of ASCII. The document is non‐conforming.

Unless there is a BOM, the character encoding for the document must be specified in e.g. HTTP‐level, as:

Content-Type: text/html; charset=charset-name

Existence of HTML character encoding declaration, i.e. <meta charset="charset-name">, does not allow to omit charset parameter for HTML document encoded in non‐ASCII compatible encoding.

Character encodings Shift_JIS, Windows-31J, and ISO-2022-JP are not a superset of ASCII for the purpose of HTML conformance.

While parsing the document as $0, a character encoding declaration specifying character encoding as $1 is found. The document is reparsed.

While parsing a document in a character encoding, a character encoding declaration which declares the character encoding of the document as another character encoding is found. The occurence of this warning itself does not make the document non‐conforming. However, the failure of the first attempt to to detect the character encoding might be the result of non‐conformance of the document.

The document will be reparsed from the beginning. Some error or warning might be reported again.

These are suggestions to avoid this warning:

HTML5 Parse Errors in Tokenization Stage

Tag <$0> is not allowed after the end tag </html>.

The start or end tag of an element appears after the html element has been closed. The document is non-conforming.

Any content of the document other than comments must be put into the html element.

Tag <$0> is not allowed after the end tag </body>.

The start or end tag of an element appears after the body element has been closed. The document is non-conforming.

Any content of the document other than head contents and comments must be put into the body element.

The & character must introduce a reference.

An & character which is not part of any reference appears in the input stream. The document is non‐conforming.

Any & character in URI (or IRI) must be escaped as &amp;.

The & character must be the first character of a reference:

Named entity reference
&entity-name;
where entity-name is the name of the character entity to be referenced.
Numeric character reference
&#d;
where d is the decimal representation of the code position of the character to be referenced.
Hexadecimal character reference
&#xh;
where h is the hexadecimal representation of the code position of the character to be referenced.

To represent & as a data character, use named entity reference:

&amp;

A </ string is not followed by a tag name.

There is a < (U+003C LESS-THAN SIGN) character immediately followed by a / (U+005F SOLIDUS) character, which is not part of any end tag, in the input stream. The document is non-conforming.

The </ sequence immediately followed by an EOF is interpreted as a string data of </.

The </ sequence as string data must be escaped as:

&lt;/

A < character is not followed by tag name or by a ! character.

A < (U+003C LESS-THAN SIGN) character which is not part of any markup appears in the input stream.

The < character as a data character must be escaped as:

&lt;

The decimal representation of the code position of a character must be specified after &#.

An & (U+0026 AMPERSAND) character immediately followed by a # (U+0023 NUMBER SIGN) character which is not part of any reference appears in the input stream. The document is non-conforming.

The string &# must be the first two characters of a reference:

Numeric character reference
&#d;
where d is the decimal representation of the code point of the character to be referenced.
Hexadecimal character reference
&#xh;
where h is the hexadecimal representation of the code point of the character to be referenced.

To represent &# as data characters, use a named entity reference for the & character:

&amp;#

The hexadecimal representation of the code position of a character must be specified after &#x.

The string &#x or &#X which is not part of any reference appears in the input stream. The document is non-conforming.

The string &#x or &#X must be the first three characters of a hexadecimal reference:

&#xh;
where h is the hexadecimal representation of the code point of the character to be referenced.

To represent &#x as data characters, use a named entity reference for the & character:

&amp;#x

String <! is not followed by --.

There is a < (U+003C LESS-THAN SIGN) character followed by a ! (U+0021 EXCLAMATION MARK) character, which is not followed by a -- or !DOCTYPE. The document is non-conforming.

Comments
In HTML document, comments must be introduced by <!-- (<! immediately followed by two -s) and must be terminated by -->. Strings <! not followed by -- and <!- not followed by - are not valid open delimiters for comments.
Marked sections, including CDATA sections
Marked sections are not allowed in HTML document.
Markup declarations
Markup declarations, except for DOCTYPE and comment declarations, are not allowed in HTML document.
String <!
String <! must be escaped as &lt;!.

String </ is not followed by tag name.

There is a < (U+003C LESS-THAN SIGN) character immediately followed by a / (U+005F SOLIDUS) character, which is not part of any end tag, in the input stream. The document is non-conforming.

The </ sequence not followed by a tag name is parsed as an opening of bogus comment.

The </ sequence as string data must be escaped as:

&lt;/

There is a -- sequence in a comment.

There is a - (U+002D HYPHEN-MINUS) character at the end of the comment or a -- sequence in the comment. The document is non-conforming.

Comments cannot contain a string --, as in XML. Unlike SGML, there cannot be more than one comments (where comment is an SGML term) in the comment declaration.

There are two attributes with name $0.

There are more than one attributes with the same name in a tag. The document is non-conforming.

The motion attribute is not part of the HTML standard. Use img element with animation GIF instead.

Polytheistic slash (/>) cannot be used for this element.

Polytheistic slash (/>) must not be used for the element. The document is non-conforming.

The polytheistic slash can only be used for base, link, meta, hr, br, img, embed, param, area, col, and input elements.

<script/>

The polytheistic slash cannot be used for script element. Even for an empty script element, there must be an explicit end tag </script>.

NOTE: Though some user agents interpret polytheistic slash for script element as the closing of the element, such usage is not allowed under the current standard.

<basefont/>, <bgsound/>, <frame/>, <keygen/>, <spacer/>, <wbr/>
These elements are themselves non-conforming.
<command/>, <event-source/>, <nest/>, or <source/>
Future revision of HTML5 parsing algorithm is expected to allow polytheistic slash for these elements.
<a/>, <p/>
These elements are not always empty and therefore polytheistic slash is not allowed. Use explicit end tag to represent empty element as:
<p></p>

Note that, unlike in XML, the polytheistic slash has no effect in HTML.

Processing instruction (<?...>) cannot be used.

Processing instructions (<?...?>), including XML declaration (<?xml ...?>) and XML style sheet PI (<?xml-stylesheet ...?>), are not allowed in the HTML syntax. The document is non-conforming.

<?xbl?> (XBL Association)
An XBL binding cannot be associated by PI in HTML document. Use binding property in CSS style sheet as:
<style>
p {
  binding: url(binding.xbl);
}
</style>
<?xml?> (XML declaration)
XML declaration is unnecessary for HTML documents.
<?xml-stylesheet?> (XML style sheet PI)
Use HTML link element with rel attribute set to stylesheet (or, alternate stylesheet for an alternate style sheet).
<link rel=stylesheet href="path/to/stylesheet.css">
<?php?> or <? ... PHP code ... ?> (PHP code)
The conformance checker does not support checking for PHP source documents.
Other processing instructions
Processing instructions cannot be inserted in an HTML document. Use XML document or insert ProcessingInstruction node by scripting.

Web browsers will parse processing instructions as bogus comments. Some legacy Web browsers, such as IE:mac and some mobile Web browsers, will display processing instructions as string.

HTML5 Parse Errors in Tree Construction Stage

The $0 element cannot be inserted between head and body elements.

A start tag appears after the head element is closed but before the body element is opened. The document is non-conforming.

A DOCTYPE appears after any element or data character has been seen.

A DOCTYPE appears after any element or data character has been seen. The document is non-conforming.

The DOCTYPE must be placed before any tag, reference, or data character. Only white space characters and comments can be inserted before the DOCTYPE.

Anchor cannot be nested.

HTML a elements cannot be nested. The document is non-conforming.

In the HTML syntax, a start tag of the a implies the end tag of any opening a element.

Tag <$0> is not allowed in the body element.

The start or end tag of an element, which cannot be a descendant of body element, appears in the input stream while the body element has been opened. The document is non-conforming.

Start tag <head> is not allowed in the head element.

There is a start tag <head> in the <head> element. The document is non-conforming.

In an HTML document there must not be more than one head element, therefore no more than one start tag <head> can appear in the input stream.

Tag <$0> is not allowed in a table element.

The start or end tag of an element, which cannot be a child of table element, appears in the input stream while the table element has been opened but no other element has been opened. The document is non-conforming.

In table, only table related elements are allowed; any other element must be contained in td or th element to form a part of the table, or caption element to create a table caption.

Data character is not allowed in table.

A data character appears in table. The document is non-conforming.

In table, only table related elements are allowed; any other element and data character must be contained in td or th element to form a part of the table, or caption element to create a table caption.

Start tag of tr element is missing.

Start tag of a tr element, which is not optional, is missing. The document is non-conforming.

In a table section, a <tr> start tag must occur before any <td> or <th> start tag. Though the HTML5 parser implies the <tr> start tag before these start tags, it must be explicitly specified.

This document does not start with a DOCTYPE.

The document does not start with a DOCTYPE. The document is non-conforming.

An HTML document must start by a DOCTYPE:

<!DOCTYPE HTML>

Only white space characters and comments are allowed before the DOCTYPE. XML declaration is not allowed in HTML document.

Element $0 is not closed.

End tag of an element is not found before, for example, an end tag of another element appears or the end of the document. The document is non-conforming.

Only body, colgroup, dd, dt, head, html, li, ol, option, optgroup, p, rb, rp, rt, tbody, td, tfoot, th, thead, tr, ul end tag can be omitted in HTML documents. For any element except for void element, there must be an explicit end tag.

HTML canvas element
Though the element is void in earlier versions of Safari, the canvas element is no longer defined as empty. There must be an end tag </canvas>.

Note that misnesting tags, such as <a><b></a></b>, are not allowed and they also cause this error.

This <html> tag is not the first start tag.

There is a start tag of the html element that it not the first start tag in the input stream. The document is non-conforming.

In an HTML document, there cannot be more than one html element and therefore there cannot be more than one <html> tag. In addition, nothing can be placed before the <html> tag except a DOCTYPE, white space characters, and comments.

This document is written in an old version of HTML.

The document contains a DOCTYPE declaration that is different from HTML5 DOCTYPE (i.e. <!DOCTYPE HTML>). The document is non‐conforming.

The document might or might not be conformant to some version of HTML. However, conformance to any HTML specification other than HTML5 provides for no practical convenience, since Web borwsers will parse any HTML document (roughly) as defined in HTML5.

Element $0 is not opened.

An end tag appears though no element with the same name has been opened. The document is non-conforming.

For any end tag in HTML document, there must be a corresponding start tag.

HTML base, basefont, bgsound, br, col, embed, frame, hr, image, img, input, isindex, link, meta, param, spacer, or wbr element
End tag is not allowed for these elements, since those content must always be empty. Remove end tag.

Element Content Model Errors

Data character is not allowed in this context.

A data character appears where it is not allowed in this context. The document is non-conforming.

Possible causes:

There must be a $0 element as a child of this element.

The content model of the element is so defined that it must contain a $0 child element. The document is non-conforming.

HTML head element
There must be a title child element.
HTML html element
There must be a head child element followed by a body element.
HTML tr element
There must be one or more td or th child element.

There must be a td or th element as a child of this element.

The tr element must contain at least one td or th child element. The document is non-conforming.

This element is not allowed in this context.

An element appears where it is not allowed. The document is non-conforming.

Possible causes:

If the element with the error is an inline-level element, such as a, progress, or img

An inline-level element cannot be a child of certain sectioning elements such as body, section, and blockquote.

Any inline-level content must be put in e.g. paragraph element such as p.

If it is a block-level elements, such as aside, div, hn, p, or section
If the parent element is div, li, td, or th

The parent element allows either block-level or inline-level content. If there is a block-level content, any inline-level content must be put in e.g. paragraph element such as p.

For example, an HTML document fragment <div><p>Hello!</p> World!</div> is non-conforming, since a word World! does not belong to any paragraph. (If not part of any paragraph, what is it!?) A conforming example would be:

<div><p>Hello!</p> <p>World!</p></div>

If the parent element does not allow block-level elements as content
The element is not allowed to be inserted here. For example, a div element cannot be a child of an h1 element.
If the element with the error is a noscript element
The noscript element is allowed only in the context where a block-level or inline-level content is expected and in the head element. It cannot be used in e.g. ul, table, or select.
If the element with the error is blink, center, or marquee element
These elements are not part of the HTML standard. Use CSS for styling control.
button, datalist, fieldset, form, input, label, optgroup, option, output, rb, rp, rt, ruby, textarea, or textarea element
These elements are intentionally not supported by the conformance checker yet.

This element is not allowed as a root element.

An element that is not allowed as the root element is used as the root element of the document. The document is non-conforming, as far as the conformance checker can tell.

html element in an XHTML document

In XHTML document, the root html element must have an xmlns attribute as:

<html xmlns="http://www.w3.org/1999/xhtml">

rss element

The document is written in some version of RSS.

The conformance checker does not support any version of RSS. Use Atom 1.0 for feed documents.

feed element

The Atom feed element must be in the http://www.w3.org/2005/Atom namespace as:

<feed xmlns="http://www.w3.org/2005/Atom">

The conformance checker does not support Atom 0.3. Use Atom 1.0 for feed documents.

There is no $0 element before this element.

There must be an element before another element, but there is not. The document is non-conforming.

For example, there must be a dt element before any dd element.

Attribute Errors

Required attribute $0 is not specified.

A required attribute is not specified. The document is non-conforming.

Some attribute is defined as required. Without required attributes specified, user agents cannot provide full functionality of the element to the user.

HTML img element
The src attribute must be specified. Additionally, the alt attribute must be specified in many cases.
HTML link element
The rel attribute must be specified. Note that the rev attribute is obsolete.

Attribute {local-name} is not allowed for {element-local-name} element.

An attribute is specified where it is not allowed. The document is non-conforming.

HTML meta element
For HTML meta element, only one of name, http-equiv, or charset attribute is allowed.

The xml:lang attribute is not allowed in HTML document.

The xml:lang attribute is not allowed in HTML document. The document is non-conforming.

Use of the xml:lang attribute is conforming only in XML documents.

To specify natural language information in HTML document, use lang attribute instead.

XHTML 1.0 Appendix C was encouraged to specify both lang and xml:lang attributes with the same value. Such a duplication has no effect in practice. Use only one of lang (in HTML) or xml:lang (in XML).

The charset attribute is not allowed in XML document.

The charset attribute of a meta element is not allowed in XML document. The document is non-conforming.

To specify the character encoding used for serialization, if necessary, use XML declaration instead:

<?xml version="1.0" encoding="encoding-name"?>

The lang attribute is not allowed in XML document.

The HTML lang attribute is not allowed in XML document. The document is non-conforming.

The lang attribute in null namespace for HTML elements is conforming only in HTML documents.

To specify natural language information in XML document, use xml:lang attribute instead.

The xmlns attribute in the null namespace is not allowed in XHTML document. The document is non-conforming.

The xmlns attribute in the null namespace is not allowed in XHTML document.

This error should not occur in conformance-checking of static documents.

Attribute Value Errors

Character encoding name $0 is not registered.

The specified character encoding name is not registered to IANA. Use of registered character encoding name is a good practice to facilitate interoperability.

EUC-TW
EUC-TW is not registered. Unfortunately, there is no registered name for that character encoding. Use Big5 encoding with character encoding name Big5 if it is enough to represent the document.
ISO-2022-JP-1
ISO-2022-JP-1 is not registered, nevertheless this character encoding name is documented in RFC 2237. Use ISO-2022-JP-2 instead, since that character encoding is a superset of ISO-2022-JP-1.
ISO-2022-JP-3, ISO-2022-JP-3-plane1
These names are not registered and obsoleted in favor of ISO-2022-JP-2004 and ISO-2022-JP-2004-plane1.
ISO-2022-JP-2003, ISO-2022-JP-2003-plane1
These names are not registered and corrected to ISO-2022-JP-2004 and ISO-2022-JP-2004-plane1.
ISO-2022-JP-2004, ISO-2022-JP-2004-plane1
These names are not registered. Unfortunately, there is no registered name for these character encodings.
UTF-8N
UTF-8N is not registered. Character encoding name UTF-8 represents UTF-8 encoding with or without BOM.

WARNING: This error might be raised for a registered character encoding name, since the character encoding name database of the conformance checker is not complete yet.

$0 is a private character encoding name.

The specified character encoding name is a private name and not registered to IANA. Use of registered character encoding name is a good practice to facilitate interoperability.

x-euc-jp
Use EUC-JP for the Japanese EUC character encoding.
x-sjis
Use Shift_JIS for standard Shift encoding scheme of JIS coded character set, or Windows-31J for Microsoft standard character set as implemented by Microsoft Windows.

The specified value is syntactically not a character encoding name.

The attribute value must be a character encoding name. However, the specified value is not a character encoding name syntactically. The document is non‐conforming.

Character encoding name is a string of ASCII printable characters, up to 40 characters.

This attribute only allow a limited set of values and the specified value {@} is not one of them.

For this attribute only several values are allowed and the value of the attribute is not one of them. The document is non-conforming.

HTML meta element, http-equiv attribute

Only values Default-Style and Refresh are allowed.

Value Content-Type is obsolete; for charset declaration, the charset attribute can be used as:

<meta charset="charset-name">
... where charset-name is a name of the character encoding of the document, such as utf-8.

Values Content-Style-Type and Content-Script-Type are currently not allowed.

Value Keywords is not allowed. Use name attribute instead of http-equiv attribute.

Values Expires, Pragma, and Cache-Control are not allowed; use real HTTP header fields for cache control.

Character encoding declaration syntax <meta http-equiv="Content-Type" content="text/html; charset=charset-name"> is obsolete.

Old long character encoding declaration syntax <meta http-equiv="Content-Type" content="text/html; charset=charset-name"> is in use. The document is non‐conforming.

The new character encoding declaration syntax is:

<meta charset="charset-name">

This identifier has already been assigned to another element.

Character encoding name $1 is different from document character encoding $0.

The specified character encoding name is different from the character encoding of the document. The document is non‐conforming.

Browsing context name {@} is reserved.

The specified browsing context name is reserved. The document is non-conforming.

Names of browsing contexts starting with _ (U+005F LOW LINE) are reserved so that it must not be used.

Old version of HTML, non-HTML markup languages, and Web browsers define or implements special reserved browsing context names _blank, _main, and _replace. However, they are not conforming attribute values.

Attribute Value Warnings

Table Model Errors

This colspan attribute results in creating a table column that does not contain any cell anchored to it.

The table has no cell (td or th) in the last row.

This rowspan attribute results in creating a table row that does not contain any cell anchored to it.

The rowspan attribute value of the cell is so specified that it extends a table in the row axis. However, the extended row does not contain any cell by itself. The document is non-conforming.

For example, the table below is non-conforming:

<table>
<tbody>
<tr><td rowspan=2></td></tr>
</tbody>
</table>
... since the second row contains only a cell that spans between first and second rows.

Internet Media Type Warnings

{@}: An obsolete subtype is used.

{@}: A private (x- or x.) subtype is used.

{@}: The subtype is not registered to IANA.

URI (or IRI) Errors

The specified value is syntactically not an IRI reference.

The specified value does not satisfy the syntactical requirements for IRI references. The document is non-conforming.

Possible causes:

URI (or IRI) Should-level Errors

A dot-segment (. or ..) occurs in an absolute reference.

Dot-segment (. or ..) should not occur in an absolute reference.

In relative references, dot-segments are used to represent the current (.) or the parent (..) hierarchy of the path. Though they are also allowed in absolute references, it should be resolved to the canonical form before it has been published.

This IRI does not end with a /.

A lowercase hexadecimal digit is used in percent-encoding.

The hexadecimal digit in percent-encoding string in the IRI is in lowercase. Though the IRI is conforming, it should be in uppercase.

An unreserved character is percent-encoded.

An unreserved character is percent-encoded in the IRI. Though it is conforming, it should be in the decoded (or bare) form.

URI scheme name is in uppercase.

The scheme part of the IRI is written in uppercase letter.

Uppercase scheme names are not required to be processed correctly.

Cache Manifest Errors

This document is not a cache manifest.

The specified document is not a cache manifest. The document is non-conforming.

An entity labeled as Internet media type text/cache-manifest must contain a cache manifest.

A cache manifest must start with a line whose content is CACHE MANIFEST (exactly one space character between CACHE and MANIFEST).

Unsupported Messages

Conformance checking for element {local-name} is not supported; it might or might not be conforming.

The conformant checker does not support the element. It cannot determine whether the document is conforming or not.

Conformance checking for attribute {local-name} of element {element-local-name} is not supported; it might or might not be conforming.

The conformant checker does not support the attribute. It cannot determine whether the document is conforming or not.

Conformance checking for event handler attribute is not supported; it might or might not be conforming.

Conformance checking for media query is not supported; it might or might not be conforming.

Conformance checking for script language $0 is not supported; it might or might not be conforming.

Conformance checking for style language $0 is not supported; it might or might not be conforming.

Error Levels

Level Conforming? Description
MUST‐level error Non‐conforming. A violation to a hard requirement of the specification. The document is non‐conforming.
SHOULD‐level error Non‐conforming, but in some case conforming. A violation to a requirement of the specification. The violation might be legitimize in some case. Otherwise, the document is non‐conforming.
Warning Conforming. A warning is an advice from the conformance checker to avoid to solve a problem in a confusing or possibly wrong way. It does not affect to the conformance of the document, and may sometimes be inappropriate.
Not supported Unknown. Some feature that is not supported by the conformance checker is used in the document.

License of This Document

Copyright <w@suika.fam.cx>.

This document is free software; you can redistribute it and/or modify it under the same terms as Perl itself.