Exempi is an implementation of XMP. Version 2.x is based on Adobe XMP SDK and released under a BSD-style license like Adobe's. The 3 clause BSD (aka New-BSD) license is compatible with GPL. The licensing is kept identical in order to allow two-way merging of the code (ie sending our change to the XMP SDK to Adobe for integration).

The API is C based and means to be used from any language and be easier to maintain ABI stability.

The overall changes include:

  • STABLE C API/ABI for the library, instead of a C++ template based version.
  • GNU friendly build system based on automake.
  • Code changes for UN*X systems compatibility.
  • Architecture support for 64-bits (x86_64) and others.
  • Test suite. There is also a work in progress "exempi" command line tool starting in 2.2.0

Download Exempi

2.x series Changelog

Rust crate

To use Exempi 2.3.0 (or later) from Rust, juste use the crates: exempi and exempi-sys

Just specify in your Cargo.toml file the following:

exempi = "2.3.0"

Use the appropriate version as you see fit. It will require to have at least that version the exempi package.

Binary packages

  • check your favorite distribution.

Obsolete 1.0 series

Bugs reporting

Bugs can be reported in freedesktop.org bugzilla.

Report a bug

Mailing list

There is a mailing list exempi-devel to discuss of exempi development and exempi use (as a developer).


Source Code repository

Version 2.x is hosted on freedesktop.org in git.


For push access:


To get the 2.4 branch, use the following for the initial checkout after git clone:

git checkout -b exempi-2.4-branch origin/exempi-2.4-branch

This create an exempi-2.4-branch that track the remote one.