What is the best EXIF library for .Net?

I am looking for simple straightforward solution for accessing EXIF information of jpeg images in .Net. Does anybody has experience with this?


If you're willing to use an open-source library, may I humbly suggest one of my own creation?

The metadata-extractor project has been alive and well since 2002 for Java, and is now available for .NET.

  • Open source (Apache 2.0)
  • Heavily tested and widely used
  • Supports many image types (JPEG, TIFF, PNG, WebP, GIF, BMP, ICO, PCX...)
  • Supports many metadata types (Exif, IPTC, XMP, JFIF, ...)
  • Supports many manufacturer-specific fields (Canon, Nikon, ...)
  • Very fast (fully processes ~400 images totalling 1.33GB in ~3 seconds) with low memory consumption
  • Builds for .NET 3.5, .NET 4.0+ and PCL

It's available via NuGet or GitHub.

Sample usage:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);

foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");

If you're compiling against v3 of the Framework (or later), then you can load the images using the BitmapSource class, which exposes the EXIF metadata through the Metadata property


A new and very fast library is ExifLib - A Fast Exif Data Extractor for .NET 2.0 by Simon McKenzie. I ended up using this one and the code is easy to use and understand. I used it for an app to rename according to the date taken. I wonder how many times such an app has been written.

My tip: Make sure to call Dispose on the ExifReader objects once you've finished with them or the files remain open.