#xmp #metadata


Rust-language bindings for Adobe's XMP Toolkit

36 releases (6 stable)

new 1.2.0 Mar 18, 2023
1.0.2 Feb 9, 2023
1.0.0 Dec 19, 2022
0.7.6 Nov 6, 2022
0.1.6 Nov 26, 2020

#26 in Images

Download history 189/week @ 2022-11-28 188/week @ 2022-12-05 263/week @ 2022-12-12 376/week @ 2022-12-19 93/week @ 2022-12-26 90/week @ 2023-01-02 225/week @ 2023-01-09 189/week @ 2023-01-16 152/week @ 2023-01-23 383/week @ 2023-01-30 538/week @ 2023-02-06 395/week @ 2023-02-13 380/week @ 2023-02-20 524/week @ 2023-02-27 829/week @ 2023-03-06 337/week @ 2023-03-13

2,136 downloads per month
Used in 2 crates (via c2pa)


112K SLoC

C++ 68K SLoC // 0.2% comments C 31K SLoC // 0.1% comments Rust 11K SLoC // 0.0% comments Shell 1K SLoC // 0.3% comments Automake 253 SLoC // 0.5% comments Batch 228 SLoC // 0.2% comments Python 60 SLoC // 0.6% comments

XMP Toolkit bindings for Rust

CI Latest Version codecov

Adobe's Extensible Metadata Platform (XMP) is a labeling technology that allows you to embed data about a file, known as metadata, into the file itself. More information on how partners and standards are using XMP is available at the XMP website.

Key features

This XMP Toolkit crate implements a subset of the XMP metadata standard. This toolkit allows a desktop or mobile application to:

  • Parse XMP metadata found in many file formats.
  • Inspect and modify the XMP data model.
  • Embed and update XMP metadata in many file formats.

The XmpMeta struct contains most of the API functions for these features and is the best place to get started in understanding this crate.

Contributions and feedback

We welcome contributions to this project. For information on contributing, providing feedback, and about ongoing work, see Contributing.


The toolkit requires Rust version 1.60.0 or newer.

Crate features

  • chrono - When enabled, adds conversions between XmpDateTime and chrono::DateTime<FixedOffset>. (Disabled by default.)

Supported platforms

The toolkit has been tested on the following operating systems:

  • Windows

    • Only the MSVC build chain is supported on Windows. As discussed in #155, we would welcome a PR to enable GNU build chain support on Windows.
  • MacOS (Intel and Apple silicon)

  • Ubuntu Linux on x86 and ARM v8 (aarch64)

    • On ARM, the minimum supported Rust version (MSRV) is 1.60.0.

C++ XMP Toolkit

This crate incorporates the June 2022 version of the C++ Adobe XMP Toolkit SDK.

When a newer version of the C++ XMP Toolkit is incorporated, a new minor (1.x.0) version of this crate will be released.

Upgrading from earlier versions

This API is considered to to be stable; in other words, no further breaking changes are anticipated. For instructions on how to upgrade from various 0.x versions to 1.x, see the Upgrading guide.

Minor, non-breaking additions to the API surface may be added as the few remaining APIs in the C++ XMP_Meta, XMP_Files, TXMPUtils interfaces are exposed. Such changes will trigger minor (1.x.0) version increments when they happen.


Add this to your Cargo.toml:

xmp_toolkit = "1.2.0"


The xmp_toolkit crate is distributed under the terms of both the MIT license and the Apache License (Version 2.0).


Note that some components and dependent crates are licensed under different terms; please check the license terms for each crate and component for details.