- Unified API — dictionary-style
get/set/removeacross all writable formats - Automatic format detection — magic bytes, extension, and content analysis
- Easy wrappers —
EasyID3andEasyMP4for human-readable key names ("artist"instead of"TPE1") - Async support — optional Tokio-based async I/O (
asyncfeature flag) - Serialization — optional serde support for JSON, TOML, and more (
serdefeature flag) - Cross-format tag conversion — transfer metadata between any two formats with
convert_tags()(optionalserdefeature for serializable reports) - Tag diffing — compare metadata between files or snapshots with
diff_tags(), with support for normalized cross-format comparison, filtering, and pretty-printing (optionalserdefeature for serializable diff results) - Structured logging — optional tracing integration for observability (
tracingfeature flag) - Flexible I/O — load from file paths, in-memory buffers, or any
Read + Seeksource - Batch tag updates — update multiple tags at once with
file.update() - Stream info — sample rate, bitrate, channels, duration, bits per sample
Installation
[]
= "0.2.0"
# With optional features:
# audex = { version = "0.2.0", features = ["async"] }
# audex = { version = "0.2.0", features = ["serde"] }
# audex = { version = "0.2.0", features = ["tracing"] }
Feature Flags
| Feature | Description |
|---|---|
async |
Tokio-based async file I/O (load_async, save_async) |
serde |
Serialize/deserialize all public types to JSON, TOML, and any serde-supported format |
tracing |
Structured logging via the tracing crate for observability and debugging |
All features are opt-in and zero-cost when disabled.
See the
examples/directory for reading tags, writing tags, and file operations.
Supported Formats
| Format | Tag System | Tags | Stream Info |
|---|---|---|---|
| MP3 | ID3v1, ID3v2 | R/W | Yes |
| FLAC | Vorbis Comments | R/W | Yes |
| MP4 / M4A / M4B | iTunes atoms | R/W | Yes |
| Ogg Vorbis | Vorbis Comments | R/W | Yes |
| Ogg Opus | Vorbis Comments | R/W | Yes |
| Ogg Speex | Vorbis Comments | R/W | Yes |
| Ogg FLAC | Vorbis Comments | R/W | Yes |
| Ogg Theora | Vorbis Comments | R/W | Yes |
| WAV | ID3v2 | R/W | Yes |
| AIFF | ID3v2 | R/W | Yes |
| WavPack | APEv2 | R/W | Yes |
| Monkey's Audio | APEv2 | R/W | Yes |
| Musepack | APEv2 | R/W | Yes |
| OptimFROG | APEv2 | R/W | Yes |
| TAK | APEv2 | R/W | Yes |
| TrueAudio | ID3v1/v2, APEv2 | R/W | Yes |
| ASF / WMA | ASF attributes | R/W | Yes |
| DSF (DSD) | ID3v2 | R/W | Yes |
| DSDIFF (DFF) | ID3v2 | R/W | Yes |
| AAC (ADTS/ADIF) | — | — | Yes |
| AC-3 / E-AC-3 | — | — | Yes |
| SMF / MIDI | — | — | Duration |
WebAssembly
Audex ships with WASM bindings in the wasm/ crate, bringing full tag reading, writing, and stream info to browsers and Node.js — no filesystem access required.
See the wasm/examples/ directory for reading, writing, and extracting tags via Node.js.
Pre-built packages for web and Node.js are attached to each GitHub Release. To build from source:
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Audex by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.