Need help with exif-js?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

4.1K Stars 1.2K Forks MIT License 78 Commits 174 Opened issues


JavaScript library for reading EXIF image metadata

Services available


Need anything else?

Contributors list


A JavaScript library for reading EXIF meta data from image files.

You can use it on images in the browser, either from an image or a file input element. Both EXIF and IPTC metadata are retrieved. This package can also be used in AMD or CommonJS environments.

Note: The EXIF standard applies only to

images. EXIF logic in this package is based on the EXIF standard v2.2 (JEITA CP-3451, included in this repo).



through NPM:
npm install exif-js --save    

Or Bower:

bower install exif-js --save

Then add a

tag in your an HTML in the best position referencing your local file.

You can also use a minified version hosted on jsDelivr


The package adds a global

variable (or AMD or CommonJS equivalent).

Start with calling the

function. You pass it an image as a parameter: - either an image from a
- OR a user selected image in a
 element on your page.

As a second parameter you specify a callback function. In the callback function you should use

to access the image with the aforementioned metadata you can then use as you want. That image now has an extra
property which is a Javascript object with the EXIF metadata. You can access it's properties to get data like the image caption, the date a photo was taken or it's orientation.

You can get all tages with

. Or get a single tag with
, where you specify the tag as the second parameter. The tag names to use are listed in

Important: Note that you have to wait for the image to be completely loaded, before calling

or any other function. It will silently fail otherwise. You can implement this wait, by running your exif-extracting logic on the
function. Or on an image's own
function. For jQuery users please note that you can NOT (reliably) use jQuery's
event for this. Because it fires before images are loaded. You could use $(window).load() instead of $(document.ready() (please note that `exif-js has NO dependency on jQuery or any other external library).

JavaScript: ```javascript window.onload=getExif;

function getExif() { var img1 = document.getElementById("img1"); EXIF.getData(img1, function() { var make = EXIF.getTag(this, "Make"); var model = EXIF.getTag(this, "Model"); var makeAndModel = document.getElementById("makeAndModel"); makeAndModel.innerHTML =

${make} ${model}
; });
var img2 = document.getElementById("img2");
EXIF.getData(img2, function() {
    var allMetaData = EXIF.getAllTags(this);
    var allMetaDataSpan = document.getElementById("allMetaDataSpan");
    allMetaDataSpan.innerHTML = JSON.stringify(allMetaData, null, "\t");

} ```



Make and model: 

Note there are also alternate tags, such the

. See the source code for the full definition and use. You can also get back a string with all the EXIF information in the image pretty printed by using
. Check the included index.html.

XMP Since issue #53 was merged also extracting of XMP data is supported. To not slow down this is optional, and you need to call

before using

Please refer to the source code for more advanced usages such as getting image data from a File/Blob object (



This is an open source project. Please contribute by forking this repo and issueing a pull request. The project has had notable contributions already, like reading ITPC data.

You can also contribute by filing bugs or new features please issue. Or improve the documentation. Please update this README when you do a pull request of proposed changes in base functionality.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.