Validate XML with local XSD

XSD 1.0 via a libxml2-wasm 0.7.2 snapshot capped at 64 MiB.

  • Runs in your browser
  • No upload
  • Check before download

Inputs stay in this tab and are not uploaded or saved automatically. Optional aggregate usage counts and coarse processing diagnostics are sent only after consent, without input content or filenames. Clearing or closing loses inputs; save needed outputs first.

Formats and limits

XSD 1.0 via a libxml2-wasm 0.7.2 snapshot capped at 64 MiB. The main virtual name is schema.xsd; includes, imports and redefines need supplied ASCII file names, at most 16 files and 2 MiB in total, and no cycles. Up to 128 facets; patterns up to 512 characters. XSD 1.1 assertions are outside this profile. No DTD, implicit namespace lookup or network I/O. An XML declaration may leave out the encoding or declare UTF-8 (case-insensitive). Other encodings are rejected before the file is read or exported, and the output is always UTF-8.

UTF-8 only. Input up to 1 MiB; XML up to 100,000 UTF-16 units and depth 64; JSON up to 20,000 nodes. JSON Lines up to 16 MiB, 100,000 records and 1 MiB per value. Output up to 32 MiB. Queries run for up to 3 seconds and other jobs for up to 10 seconds in a worker you can cancel. XSD native memory is limited to 64 MiB; this is not the whole worker or DOM heap.

Explicit local XSD dependencies

How to use it

  1. Choose the source and mode

    Load the XML and its XSD 1.0 schema into their separate editors. Supply included or imported schemas as local files with matching ASCII basenames. The main schema’s virtual name is schema.xsd.

  2. Configure the domain parameters

    The loaded schema declares element value as xs:integer. The XML <value>7</value> is valid. If you replace 7 with seven, you get valid:false with validation messages, even though the XML itself is well formed.

  3. Inspect diagnostics and download

    Read valid and the line and column validation messages, then save the report. A schema compilation or reference error means validation could not run. That is not the same as XML failing a schema that compiled successfully.

Formats and limits

Why is this input rejected or empty?

Supply every local include and import explicitly, and match the filename case. Remote resources, cyclic dependencies, DTDs and XSD 1.1 assertions are outside the supported profile. A namespace declaration alone does not download a schema.

Which parser profile and limits apply?

XSD 1.0 via the qualified libxml2-WASM snapshot. Local dependencies are limited to 16 files/2 MiB, and native linear memory to 64 MiB. Pattern and facet guards and XML size guards may reject a schema that is valid but excessive.

Are inputs or referenced files sent to a server?

Parsing runs locally in a browser worker. URLs inside the input are not used to fetch remote documents. Supply any schema dependencies the tool supports as local files, keep your source file separately, and download the results before you close the page.