XSD Validator

Validate an XML document against an XSD schema and list every violation with its line number, using the real libxml2 engine. Free, no upload.

🔒 The schema and document are parsed and validated in your browser with libxml2 (WebAssembly) — nothing is uploaded.

Validate XML against an XSD schema

Paste an XML document and an XSD (XML Schema Definition), and this tool checks the document against the schema, listing every rule it breaks — a missing required element, elements out of order, a value that violates a datatype such as xs:positiveInteger or xs:date, or a missing required attribute. Each violation is reported with the line number where libxml2 found it, so you know exactly where to fix it.

Enterprise and SOAP schemas, no Java toolchain

Validation is powered by libxml2 compiled to WebAssembly — the same engine behind xmllint --schema — so it understands the complex types, namespaces and datatype facets that enterprise and SOAP schemas rely on. The schema must be one self-contained document: there is a single XSD box and no file system behind it, so an xs:include, or an xs:import whose schemaLocation names another file, cannot be fetched. Everything runs in your browser: your schema and document never leave your device, and you need no local xmllint, XSD library, or Java/.NET toolchain installed.

Frequently asked questions

Which XSD versions are supported?

XML Schema 1.0, via the libxml2 engine (the same one xmllint uses). It handles complex types, sequences, namespaces and datatype facets. Paste one self-contained schema: there is a single XSD box and no file system behind it, so an xs:include, or an xs:import whose schemaLocation names another file, cannot be loaded.

Why is each violation shown with a line number?

libxml2 records where in the XML document each violation occurred, so every message is shown as "Line N: …" to point you straight at the offending element or attribute.

Is my XML or schema uploaded anywhere?

No. Both the schema and the document are parsed and validated locally in your browser with libxml2 compiled to WebAssembly — nothing is sent to a server.