Validate an XML file against an existing XSD directly in the browser, including optional support files for xsd:include and xsd:import.
Last updated: August 26, 2026 | By Workshelve Team
Browser Validation
Status
Ready
Load or paste an XML document and schema, then run validation.
Supporting schemas
Add any imported or included XSD files here when your main schema references them by filename. New uploads are added to the current list, and uploading a file with the same name replaces that one entry.
XML lines
8
XSD lines
13
Root tag
Unknown
XML elements
0
XSD namespace nodes
0
Validation messages
Validation output will appear here after you run the XML/XSD check.
Formatted XML output
Formatted XML will appear here only when the validator returns normalized output.
Uses xmllint compiled to WebAssembly so validation follows libxml2 schema rules in the browser.
Upload additional XSD files when the main schema relies on xsd:include or xsd:import references, and keep those filenames aligned with the references in the schema.
Successful runs can return a normalized XML document that is easier to inspect, copy, or save. Formatting does not make an invalid document valid.
This tool uses xmllint-wasm, a WebAssembly build of libxml2, to validate an XML document against an XSD schema in the browser. A passing result means the document was checked and conformed to the supplied schema rules under that validator.
That is different from checking whether XML is merely well-formed. A document can have valid XML syntax and still fail schema validation because required elements, namespaces, ordering rules, attributes, data types, or occurrence constraints do not match the XSD.
A malformed schema can also fail before the document is meaningfully validated. That is why this tool now distinguishes an invalid document from a schema or runtime error.
If the schema uses xsd:include or xsd:import, upload those referenced files in the supporting schema area. The validator resolves them locally from the uploaded filenames; it does not fetch them from the network for you.
This is a libxml2-backed validator. It is useful for real browser-side XSD validation, but you should not assume it supports every modern XSD feature set, and it should not be presented as a universal XSD 1.1 validator.
Built-in sample: note.xml against note.xsd
The sample XML declares note.xsd and contains four child elements:to, from, heading, and body. The sample schema requires exactly that sequence under the root noteelement.
Expected result: Schema match. If you remove one required child element or change the order, the document should become schema-invalidwhile still being well-formed XML.
If your XML references a schema file name, keep the uploaded file names aligned with those references. For example, if the XML points to invoice.xsd, use that same file name when uploading the schema here.
When a schema imports or includes other files, upload those support files in the supporting schema section so the validator can resolve them locally without making network requests.
The stats tiles are convenience checks, not a full semantic explanation of your schema. They derive line counts, root tag names, and parsed element totals from the current text, but they do not replace the validator's actual schema result.
If the validator reports a schema or runtime error, check schema syntax first, then check imported filenames, namespace declarations, and whether the schema depends on features outside the supported validator behavior.