Xq
Command-line XML and HTML beautifier and content extractor
Install / Use
/learn @sibprogrammer/XqREADME
xq
Command-line XML and HTML beautifier and content extractor.

Features
- Syntax highlighting
- Automatic indentation and formatting
- Automatic pagination
- Node content extraction
Usage
Format an XML file and highlight the syntax:
xq test/data/xml/unformatted.xml
xq also accepts input through stdin:
curl -s https://www.w3schools.com/xml/note.xml | xq
HTML content can be formatted and highlighted as well (using -m flag):
xq -m test/data/html/formatted.html
Format multiple files at once:
xq test/data/xml/unformatted.xml test/data/xml/unformatted2.xml
In place formatting is supported as well (using -i flag):
xq -i test/data/xml/unformatted.xml
It is possible to extract the content using XPath query language.
-x parameter accepts XPath expression.
Extract the text content of all nodes with city name:
cat test/data/xml/unformatted.xml | xq -x //city
Extract the value of attribute named status and belonging to user:
cat test/data/xml/unformatted.xml | xq -x /user/@status
See https://en.wikipedia.org/wiki/XPath for details.
It is possible to use CSS selector to extract the content as well:
cat test/data/html/unformatted.html | xq -q "body > p"
Extract an attribute value instead of node content additional option --attr (-a) can be used:
cat test/data/html/unformatted.html | xq -q "head > script" -a "src"
Extract part of HTML with tags (not only text content) using CSS selector:
cat test/data/html/unformatted.html | xq -n -q "head"
Output the result as JSON:
cat test/data/xml/unformatted.xml | xq -j
This will output the result in JSON format, preserving the XML structure. The JSON output will be an object where:
- XML elements become object keys
- Attributes are prefixed with "@"
- Text content is stored under "#text" if the element has attributes or child elements
- Repeated elements are automatically converted to arrays
- Elements with only text content are represented as strings
Installation
The preferable ways to install the utility are described below.
For macOS, via Homebrew:
brew install xq
For macOS, via MacPorts:
sudo port install xq
For Linux using custom installer:
curl -sSL https://bit.ly/install-xq | sudo bash
For Linux using custom installer, changing INSTALL_DIR, without sudo:
curl -sSL https://bit.ly/install-xq | INSTALL_DIR=$(pwd) bash
For Ubuntu 22.10 or higher via package manager:
apt-get install xq
For Fedora via package manager:
dnf install xq
A more detailed list of Linux distros that package the xq utility can be found here:
https://repology.org/project/xq-sibprogrammer/versions
If you have Go toolchain installed, you can use the following command to install xq:
go install github.com/sibprogrammer/xq@latest
You can play with the xq utility using the Dockerized environment:
docker compose run --rm xq
xq /opt/examples/xml/unformatted.xml
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
347.0kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
