Transform XML with local XSLT
XSLT 1.0 in a local worker, with string parameters and XML or text output of your choice.
- 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
XSLT 1.0 in a local worker, with string parameters and XML or text output of your choice. Templates, loops, sorts, keys and attribute value templates use a real XPath parser. document(), imports and includes, extensions and dynamic evaluation are blocked. Result DOM nodes and strings and template depth are bounded. Native browser XSLT is never used, and results are shown as inert text, not live HTML. 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.
How to use it
- Choose the source and mode
Load the XML and an XSLT 1.0 stylesheet separately. Select XML or text output and add named string parameters. Start from the loaded example rather than pasting a whole XSLT 3 application.
- Configure the domain parameters
The loaded XML has Alice and Bob with IDs 001/002. With the parameter prefix=Local and XML output, the result contains <person id="001">Local Alice</person> and the matching Local Bob element.
- Inspect diagnostics and download
Check the serialized output, then download it. The text method gives plain text. The XML method gives markup that is shown as text and not rendered as an HTML page. Parameter values are literal strings, not executable expressions.
Formats and limits
Why is this input rejected or empty?
Check the XML and stylesheet syntax, the namespaces and the parameter names. document(), stylesheet imports and includes, extension functions and dynamic evaluation are blocked. Changing the output selector can't enable XSLT versions or features that are not supported.
Which parser profile and limits apply?
XSLT 1.0 that runs in the worker with limits on templates, result nodes and strings. It is not the browser’s native XSLT engine. There are no remote resources and no general program execution. Large or recursive transformations may hit the limits, so simplify them.
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.