Univert
The universal file converter — a single CLI that converts between 40+ file formats, preferring pure-Rust libraries and shelling out only for tools with no Rust equivalent (LilyPond, OpenSCAD, FFmpeg).
For the desktop version, see
univert-gui.
Install
Usage
Flags:
-f, --force— overwrite existing output-l, --list— print every supported conversion and exit-s, --split— split source file into several target files (csv/tsv → json)-h, --help,-V, --version
Examples:
Supported conversions
Pure-Rust (no external tool required):
| From | To |
|---|---|
| json, yaml, json5, toml, xml, ini | each other (via JSON) |
| csv, tsv | html, json, json5, yaml, toml, xml, and each other |
| xlsx, ods | csv, tsv, json, json5, yaml |
| vcf | csv, tsv, json, json5, yaml |
| ics | json, json5, yaml |
| md | html |
| html | md |
| epub | html, md |
| rtf | txt, md |
| txt | |
| bmp, dds, exr, ff, gif, hdr, ico, jpeg, png, pnm, qoi, tga, tif, webp | each other + avif |
| psd, jp2 | any encodable image format |
| svg | png, pdf |
| stl ↔ obj | each other |
| flac | wav |
| ogg, mp3 | wav |
| midi | wav (requires a SoundFont .sf2 on disk) |
Shell-out to external tools when available:
| From | To | Required binary |
|---|---|---|
| abc, ly | midi, pdf, png, ps, svg | lilypond, abc2ly |
| scad | csg, off, png, stl | openscad |
| wav | aac, mp3, flac | ffmpeg |
Run univert --list for the complete registry.
Library
use Path;
let opts = Options ;
convert?;
# Ok::
License
AGPL-3.0-or-later