v1.2.2 — Now available

One language.
All formats.

UTL-X is an open-source, format-agnostic functional transformation language. Write your transformation once — run it on XML, JSON, CSV, YAML, and OData.

650+
Stdlib functions
5
Data formats
7
Schema formats
3
Runtimes
order-to-invoice.utlx
Transform
Output JSON
%utlx 1.0
input  xml   ← change to json, csv, yaml
output json
---
{
  invoice: {
    id:   "INV-" + $input.Order.@id,
    date: $input.Order.@date,

    customer: {
      name:  $input.Order.Customer.Name,
      email: $input.Order.Customer.Email
    },

    items: $input.Order.Items.Item
      |> map(item => {
           sku:   item.@sku,
           qty:   parseNumber(item.@quantity),
           total: parseNumber(item.@quantity)
                 * parseNumber(item.@price)
         }),

    total: sum($input.Order.Items.Item
      |> map(i => parseNumber(i.@qty)
                * parseNumber(i.@price)))
  }
}
Works with </> XML {} JSON ▦▦ CSV \t YAML $? OData ◎ Avro ⬡ Protobuf
Three products, one language

The right tool for every scale

From a one-liner in your terminal to a production pipeline handling millions of messages — UTL-X scales with you.

/ 01
utlx
CLI Tool
Your everyday transformation workhorse
  • Native binary — <100ms startup, 15MB footprint
  • jq-style inline expressions: -e '.name' -r
  • Instant format conversion: cat data.xml | utlx
  • CI/CD friendly, stateless, scriptable
  • macOS, Linux, Windows — brew & choco
Free & open source
/ 02
utlxd
IDE & Editor
Write transformations with full editor support
  • Theia-based — VS Code compatible, Electron or hosted
  • Language Server Protocol (LSP) daemon with built-in MCP server
  • Execution mode — three-panel editor: input · script · live output
  • Message Contract mode — schema-driven mapping design with UDM tree browser
  • AI-assisted Contract Coverage Analysis — instantly shows whether a mapping is functionally possible and pinpoints any gaps
Freemium · Cloud hosted
/ 03
utlxe
Production Engine
Enterprise-grade transformation at scale
  • Multi-transformation pipeline orchestration
  • Kafka & Pulsar integration via Dapr sidecar
  • Thread pools, back-pressure, hot reload
  • Prometheus metrics, health probes, KEDA auto-scaling
  • One-click deploy on Azure Marketplace
  • SDKs for any language — C#, Python, Go, Java, Node.js and more via Protobuf
Paid · Azure Marketplace
Any language. Any stack.
If your language supports Protobuf,
it supports UTLXe.

UTLXe communicates via piped I/O over Protobuf. Any language with a Protobuf implementation — which is essentially all of them — can integrate natively. Your code stays in your language. UTLXe handles the transformation.

C# Java Python Go Node.js Ruby Rust PHP Swift Kotlin Dart + any Protobuf language
Install

Up and running in 30 seconds

Native binaries for all platforms — no JVM required.

🍎 macOS
brew tap grauwen/utlx
brew install utlx
🪟 Windows
choco install utlx
Chocolatey package in moderation review.
Download binary directly ↗
🐧 Linux
curl -L https://github.com/grauwen/utl-x/releases/download/v1.2.2/utlx-linux-x64.bin -o utlx
chmod +x utlx && sudo mv utlx /usr/local/bin/
🐳 UTLXe Engine — Docker docker pull ghcr.io/grauwen/utlxe:latest Azure Marketplace ↗
Why UTL-X

The open alternative to DataWeave

Everything DataWeave does — without the MuleSoft contract. Everything jq does — for all formats, not just JSON.

Feature UTL-X DataWeave XSLT jq
Format agnostic (XML, JSON, CSV, YAML, OData)XML onlyJSON only
Open source✓ AGPL-3.0
Native binary (<100ms startup)~
Functional programming (map, filter, reduce)
Strong type system
650+ stdlib functions~~Limited
Production engine with Kafka / Dapr
Schema transformation (XSD ↔ Avro ↔ Protobuf)Partial
No vendor lock-inMuleSoft only

Ready to transform your data pipeline?

Join the open-source alternative to DataWeave. Free to use, free to fork, free forever.

↓ Download UTL-X ⭐ Star on GitHub 📖 Read the docs