Pure-Rust core
Conversions happen inside a single Rust binary. External tools only get involved when there is no Rust equivalent.
One desktop app. 40+ file formats. Drop a file in, pick an output format, get a converted file out. Fully offline. No accounts. No uploads.
No web upload spinners. No SaaS sign-ups. No 12 different tools, each for one format. Just a small native app that does the job.
Conversions happen inside a single Rust binary. External tools only get involved when there is no Rust equivalent.
Your files never leave your machine. No telemetry, no analytics, no third-party servers in the loop.
The desktop app gets out of your way: pick a file, pick a target format, click convert. Three controls, zero ceremony.
Same library powers a univert CLI — script batch jobs, drop it in CI, pipe it into Make.
Documents, spreadsheets, images, 3D meshes, audio, music notation, PDFs — the same workflow handles every format.
Source on GitHub, AGPL-3.0 licensed. Inspect it, fork it, audit it, embed it in your own pipeline.
If a Rust crate can do it well, Univert does it directly. For LilyPond engraving, OpenSCAD modeling, FFmpeg audio, or FluidSynth synthesis, Univert invokes the binary you already trust.
json ⇄ yaml ⇄ toml ⇄ json5 ⇄ xml ⇄ ini ⇄ jsonl ⇄ cbor ⇄ plistcsv ⇄ tsv → html, json, jsonl, json5, yaml, toml, xmlxlsx, ods → csv, tsv, json, json5, yamlparquet → csv, tsv, json, jsonl, json5, yamlvcf, ics → json, csv, yaml, …md ⇄ html ⇄ txt, rtf → html / md / txtepub → html, md, txtpdf → txt, md · html → pdf (via Typst)png, jpeg, webp, gif, bmp, tif, tga, ico, qoi, exr, hdr, dds, ff, pnm, jp2, psd → each other & avifsvg → png, pdf · typ → pdf, png, svg, htmlstl ⇄ objflac, ogg, mp3 ⇄ wavabc, ly → midi, pdf, png, ps, svgvia lilypond + abc2lyscad → csg, off, png, stlvia openscadwav → aac, mp3, flac, oggvia ffmpegmidi → wavvia fluidsynth + a SoundFontany image → jp2via opj_compressheic → any imageheif-convert / magick / sipspdf → pngvia pdftoppm or magick
Run univert --list in your shell for the complete, up-to-date registry.
Univert ships as two crates on crates.io. Pick the GUI for the desktop app (which includes the library) or the CLI on its own.
Drag-and-drop GUI. Pulls in the conversion library automatically.
$ cargo install univert-gui
Launch with univert-gui.
For batch jobs, CI pipelines and shell scripts.
$ cargo install univert
Then: univert input.csv output.json
$ univert notes.json notes.yaml
$ univert contacts.vcf contacts.json
$ univert logo.svg logo.png
$ univert song.abc song.midi # requires lilypond + abc2ly
$ univert part.scad part.stl # requires openscad
$ univert track.wav track.aac # requires ffmpeg
One app, every common format, your files stay on your machine.