HTML Guide
The placeholder attribute is used on <input> elements as text that appears in the form control when it has no value set. Only inputs of type email, number, password, search, tel, text, or url accept this attribute.
For example, an input of type hidden doesn’t accept a placeholder attribute as it makes no sense to specify text to appear when the input is empty, if that input is hidden.
The boolean required attribute can only be used with certain types of inputs. Check the input type is one of the allowed.
The required attribute, if present, indicates that the user must specify a value for the input before the owning form can be submitted.
The seamless attribute was proposed to be included in the HTML5 spec, but it wasn’t finally accepted, so it’s not a valid attribute for <iframe>.
The attribute st_title is not allowed on <span> elements.
This issue is commonly caused by an old integration of ShareThis via Drupal or other CMS - the old code used invalid attributes like displayText, st_url and st_title which were later changed to HTML5 custom data attributes.
The attribute st_url is not allowed on <span> elements.
This issue is commonly caused by an old integration of ShareThis via Drupal or other CMS - the old code used invalid attributes like displayText, st_url and st_title which were later changed to HTML5 custom data attributes.
The <textarea> element does not have a type attribute.
The HTML <textarea> element represents a multi-line plain-text editing control, and is useful when you want to allow users to enter a sizeable amount of free-form text, for example a comment on a review or feedback form.
There is no attribute validate on the <form> element. Perhaps you meant novalidate?
If the novalidate attribute is present on a <form>, indicates that the form is not to be validated during submission.
For example, while this form has a required attribute on its input, it won’t be enforced because form validation has been disabled using novalidate:
<form novalidate>
<label>City: <input required name="city"></label>
<input type="submit" />
</form>
An attribute has been found in an element, where the intended value is missing. A common cause is including the equal sign, but not passing anything after it.
For example:
<!-- This is missing the value for the style attribute, so it's invalid -->
<p style=></p>
<!-- This is explicitly passing a blank string as the value, so it's valid -->
<p style=""></p>
Using the xmlns:dt attribute in the <html> tag is invalid in HTML5 and triggers validation errors because custom XML namespaces are not supported in HTML.
HTML5 does not support arbitrary XML namespaces, as used in XHTML or other XML-based vocabularies. The attribute xmlns:dt is specific to XML serialization and not serializable as per XML 1.0 rules when used in HTML5 documents, which no longer use the XML namespace mechanism. The only allowed use of xmlns in HTML is for SVG and MathML in embedded contexts, under specific interoperability rules.
To resolve this, remove the xmlns:dt attribute entirely from your document and use a standard HTML <html> declaration.
Incorrect (causes validation error):
<html xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
</html>
Correct (W3C-compliant HTML5):
<!DOCTYPE html>
<html lang="en">
<head>
<title>No XMLNS Namespace</title>
</head>
<body>
<!-- Your content here -->
</body>
</html>
Remove XML-specific attributes from HTML documents to ensure compatibility and compliance with modern HTML standards.
Both xmlns:fb and xmlns:og attributes have been deprecated. If you’re using Facebook / Open Graph Protocol proprietary tags in you document, you can update the markup to the new syntax.
The xmlns:m attribute is an XML namespace declaration and not valid on the html element in HTML documents.
HTML5 does not support custom XML namespaces; they are only used in XML-based languages such as XHTML. The global xmlns:* attributes like xmlns:m are not allowed on the <html> element in HTML documents that use the text/html MIME type. This causes serialization and validation errors, especially with W3C HTML validation.
To fix this, remove the xmlns:m attribute from the <html> tag. If you need to use a namespace, your document should be XHTML and served as application/xhtml+xml, not as regular HTML.
Incorrect HTML (causes validation error):
<html xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
<head>
<title>Invalid Namespace Example</title>
</head>
<body>
<!-- Content -->
</body>
</html>
Correct HTML (remove the namespace declaration):
<!DOCTYPE html>
<html lang="en">
<head>
<title>Valid HTML Example</title>
</head>
<body>
<!-- Content -->
</body>
</html>
If you require usage of MathML, SVG, or other XML vocabularies, HTML5 already supports them natively without explicit namespace declarations. For Microsoft Office Markup Language (OMML), use proper XML/XHTML serialization and the correct MIME type if absolutely necessary. For typical web content, avoid custom XML namespaces in HTML5.
Remove the xmlns:o attribute from your HTML elements.
When working with HTML documents intended for the web, often using namespaces like in XML documents may result in validation issues under specific standards like the W3C HTML validator. The xmlns:o attribute is typically associated with XML or XHTML documents and may not align with HTML5’s requirements, causing serialization issues in environments expecting XML 1.0 compliance. These attributes are often seen in documents meant to incorporate Microsoft Office-specific XML schemas—information that HTML5 doesn’t require or recognize.
For HTML5 documents, consider restructuring the content to avoid unnecessary XML namespace attributes. HTML5 has evolved away from strict reliance on XML, focusing instead on a more simplified model.
Example:
Before:
<!DOCTYPE html>
<html xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>Page Title</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
After:
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
By removing the xmlns:o attribute, the document aligns with HTML5 standards without the unnecessary constraints of XML namespaces.
The attribute xmlns:serif is not valid. Check this guide for more information on this issue.
Remove the xmlns:svg attribute from the <svg> element, leaving only the valid xmlns attribute.
The xmlns attribute defines the XML namespace for the SVG and is correctly set to http://www.w3.org/2000/svg. The xmlns:svg attribute attempts to declare a prefixed namespace, which is unnecessary and invalid in both HTML and SVG served as XML (or embedded in HTML). The W3C validator flags this because HTML5 does not allow arbitrary XML namespace declarations beyond the standard SVG namespace; such prefixes are not used in HTML serialization.
Incorrect usage:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<!-- SVG content -->
</svg>
Correct usage:
<svg xmlns="http://www.w3.org/2000/svg">
<!-- SVG content -->
</svg>
Only xmlns="http://www.w3.org/2000/svg" is required for inline SVG in HTML.
The xmlns:v attribute is not valid in HTML5 and should be removed to ensure compliance with W3C standards.
The xmlns:v namespace attribute was historically used for VML (Vector Markup Language), mainly in legacy support for Internet Explorer. Modern HTML, particularly the living standard and HTML5, does not permit namespace declarations using xmlns attributes like xmlns:v. These are only valid in XML-based serializations, such as XHTML. Including xmlns:v in a standard HTML5 document results in validation errors because HTML does not support custom namespaces.
Incorrect HTML:
<!DOCTYPE html>
<html xmlns:v="urn:schemas-microsoft-com:vml" lang="en">
<head>
<title>VML Namespace Example</title>
</head>
<body>
<!-- Content -->
</body>
</html>
Corrected HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<title>VML Namespace Removed</title>
</head>
<body>
<!-- Content -->
</body>
</html>
Remove the xmlns:v attribute entirely to resolve the validator warning and ensure your HTML meets current standards. If you are not using VML, no further changes are necessary. If you require vector graphics, use SVG instead, which is fully supported in HTML5.
Using the attribute xmlns:w="urn:schemas-microsoft-com:office:word" in HTML is invalid because custom XML namespace declarations are not allowed in HTML5.
HTML5 does not support custom namespaces like xmlns:w, which are used in XML-based formats such as XHTML or Office documents, but not in regular HTML. The HTML parser ignores unknown attributes and does not treat them as namespaces, which can result in validation errors. Only predefined namespaces allowed by the HTML specification (such as the default for SVG or MathML) are supported via the appropriate embedding elements.
Correct HTML Example Without Custom Namespace:
<!DOCTYPE html>
<html lang="en">
<head>
<title>No Custom Namespace Example</title>
</head>
<body>
<p>Custom XML namespaces like <code>xmlns:w</code> are not valid in HTML5.</p>
</body>
</html>
Incorrect Example That Causes the Error:
<html xmlns:w="urn:schemas-microsoft-com:office:word">
<!-- ... -->
</html>
To fix the error, remove the xmlns:w attribute from your HTML. If you need to use Office-specific features or XML namespaces, use an appropriate XML-based format (such as XHTML or OOXML), but not standard HTML5.
An attribute could not be parsed from the HTML input, probably due to a typo. Check this guide for a related HTML issue.
An invalid attribute has been found on an element. Check the affected tag to ensure attributes are well-formed, and if they are you can consider using custom data attributes.
The xmlns:dt attribute is not permitted on standard HTML elements according to the HTML specification.
HTML5 does not use XML namespaces like xmlns:dt, which are only valid in certain XML vocabularies such as XHTML or when embedding MathML or SVG. In typical HTML, attributes with xmlns or any custom XML namespace prefixes are invalid and cause validation errors.
To fix this issue, simply remove the xmlns:dt attribute from your HTML tags.
If you are using a data attribute or a custom attribute, you can use data-* attributes instead, which are allowed in HTML5.
Incorrect usage with xmlns:dt:
<div xmlns:dt="urn:schemas-microsoft-com:datatypes">
Content here
</div>
Correct usage—attribute removed:
<div>
Content here
</div>
If you need to store custom data, use data-* attributes:
<div data-dt="urn:schemas-microsoft-com:datatypes">
Content here
</div>
Avoid using XML namespaces in HTML5 documents to ensure your code is standards-compliant.
FBML - Facebook Markup Language was used to embed Facebook-specific tags on web sites, was retired in 2011 but this still appears on <html> tags on some sites. You should consider removing this from your site and use alternative ways to do that.
The xmlns:m attribute is not permitted on the html element in HTML5 documents.
HTML5 allows only certain attributes on the html element, specifically lang and dir (and the standard xmlns in XHTML serialization contexts), but not custom XML namespaces like xmlns:m. The xmlns:m attribute is typically used in XML-based documents (such as MathML or Office markup) and is not valid in standard HTML5 syntax.
To resolve the error, remove the xmlns:m attribute from the html element. If you need to use namespace-prefixed elements or attributes (such as for Office documents or MathML), you should use XHTML serialization (served as application/xhtml+xml) or rework your markup to be fully compatible with HTML5 without custom namespaces.
Incorrect usage:
<!DOCTYPE html>
<html xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
<head>
<title>Invalid Namespace Example</title>
</head>
<body>
<!-- Content here -->
</body>
</html>
Correct HTML5 usage:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Valid HTML Example</title>
</head>
<body>
<!-- Content here -->
</body>
</html>
If you require namespaces for specific elements (like MathML), use them directly without declaring a namespace on the html element, or switch to XHTML if your application truly requires namespace declarations. For most web applications, sticking to standard HTML5 elements and attributes ensures maximal compatibility and validator compliance.
The “xmlns:o” attribute is not allowed because it is not part of the standard HTML attributes and typically appears due to improperly embedded XML or Office-related HTML content.
In HTML documents, the “xmlns” attribute is used to declare a namespace and is generally valid for certain elements when dealing with XML documents or XHTML. However, the “xmlns:o” attribute specifically relates to XML namespaces typically used in Microsoft’s Office XML formats (for example, when copying and pasting styled content from Word to an HTML editor). Since HTML5 doesn’t natively support these namespaces as valid HTML attributes and strictly validates against them, any non-standard attributes like “xmlns:o” generate validation errors.
To fix this issue, you should remove the “xmlns:o” attribute unless you are sure that it’s necessary for the function of your document, and the document should be processed in a way that supports such namespaces. If the content is not meant to include Office-specific data elements, it’s likely this attribute was accidentally included and can be safely removed.
Example of Incorrect HTML with “xmlns:o”
<!DOCTYPE html>
<html>
<head>
<title>Sample Document</title>
</head>
<body xmlns:o="urn:schemas-microsoft-com:office:office">
<p>This is a paragraph within a body tag falsely including an xmlns:o attribute.</p>
</body>
</html>
Corrected Example without “xmlns:o”
<!DOCTYPE html>
<html>
<head>
<title>Sample Document</title>
</head>
<body>
<p>This is a paragraph within a correctly structured HTML document.</p>
</body>
</html>
By removing the “xmlns:o” attribute, the HTML document complies with the W3C standards, leading to successful validation. If you require namespaces for XML processing, it’s essential to handle them outside the context of standard HTML or within an XML or XHTML document structure where such namespaces are appropriate and valid.
The old way for using Open Graph Protocol tags in web pages is not valid HTML5, you should use the updated markup as specified in https://ogp.me
As an example, the following is the Open Graph protocol markup for The Rock on IMDB:
<!DOCTYPE html>
<html lang="en" prefix="og: https://ogp.me/ns#">
<head>
<title>The Rock (1996)</title>
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="https://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="https://ia.media-imdb.com/images/rock.jpg" />
</head>
</html>
The attribute xmlns:serif is not a valid namespace. This attribute is set by Affinity Designer on SVG exports.
The xmlns:svg attribute is not allowed on the <svg> element in HTML5 and causes validation errors.
The SVG specification only requires the xmlns (not xmlns:svg) attribute for embedding SVG in HTML, and custom namespace prefixes like xmlns:svg are not needed or permitted in HTML5. The sole required namespace declaration is xmlns="http://www.w3.org/2000/svg". The xmlns:svg form was only used in extremely outdated XML-based workflows and has no place in current HTML.
Incorrect HTML Example:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<!-- SVG content here -->
</svg>
Correct HTML Example:
<svg xmlns="http://www.w3.org/2000/svg">
<!-- SVG content here -->
</svg>
In summary:
- Use only xmlns="http://www.w3.org/2000/svg" in inline SVG within HTML documents.
- Remove xmlns:svg and any other prefixed namespace attributes unless specifically required for XML workflows, not HTML.