XML Validator
Check that XML is well-formed: prolog version, matched tags, and closed quotes.
🔒 Processed entirely in your browser — nothing you enter here is ever uploaded.
The result appears on this page after you run the tool. Nothing you enter is uploaded.
Result
About this tool
Paste XML and run the check. If the text begins with an XML prolog, that prolog must contain the characters version=. A prolog without it fails on line 1. After the prolog, CDATA sections are replaced with a placeholder before tags are scanned, so a < inside CDATA is not treated as markup. Comments that start with !-- must end with -->. Other names that start with ! or ? are skipped. A tag name may include letters, digits, underscore, dot, colon, and hyphen. A closing tag has to match the open tag on top of the stack, and the comparison keeps the original case, so </Note> does not close <note>.
<note>hi</note> passes, and the message is XML syntax is valid. <note>hi fails as an unclosed note tag, reported on the line where <note> was opened. A <note> closed by </item> fails as a mismatched tag and names the tag that was expected. An attribute quote that is still open at the > fails as malformed attributes. The page reprints a few lines around the reported line and draws a caret when it has a column. One error stops the scan; you fix it and run again.
This is a well-formedness check. No XSD or DTD is loaded, and a colon in a name is only a character in that name. An xmlns attribute is not checked against a declaration. Invalid characters outside of tags are not hunted down by a separate rule. The document stays in the browser. A schema validator is a different tool.
Example. <note>hi</note> is accepted. <note>hi is reported as an unclosed note tag. A note start tag closed by </item> is a mismatched tag.
Limit. The parser checks well-formedness. It does not validate against an XSD or DTD, and tag names are compared with their original case.
What does an online XML validator check here?
It checks well-formedness. If a prolog is present it must contain version. CDATA sections are blanked out before the tag scan so markup-like text inside them is not treated as tags. A closing tag must match the last open tag, including case. An unclosed quote inside a tag is an error.
Does it validate an XSD, a DTD, or namespaces?
No schema or DTD is loaded. A name may contain letters, digits, underscore, dot, colon, and hyphen, so a prefix is just part of the name string. xmlns attributes are not checked for a matching declaration. <note>hi</note> passes. <note>hi fails as an unclosed note tag.
Where does the error point?
The message names the line. When the checker has a column, the page reprints a few lines around that line and draws a caret under the column. The same report can be copied or downloaded. The XML you paste is not sent to a server.