DataToolsLab
XML Tools

XML Validator

Check XML for well-formedness — unclosed tags, mismatched nesting, duplicate attributes — with line and column.

Loading tool…

What is XML Validator?

A well-formedness checker. It answers the question a parser asks first: is this a single XML document at all? That is a narrower and much more useful question than 'does it match my schema', which the XSD and DTD validators answer separately.

How it works

The parser scans the input once, tracking the open-element stack, the prolog rules and the character ranges XML allows. Each error carries the line and column where it was detected plus the context needed to fix it: the element still open, the tag actually found, the attribute name that repeats, or the code point that XML forbids anywhere in a document. Errors are sorted by position and warnings are kept separate.

  1. Paste the document. Drop in XML, a schema, a feed or an XPath expression. Everything is parsed in the page: no upload, no server round trip, and the tools keep working with the network switched off.
  2. Set the options that match your document. Indent unit, whether to keep comments, which dialect, which output method. The defaults are the safe ones — nothing that changes meaning is enabled for you.
  3. Read the result, then copy or download it. Results appear as you type, copy straight to the clipboard, and download with a sensible filename (.xml, .xsd, .csv). Reset returns every field to its default.

Examples

A minified document from an API response

Paste one line of XML and the Formatter indents it, wraps long start tags one attribute per line and normalises empty elements — without touching text inside mixed content.

An XPath that works in Chrome and not in your servlet

The XPath Tester evaluates against a real tree and reports the axis or function it cannot support, instead of returning zero nodes and letting you guess why.

A document that will not parse

The Validator gives line and column for every mismatched tag, stray ampersand and duplicate attribute, with the reason in words: which open element was expected, which was found.

A schema that only half matches your data

The XSD Validator marks each violation with the path of the offending node, and the Schema Generator goes the other way — inferring a starting-point XSD from real documents.

Common mistakes

Assuming a pretty-printer cannot change meaning

Whitespace between elements is often insignificant, but inside mixed content it is not: `<p>Hello <b>world</b></p>` must stay on one line. Formatting here re-indents element-only content and leaves mixed content alone.

Treating a validation pass as proof of interoperability

The DTD and XSD validators implement honest subsets. A document reported valid here can still be rejected by a full validator that understands identity constraints, substitution groups or XSD 1.1 assertions — each page lists what it does not cover.

Reading the whole document because the parser did

A DOCTYPE is not inert. If your parser resolves external entities, pasting an untrusted document is enough to read a file or call an internal URL. The XXE Risk Checker shows what a document asks for; the fix is in the parser configuration.

Forgetting that attributes and elements are not interchangeable

`<id>1</id>` and `id="1"` mean different things to every schema and every XPath. When converting to CSV or YAML the distinction is preserved (`@id`), because flattening it away is the change that costs an afternoon later.

Frequently asked questions

What is the difference between well-formed and valid?

Well-formed means the document follows XML's own syntax rules: one root element, tags closed in order, attributes quoted, no forbidden characters. Valid means it also matches a DTD or schema. A document can be perfectly well-formed and still be rejected by your blueprint — check both, with this tool and then the DTD or XSD validator.

Why is an HTML entity like &nbsp; an error?

XML defines only five named entities: &amp; &lt; &gt; &quot; and &apos;. Everything else must come from a DTD that declares it, or be written as a numeric reference such as &#160;. This catches the single most common cause of 'works in the browser, fails on the server'.

Is a BOM before the declaration a problem?

It is legal and common: XML permits a UTF-8 byte-order mark before the declaration. What is not legal is a BOM anywhere else, or a document whose declaration says one encoding while the bytes say another. Both are reported, and the Encoding Fixer can remove the mark.

Online