---
name: "xo_options"
section: "7"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/xo_options"
---

# xo\_options(7)

common options for libxo-based commands

## NAME

**xo\_options** – common options for libxo-based commands

## DESCRIPTION

**libxo** allows the rendering of data into various output styles, including *text*, *XML*, *JSON*, and *HTML*. **libxo** uses command line options to trigger rendering behavior. Options are recognised in three forms:

- \--libxo \<options\>

- \--libxo=\<options\>

- \--libxo:\<brief-options\>

The first two forms accept a comma-separated set of words, detailed below, while the third form accepts a set of letters, also below. The triggered functionality is identical.

| |
| --- |
| **Option** **Action** |
| color Enable colors/effects for display styles (TEXT, HTML) |
| flush Flush after each emit call |
| flush-line Flush each line of output |
| html Emit HTML output |
| indent=xx Set the indentation level |
| info Add info attributes (HTML) |
| json Emit JSON output |
| keys Emit the key attribute for keys (XML) |
| log-gettext Log (via stderr) each [gettext(3)](/gettext/3.md) string lookup |
| log-syslog Log (via stderr) each syslog message (via xo\_syslog) |
| no-humanize Ignore the {h:} modifier (TEXT, HTML) |
| no-locale Do not initialize the locale setting |
| no-retain Prevent retaining formatting information |
| pretty Emit pretty-printed output |
| retain Force retaining formatting information |
| text Emit TEXT output |
| underscores Replace XML-friendly |
| units Add the 'units' (XML) or 'data-units (HTML) attribute |
| warn Emit warnings when libxo detects bad calls |
| warn-xml Emit warnings in XML |
| xml Emit XML output |
| xpath Add XPath expressions (HTML) |

The brief options are a set of single-letter aliases for the longer terms, used as a single string:

| |
| --- |
| **Value** **Equivalent Token** |
| c |
| f flush |
| F flush-line |
| H html |
| I info |
| i\<num\> indent=\<num\> |
| J json |
| k keys |
| n no-humanize |
| P pretty |
| T text |
| U units |
| u underscore |
| W warn |
| X xml |
| x xpath |

Most of these option are simple and direct, but some require additional details:

*flush-line* performs line buffering, even when the output is not directed to a TTY device.

*info* generates additional data for HTML, encoded in attributes using names that state with "data-".

*keys* adds a "key" attribute for XML output to indicate that a leaf is an identifier for the list member.

*no-humanize* avoids "humanizing" numeric output (see [humanize\_number(3)](/humanize_number/3.md) for details).

*no-locale* instructs **libxo** to avoid translating output to the current locale.

*no-retain* disables the ability of **libxo** to internally retain "compiled" information about formatting strings.

*underscores* can be used with *JSON* output to change *XML* *-friendly* names with dashes into *JSON* *-friendly* name with underscores.

*warn* allows **libxo** to emit warnings on stderr when application code make incorrect calls. *warn-xml*, *causes*, *those*, *warnings*, *to*, *be*, *placed*, *in* *XML* inside the output.

## EXAMPLES

The following are three example invocations of [ps(1)](/ps/1.md):

```
      ps --libxo json,pretty,warn -ux
      ps --libxo=xml -lg
      ps --libxo:Hxc 1
```

## SEE ALSO

[libxo(3)](/libxo/3.md), [xo\_format(5)](/xo_format/5.md)

## HISTORY

The **libxo** library first appeared in FreeBSD 11.0.

## AUTHORS

**libxo** was written by Phil Shafer ⟨*phil@freebsd.org*⟩.
