drewnoakes/metadata-extractor

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files

Java

2,834

1,468 commits

updated Jul 28, 2026

See the code

README

metadata-extractor logo

metadata-extractor build status Maven Central Donate

metadata-extractor is a Java library for reading metadata from media files.

Installation

The easiest way is to install the library via its Maven package.

<dependency>
  <groupId>com.drewnoakes</groupId>
  <artifactId>metadata-extractor</artifactId>
  <version>2.19.0</version>
</dependency>

Alternatively, download it from the releases page.

Usage

Metadata metadata = ImageMetadataReader.readMetadata(imagePath);

With that Metadata instance, you can iterate or query the various tag values that were read from the image.

Features

The library understands several formats of metadata, many of which may be present in a single image:

It will process files of type:

  • JPEG
  • TIFF
  • WebP
  • WAV
  • AVI
  • PSD
  • PNG
  • BMP
  • GIF
  • HEIF (HEIC & AVIF)
  • ICO
  • PCX
  • QuickTime
  • MP4
  • Camera Raw
    • NEF (Nikon)
    • CR2 (Canon)
    • ORF (Olympus)
    • ARW (Sony)
    • RW2 (Panasonic)
    • RWL (Leica)
    • SRW (Samsung)

Camera-specific "makernote" data is decoded for cameras manufactured by:

  • Agfa
  • Apple
  • Canon
  • Casio
  • Epson
  • Fujifilm
  • Kodak
  • Kyocera
  • Leica
  • Minolta
  • Nikon
  • Olympus
  • Panasonic
  • Pentax
  • Reconyx
  • Sanyo
  • Sigma/Foveon
  • Sony

Read getting started for an introduction to the basics of using this library.

Questions & Feedback

The quickest way to have your questions answered is via Stack Overflow. Check whether your question has already been asked, and if not, ask a new one tagged with both metadata-extractor and java.

Bugs and feature requests should be provided via the project's issue tracker. Please attach sample images where possible as most issues cannot be investigated without an image.

Contributing

If you want to get your hands dirty, making a pull request is a great way to enhance the library. In general it's best to create an issue first that captures the problem you want to address. You can discuss your proposed solution in that issue. This gives others a chance to provide feedback before you spend your valuable time working on it.

An easier way to help is to contribute to the sample image file library used for research and testing.

Credits

This library is developed by Drew Noakes.

Thanks are due to the many users who sent in suggestions, bug reports, sample images from their cameras as well as encouragement. Wherever possible, they have been credited in the source code and commit logs.

Other languages

  • .NET metadata-extractor-dotnet is a complete port to C#, maintained alongside this library
  • PHP php-metadata-extractor wraps this Java project, making it available to users of PHP
  • Clojure exif-processor wraps this Java project, returning a subset of data
  • Clojure beeld wraps this Java project, returning all of the data. It also defines an interface for low-level image manipulation. It will resize an image while honoring the orientation tag, preserving portrait mode (something Java's ImageIO doesn't do).

More information about this project is available at:

eps
exif
icc
iptc
java
jpeg
metadata
mp4
photography
png
quicktime
tiff
video
webp
xmp

drewnoakes/metadata-extractor

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files

Java

2,834

1,468 commits

updated Jul 28, 2026

See the code

README

metadata-extractor logo

metadata-extractor build status Maven Central Donate

metadata-extractor is a Java library for reading metadata from media files.

Installation

The easiest way is to install the library via its Maven package.

<dependency>
  <groupId>com.drewnoakes</groupId>
  <artifactId>metadata-extractor</artifactId>
  <version>2.19.0</version>
</dependency>

Alternatively, download it from the releases page.

Usage

Metadata metadata = ImageMetadataReader.readMetadata(imagePath);

With that Metadata instance, you can iterate or query the various tag values that were read from the image.

Features

The library understands several formats of metadata, many of which may be present in a single image:

It will process files of type:

  • JPEG
  • TIFF
  • WebP
  • WAV
  • AVI
  • PSD
  • PNG
  • BMP
  • GIF
  • HEIF (HEIC & AVIF)
  • ICO
  • PCX
  • QuickTime
  • MP4
  • Camera Raw
    • NEF (Nikon)
    • CR2 (Canon)
    • ORF (Olympus)
    • ARW (Sony)
    • RW2 (Panasonic)
    • RWL (Leica)
    • SRW (Samsung)

Camera-specific "makernote" data is decoded for cameras manufactured by:

  • Agfa
  • Apple
  • Canon
  • Casio
  • Epson
  • Fujifilm
  • Kodak
  • Kyocera
  • Leica
  • Minolta
  • Nikon
  • Olympus
  • Panasonic
  • Pentax
  • Reconyx
  • Sanyo
  • Sigma/Foveon
  • Sony

Read getting started for an introduction to the basics of using this library.

Questions & Feedback

The quickest way to have your questions answered is via Stack Overflow. Check whether your question has already been asked, and if not, ask a new one tagged with both metadata-extractor and java.

Bugs and feature requests should be provided via the project's issue tracker. Please attach sample images where possible as most issues cannot be investigated without an image.

Contributing

If you want to get your hands dirty, making a pull request is a great way to enhance the library. In general it's best to create an issue first that captures the problem you want to address. You can discuss your proposed solution in that issue. This gives others a chance to provide feedback before you spend your valuable time working on it.

An easier way to help is to contribute to the sample image file library used for research and testing.

Credits

This library is developed by Drew Noakes.

Thanks are due to the many users who sent in suggestions, bug reports, sample images from their cameras as well as encouragement. Wherever possible, they have been credited in the source code and commit logs.

Other languages

  • .NET metadata-extractor-dotnet is a complete port to C#, maintained alongside this library
  • PHP php-metadata-extractor wraps this Java project, making it available to users of PHP
  • Clojure exif-processor wraps this Java project, returning a subset of data
  • Clojure beeld wraps this Java project, returning all of the data. It also defines an interface for low-level image manipulation. It will resize an image while honoring the orientation tag, preserving portrait mode (something Java's ImageIO doesn't do).

More information about this project is available at:

eps
exif
icc
iptc
java
jpeg
metadata
mp4
photography
png
quicktime
tiff
video
webp
xmp

Project health

Overall

5.9/10

Maintained

5/10

Code review

7/10
OpenSSF Scorecard

Latest release

2.21.0 · Jul 22, 2026

Releases this year

2

Significant stargazers

TJ

54,536 followers · starred Jun 2018

Zac Sweers

2,627 followers · starred Dec 2019

Jesse Wilson

6,524 followers · starred May 2026

Chris Birchall

321 followers · starred Sep 2015