Indent XML with 2 or 4 spaces or tabs, or minify it. Reports the first broken tag by line. Nothing leaves your browser.
Format puts every tag, comment, processing instruction and DOCTYPE on its own line and indents each level by 2 spaces, 4 spaces or one tab. Attribute values are never touched and keep their own quote marks. Only the spacing around them is tidied: no spaces around the equals sign, one space between attributes, and a self-closing tag is written with no space before the slash. Element names, text and entities such as & and © stay exactly as you typed them, because the tool does not resolve entities. Line breaks of any kind in your input are read as one break each, and the result uses a plain line break.
Some elements hold both text and other markup, such as a paragraph with one bold word inside a sentence. Moving the bold tag onto its own line would add a space or a line break inside the sentence, and that can change what the document says. So the rule is simple: an element that has text (or a CDATA section) next to child elements, comments or processing instructions is copied from its opening tag to its closing tag exactly as written, whitespace included, and everything inside it stays inline. An element with only text stays on one line with the whitespace around the text trimmed. An element with nothing but whitespace is written as an empty pair of tags. Whitespace between elements is dropped, since in element-only content it has no meaning for most formats.
The tool reads the markup in one pass and stops at the first problem, with a fixed message that starts with the line number, such as Line 12: closing tag does not match the open tag. It checks that tags nest and close in the right order, that tag names match exactly (case counts), that comments, CDATA sections, processing instructions and tags are finished, that attributes are written name="value" with quotes and are not repeated, that a < in text is written as <, that every & in text and in attribute values starts an entity reference (&, © or ©), that there is a single root element and that no text sits outside it. The line is where the tag starts. For a tag that is never closed it is the innermost tag still open at the end. The message never repeats your content. It does not check a schema or a DTD, does not follow namespaces, and treats any named reference of the form &name; as a reference without checking a DTD, so passes here although a strict parser would need it declared, and a DOCTYPE is only read to its end, so a document can pass here and still be rejected by a stricter validator.
Minify removes the line breaks and indentation between tags and applies the same mixed-content rule, so text inside a sentence keeps its spaces. Keep comments is on by default; turn it off to drop every comment from the result. The result shows the number of elements, the deepest level and the character counts before and after. Text up to 1,000,000 characters is accepted, and very deep nesting with wide indents can make the result larger than 5,000,000 characters, in which case a message asks you to use less text. All of it runs in your browser. The XML is not uploaded or stored, and only your choices (such as the indent) are remembered.
It mixes text with other tags, for example a sentence with a bold tag inside. Adding line breaks there would add spaces to the text, so the whole element is kept exactly as written. Elements that hold only other elements are indented as usual.
No. It checks only that the markup is well-formed: tags nest and close correctly, attributes are quoted and there is one root. It does not read an XSD, a DTD or a namespace, and an & must be written as an entity reference, such as &, but named references are not looked up in a DTD.
It is the line where the problem tag starts, counting from 1. For a closing tag that does not match, it is the line of the closing tag. For a tag that is never closed, it is the line of the innermost tag still open at the end.
No. Quoted values are read as a whole, so a title attribute holding 1 > 0 is fine. A less-than sign inside normal text is a problem, because XML needs < there.
No. The text is processed in your browser, in this tab, and no server receives it. Closing the tab clears it. Google Analytics counts visits, results and copy presses, never the text.