Exif Viewer
Overview
Welcome to the home page for the Exif Viewer, a Mozilla Firefox/Pale Moon/Google Chrome extension that extracts and displays the EXIF (Exchangeable Image File), IPTC-NAA/IIM (International Press Telecommunications Council - Newspaper Association of America / Information Interchange Model), and IPTC Core (Adobe XMP (Extensible Metadata Platform)) metadata, as stored by digital still cameras, in JPEG/JPG images.
There currently exist two versions of the the Viewer, a “legacy” version that runs in Firefox 56- and Pale Moon, and a WebExtensions version that runs in Firefox 57+ and Chrome (though see below). The Mozilla group has decided to switch to a new framework for browser addons, known as WebExtensions, that is mostly compatible with the framework for Google Chrome browser. Addons such as the Exif Viewer that were written for the old framework (XUL + XPCOM) will no longer work once Mozilla removes the legacy support. I plan on continuing to support both the old and new frameworks, as the bulk of the code works for both.
“Legacy” Version
This version works for both local and remote JPEG images, and has a more complicated interface, allowing you to browse to a local file and to specify several options. The extension adds an “Exif Viewer” item to the Tools browser menu, and also adds “View EXIF Data” items to the “Link” and “Image” parts of the browser context menu (right-click pop-up), to make it easier to invoke the Exif Viewer from Firefox.
WebExtensions Version
This version also now works for both local and remote JPEG images; an “Exif Viewer” item is added to every image context menu (right-click popup). Note that the entire image must be downloaded before any processing can start, so there may be a significant delay after the display window opens before the EXIF metadata is shown.
Google Chrome
Bad news: the Google Chrome Store is rejecting my extension with a completely uninformative error message. Since they also want me to pay for the privilege of making my free extension available on their website, and since it may not be possible to install the extension without using the Store, Chrome users may be out of luck.
If you are feeling brave, you can download the WebExtensions XPI from the Firefox addons site, open it with your favourite ZIP archive utility, and extract the files into a local directory. Then, go to Customize > More Tools > Extensions, click on the “Load unpacked extension…” button, and select the local directory. You may have to run the Viewer in “Developer mode” and “Allow incognito”, and the Google Chrome Store may be unhappy with you, but it should (may?) run.
Screen Snapshots
Legacy version:
Typical EXIF metadata in list format
WebExtensions version:
Typical EXIF metadata in table format
WebExtensions version:
Typical RGB and HSL colour histograms
EXIF Metadata
The metadata includes camera and picture settings, GPS (Global Positioning System) information if applicable, etc. that digital still cameras embed in their JPEG digital photographs. This information is stored in EXIF format according to the TIFF specification, and may be found in JPEG, TIFF, PNG, MIFF, and DNG images. The EXIF meta information is organized into different Image File Directories (IFDs) within an image; manufacturers can also optionally include proprietary information in the “Maker Note” field.
The Exif Viewer interprets the stored information according to the EXIF 2.2 standard, and can also understand some of the maker note information from various manufacturers (such as Canon, Casio, Fujifilm, Nikon, Olympus, and Panasonic). Additional manufacturers and more details for existing ones may be added in subsequent releases.
Development History
Went to Europe. Took lots of digital photographs. Developed a Windows Desktop slide show that displayed random images with various transition effects. Got tired of turning my head 90 degrees to view rotated images. Wondered if there was a way to determine the picture orientation and display it properly. Found a C program that retrieved the orientation data from JPEGs and translated it into JavaScript/ActiveX under Internet Explorer. Modified the slide show appropriately, making my neck very happy. Realized that there was a lot more interesting data that could be extracted from JPEGs. Extended my code to do so in IE under Windows. Pondered the wisdom of confining myself to that browser and operating system. Thought of Firefox extensions. Went through a simple tutorial on extension-writing, played around with a couple of samples, modified the one involving a pop-up window. Kept modifying it until it could display the EXIF data for local files. Released it on an unsuspecting public via addons.mozilla.org. Received lots of feedback, bug reports, suggestions, etc. Modified it to work on remote files, modified it to work with attachments in Thunderbird, modified it to extract Adobe XMP and IPTC metadata.
Supported Languages
Currently English, German, Czech, Chinese, and Russian are fully supported in both the user interface (including the Firefox menus) and the displayed EXIF data; French is partially supported and only for the user interface. If you would like to provide a translation into other languages, please contact me using the email address provided below.
I have to point out that there are a few other people who have volunteered to do the translation into other languages; I have never heard from them since…
Also, please let me know if you decide to perform a translation, or if you later change your mind and decide not to, so that I am aware of ths situation. Thanks.
Alerts
New key/value pairs have been added to exif.properties / messages.json
The following values may need to be translated:
(thumbnail) nonASCII=(non-ASCII characters detected) domParsingError=Sorry, an error was encountered while parsing the generated HTML. # xA001 data uncalibrated (-1)=uncalibrated (-1) uncalibrated (4294967295)=uncalibrated (4294967295) closeLink=Close Exif Viewer completeWithoutErrors=Output complete without errors. infoLegend=Information formatLegend=Format otherLegend=Other allText=All basicText=Basic only listText=List tableText=Table tagText=Show tag IDs mnoteText=Show Maker Note histText=Show histograms histHeaderText=Colour Histograms rgbHistText=RGB: Red, green, blue, and grey histograms (0-255) hslHistText=HSL: Hue (0-360°, greys on the far right), saturation (0-100%), and luminosity (0-100%) histograms rgbTitle=Red / Green / Blue / Grey hueTitle=Hue satTitle=Saturation lumTitle=Luminosity
“Legacy” Version
For the user interface, this process would involve modifying two files that contain entries like:
<!ENTITY local.label "Local File">
<!ENTITY remote.label "Remote URL">
and changing the English text into its equivalent. After that, you would have the option of changing the actual EXIF output, which is a much larger problem due to the amount of information and its technical nature. I can send the first two files to you, or you can just copy them from the locale/en-CA directory within the XPI file (a ZIP archive); the file names are overlay.dtd and exif.dtd. The technical EXIF text is located in exif.properties.
Just make copies of the existing (English, locale/en-CA, if that’s what’s being displayed now) files as backups, edit and save the original files to replace the English text with your language, and then restart Firefox and the Viewer; your translations should be displayed. Once you are satisfied, send the updated files to me, I will incorporate them into the Viewer, and then send the complete package to you for final verification.
WebExtensions Version
There is now only a single localization file for each language, messages.json. Extract the _locales/en_CA/messages.json file from the XPI file (a ZIP archive) and just change "messages": "English text" as required.
Downloads
-
Version 3.6 - December 25, 2017
Updated the WebExtensions version of the Viewer to save and restore the window position (thanks to Michał for helping to test this with dual monitors) and to use a more compressed display format for the Basic option.
-
Version 3.5.2 - December 8, 2017
Updated both versions of the Viewer to fix an error in string processing.
-
Version 3.5.1 - December 3, 2017
Updated the WebExtensions version of the Viewer to fix a minor display issue with the HSL histograms.
-
Version 3.5 - December 2, 2017
Updated the WebExtensions version of the Viewer to display colour histograms of the RGB (red/green/blue) and HSL (hue/saturation/luminosity) channels for the image; also, added an extension icon for the Add-ons Manager, to demonstrate my complete lack of artistic ability and sense of aesthetics.
-
Version 3.4 - November 22, 2017
Fixed a bug in both versions in which on rare occasions the ITPC Core XML was being truncated.
-
Version 3.3 - November 7, 2017
Updated the WebExtensions version of the Viewer to fix a bug for image URLs involving a query string (e.g. ?pictureid=12345); also, at users’ requests, went back to having a single context-menu item and restored the All/Basic, List/Table, Tag IDs, and Maker Notes controls, adding save/restore functionality.
-
Version 3.2 - October 26, 2017
Updated the WebExtensions version of the Viewer to provide a Close button, as one person has reported that the minimize/maximize/close buttons are not being displayed. Also restored the option to format the output as tables rather than lists.
-
Version 3.1 - October 6, 2017
Updated the WebExtensions version of the Viewer to allow for the handling of local files (file: protocol); also, the popup window now starts up with a larger height and the window dimensions are saved and restored across sessions. Finally, I disabled the use of "incognito" mode, as it was possibly causing a problem when cookies are needed for the image retrieval.
-
Version 3.0 - September 26, 2017
Reorganized and modularized the code in anticipation of the transition to the WebExtensions framework, fixing a couple of minor bugs and replacing references to innerHTML with DOM node manipulation. Isolated the framework-specific parts of the code and implemented the WebExtensions equivalents to the legacy XUL+XPCOM file retrieval and localization code. Determined that the Google Chrome and Firefox versions of WebExtensions are almost but not quite the same, and added the required browser-detection code (*sigh*). Converted all the old .properties localization files into the JSON files required by WebExtensions, then reconverted them after determining that Chrome is much more restrictive in which characters are allowed in keys (*sigh*). Tested the code in Firefox, Chrome, and Pale Moon using my suite of test JPEGs and iteratively fixed all the minor bugs that were thereby revealed (*sigh*). Regretted my decisions to create the Exif Viewer and convert it to WebExtensions, and cursed the Mozilla and Chrome developers—and their families, ancestors, and descendants—for all eternity.
-
Version 2.00’ - September 18, 2013
Fixed a silly error involving character strings encoded in UTF-8 and a minor one involving some IPTC data.
-
Version 2.00 - August 22, 2012
Fixed a minor problem with the French localization. Went to major version 2 to fix a silly versioning problem. (January 2013: manually updated the latest Firefox version, after determining that the potential issues with FF18 involved either commented-out code or a function with the same name as an API one.)
-
Version 1.70 - September 29, 2011
Fixed an intermittent bug encountered with Linux. Added special handling for the Maker Note created by ikeGPS devices (http://www.ikeGPS.com). Verified that the Viewer works with FF 6 and 7.
-
Version 1.65 - June 1, 2011
Added a Russian translation, courtesy of Dmitry Yerokhin. Updated my email address for bug reports. Confirmed that the Viewer works with FF 5.
-
Version 1.60, February 15, 2011
Added the ability to extract and display the JPEG Comment (COM) field, as per a user request. Modified the IPTC code to recognize the UTF-8 character code and process the text accordingly. Fixed several minor display problems, including a couple that only manifested in Firefox 4. Verified that the Viewer works properly in the Firefox 4 Beta 11.
-
Version 1.55, April 2, 2010
Added some non-standard EXIF tags, as per user requests. Added the ability to persistently hide or show the controls at the top of the window. Added simplified Chinese localization, courtesy of [email protected]. Fixed a minor problem with the generation of the KML file for images with embedded GPS information, as well as an error with the processing of Casio maker notes. Added a minor enhancement for the display of GPS latitude and longitude. Added the option of displaying the EXIF tag ID numbers. Added my homepage URL. Made a minor modification to the control layout to allow for a narrower window, based on a user comment. Added separate local and remote History entries to the File menu. Fixed a bug when resizing the window in FF 3.x. Added Czech localization, courtesy of Pavel Mrázek.
-
Version 1.51, July 27, 2009
Augmented the Nikon maker note information, as per a user request. Reorganized the code’s global variables and functions so as to minimize the possibility of namespace conflicts, as per an AMO reviewer request. Fixed some minor issues with the French localization, as well as a major issue with the German localization that only showed up in Firefox 3.5.1 (but not in 2.0.x or 3.0.x).
-
Version 1.50 - June 1, 2009
Reformatted the displayed F-stop and aperture values, as per a user request. Added the ability to format the output as tables rather than lists. Added German localization, courtesy of [email protected]. Fixed a bug that prevented images from being saved after their EXIF data was displayed, and another involving the Nikon maker note. Fixed a Thunderbird issue in which the Exif Viewer menu items were not being displayed with the single-message popup window. Verified that the Viewer works with Firefox 3.5 Beta 4.
-
Version 1.45 - May 30, 2008
Fixed various minor bugs. Verified that the Viewer works properly with Firefox 3.0 RC1.
-
Version 1.40 - March 14, 2008
Fixed minor bugs involving the suppression of trailing zeros and the display of some parts of the IPTC Core lists, as well as a couple of other minor issues. Added the ability to launch Google™ Earth if GPS information is included in the EXIF data, with the option of saving the information to a KML file.
Modified the Viewer to handle the change in behaviour in the beta versions of Firefox 3.0 in which long strings without breaking spaces were causing the width of the output area to increase indefinitely, rather than leaving the width as is and displaying a scroll bar; also fixed a problem with expanding and collapsing the IPTC Core lists caused by a change in the tagnames for HTML elements. Verified that everything still works in beta 4.
-
Version 1.36 - December 31, 2007
Fixed a few minor user-reported bugs. Added a quick&dirty way to view rotated versions of JPEGs, using the non-standard CANVAS element. Cleaned up the display of rational numbers, to suppress trailing zeroes. Determined that the Viewer’s user interface is broken significantly by Firefox version 3 beta 1 and even more so by beta 2.
-
Version 1.30 - September 24, 2007
Added the display of the embedded thumbnail JPEG image, in the IFD1 section. Added a “basic information only” option, and made the checkbox settings persistent. Extended the Canon Maker Note metadata.
-
Version 1.27 - July 24, 2007
Fixed a few minor bugs; added support for the IPTC Core (Adobe XMP - Extensible Metadata Platform) metadata; added a quick&dirty print facility; verified that the Viewer works with TB 2.0.0.*.
-
Version 1.20 - June 19, 2007
Fixed four minor, user-reported bugs; added menu hot-keys; added the ability to increase/decrease the text size for the displayed EXIF information; made the text size, as well as the window size and position, persistent; completed the localization of the user interface (menu and main window) and added a draft French version; localized most of the Exif information (except for the Maker Notes); added the ability to directly open the Error/JavaScript Console and to copy the text of any error messages to the clipboard; added these Release Notes; extended the Viewer to also display the IPTC metadata (IIM v4.1) when stored in the APP13 block; added Home/End/PageUp/PageDown navigation.
-
Version 1.15 - April 18, 2007
Fixed two minor, user-reported bugs; context menu items suppressed for clearly non-JPEG images and links.
-
Version 1.14 - January 28, 2007
Fixed two minor bugs.
-
Version 1.13 - January 18, 2007
Enhanced the Thunderbird support so that the Exif data for JPEG attachments in received email can be displayed by right-clicking on images in the message pane or attachment list.
-
Version 1.10 - December 31, 2006
Added partial support for Thunderbird. Now you can open the Viewer from the Tools menu as well as view the Exif data for links in messages; viewing the data for JPEG attachments (mailbox://...) will take a bit longer to add.
-
Version 1.08 - December 22, 2006
Now handles “local URLs”; (file://), converting the directory separator as required. *sigh*
Also now includes links to some online mapping websites if the Exif block contains GPS latitude/longitude data.
-
Version 1.06 - December 19, 2006
Fixed a problem displaying text containing certain special characters that was causing an exception to be thrown.
-
Version 1.05 - December 17, 2006
Fixed a problem in which the presence of non-Exif data would prevent the Exif data from being detected.
-
Version 1.02 - December 8, 2006
Includes some bug fixes that may make the extension a little more robust and eliminate some of the problems reported here.
-
Version 1.00 - December 1, 2006
Now can handle remote JPEGs via an input URL. Menu items were added to the browser context menu, making it easier to invoke the Viewer for images and links to images on web pages. User interface cleaned up.
-
Version 0.5 - November 22, 2006
Added text copy functionality, along with a context menu. Added the ability to scroll down to the desired section of the Exif output.
-
Version 0.2 - November 19, 2006
Initial release.
Usage Instructions
“Legacy” Version
The Exif Viewer can be invoked by right-clicking on a JPEG image and selecting the “View Image EXIF Data” context (popup) menu item; you can also right-click on a link to a JPEG image and select the “View Link EXIF Data” item. I have also added a simple facility for rotating images; select the “View Rotated Image (Exif)” or “View Rotated Link Image (Exif)” item.
The Exif Viewer can also be started manually via the “Tools > Exif Viewer” menu item, at which point you can enter or select a local file or enter a remote URL; click on the “Display EXIF Data” button to see the image metadata.
In either case, the “View… > Toggle Controls” menu item can be used to hide or show the controls at the top of the window, to maximize the available space for the display of the EXIF metadata.
WebExtensions Version
The Exif Viewer can be invoked by right-clicking on a JPEG image and selecting “Exif Viewer”. You can resize the Viewer window and change the information that should be displayed and its format (list or table); these settings will persist across invocations of the Viewer.
Contact the Author
My name is Alan Raskin and I can be contacted via email at [email protected] if you have any bug reports, comments, suggestions, or complaints regarding the Viewer; I will be happy to fix any bugs that you encounter or look into adding any features that you think would be useful.