Finally, Geoencoding in Lightroom! Announcing my GPS-Support Plugin

The screenshot above shows how I geoencoded the images in yesterday's post about a train and boat ride.


Today I'm releasing a beta version of a new plugin for Adobe Lightroom, “Jeffrey's GPS Support”, that adds support for Geoencoding photos from within Lightroom. There are more features yet to add, but it's already polished enough for daily use, offering even the ability to geoencode speed and bearing.

Sadly, Lightroom does not allow for a plugin to easily update the “real” per-image GPS information in the Lightroom database, but this plugin takes an approach that should allow geoencoding to be seamless for many. The plugin itself maintains its own set of “shadow” GPS data for each image, allowing you to view and change the data as you like. On export, the plugin inserts the GPS data into the image (into the copies of the images made during the export), so that your exported images are properly geoencoded as well.


The plugin is simple to use: after installing it (you can download it from the plugin's home page; install instructions are there as well), select the images that you'd like to geoencode, then invoke the “Geoencode” item from the File > Plugin Extras menu....

This brings up the screen shown at the top of this post. You can encode from a tracklog (a GPX file), or you can specify a static location to assign to each image. You can also geoencode between two endpoints.

It's easiest to geoencode from a GPS unit's tracklog, and when done that way, speed and bearing are also calculated. When the tracklog datapoint granularity is not to the second, the plugin interpolates between the two nearest datapoints. (Personally, I use a GPS unit that allows me to keep a tracklog updated at one-second intervals.)

If you don't have a tracklog, you can specify locations by pinpointing them in Yahoo! Maps or Google Maps, then cut-n-pasting the url. You can also specify a GeoHash, or a latitude/longitude pair in one of a variety of formats, such as:

    35.011065, 135.782201
    35° 0' 39.83" N,  135° 46' 55.92" E
    35 0 40, 135 46 56

See the “Help:Locations” tab in the Geoencoding dialog for more examples.

Viewing Geodata

After geoencoding, you can view the results using the “Geoencoding” metadata view preset, as highlighted in this screenshot showing an image taken on a train...

In the screenshot, the lack of data below the “Real EXIF GPS Data” header means that the image was not geoencoded prior to being loaded into Lightroom, and so Lightroom's library has no GPS data. If you only ever geoencode with this plugin, that section will always be empty. I place it there, though, so that those who previously geoencoded their images with other methods (prior to loading into Lightroom) will be able to use the same metadata preset to view an image's geoencoded data.

NOTE: There seems to be a bug in Lightroom that causes the shadow data in the “Geoencoding...” section to sometimes not appear. Sometimes it does. It's very frustrating. (See this comment). If it's not showing up, try switching to the “All Plug-in Metadata” view.

Exporting, Etc.

Because the GPS data is kept as “shadow GPS data” by the plugin, it's not included in files on export unless you turn on the “Shadow GPS Injector” post-process export action. It's enabled turning on the checkmark highlighted in red below, which then includes the section highlighted in green....

Once turned on, it is active for every export, including my “Export to...” plugins for Flickr, Zenfolio, SmugMug, Facebook, and PicasaWeb (all available on my Lightroom Goodies page).

Note: if you have export presets, you'll want to rewrite them with this post-process action turned on. That means selecting the preset, clicking the checkmark as highlighted in red above, then right-clicking (or option-clicking on the Mac) the preset name and selecting “Update with Current Settings”.

This plugin's geoencoding is understood by my GPS Proximity Search plugin, as of version 20081029.3. It still understands “real” geoencoding as well, but gives preference to the shadow data when an image has both.

Also, note that I removed the “View location in...” menu items from the proximity-search plugin and brought them here, as well as added a bunch of new ones: Yahoo! Maps, Google Maps, Google Earth, Flickr, Panoramio, and GeoHash.org. These, too, now understand both kinds of GPS data.

Yet to Do...

In the near future I plan on adding some things, including....

  • The ability to convert the shadow GPS data into “real” GPS data. (UPDATE: this was added in version .9)
  • The ability to read a tracklog directly from a GPS unit.

I'd love to hear more ideas as well, if you have them.

Comments so far....

Great idea. Not having a GPS myself, I was able to use Yahoo! maps to find the location for my photos. However, Yahoo! is apparently using different programming teams for each country. Yahoo! Maps Canada (ca.maps.yahoo.com) gives a different format URL than Yahoo! Maps (maps.yahoo.com) and the plugin doesn’t recognize the location as a result.

Fixed in version .3 —Jeffrey
— comment by Ken on October 30th, 2008 at 12:28am JST (5 years, 6 months ago) comment permalink


Nice work! The lack of geoencoding was something I thought they would fix with 2.0, but I guess not. Thanks for filling a huge hole.

One feature request: Some method to synchronize the GPS track and clock times stamps. I often forget to reset the clock in the camera and it can drift several minutes a month…

Keep up the good work!


It’s really a better solution to correct the times in Lightroom itself (why leave incorrect times if you know they’re incorrect?), but I’ve gone ahead and added clock-skew compensation in version .3. —Jeffrey

— comment by Bill on October 30th, 2008 at 2:00am JST (5 years, 6 months ago) comment permalink

What kind of GPS datalogger do you use? :)
I’m very interested in starting logging GPS data as well, but I haven’t found a suitable logger.

I wrote about what I use here —Jeffrey

— comment by Fred on October 30th, 2008 at 4:32am JST (5 years, 6 months ago) comment permalink

Hi Jeffrey,

This is fantastic. I’ve been using HoudahGeo to do this separately, but syncing metadata is a pain.

Recently Google released the ability to reverse geocode in their HTTP (non-JS) Maps API. I’ve written a python script to read the GPS data out of an image with exiftool, request a reverse lookup from their API, and appropriately write back the Country, Country Code, State, Suburb/Town/City and actual address into the image depending on the accuracy returned.

Let me know if you’re interested in a copy to use to implement a similar feature in your plug in.

— comment by Andrew on October 30th, 2008 at 7:55am JST (5 years, 6 months ago) comment permalink

Thanks so much for this plug-in.

I have installed the plug-in and enabled the shadow GPS option.

I have tried to Geocode a few photos in Lighroom 2.1 (Mac OS X 10.5.5 on a MacBook Pro) using the Static Location option, having obtained the coordinates from GeoHash.org. I inserted a common between the 2 coordinates. I receive a message that states the files has been coded. However, the data does not show up in the Geoencoding dropdown as Shadow GPS data.

Please advise.

You might have run into a mysterious bug that I’ve seen once before, where the tagsets don’t seem to work. You can check whether a particular image has indeed been geoencoded by selecting it and invoking one of the “View location at…” menu items. (Just be sure that you don’t have an old copy of my proximity-search plugin installed, because it has some “View location at…” items that don’t understand this new kind of geoencoding.) Another idea is to view the “All Plug-in Metadata” metadata-view preset… the geoencoding stuff should show up under the “GPS Support” heading. If either of these methods shows that an image is geoencoded, but the data is not showing up with the “Geoencoding” metadata-view preset, then you’ve run into this same mysterious Lightroom bug that I haven’t figured out yet. —Jeffrey

— comment by Ina on October 30th, 2008 at 8:34am JST (5 years, 6 months ago) comment permalink

Hi Jeffrey,

Thank you for filling in this big gap in my current workflow – It’s been quite annoying having to fire up a 2nd program to write GPS data and then get LR to “see” it.

One request though – could you provide a way to specify more than one tracklog as Input? I generally switching off my tracklog software when not shooting (say when stopping for lunch in the middle of a walkabout :) ) and so when I start up the tracklog again, it generates a new GPX file.

It already handles multiple tracklogs… just select multiple files in the browse dialog. —Jeffrey

— comment by Balaji Dutt on October 30th, 2008 at 2:59pm JST (5 years, 6 months ago) comment permalink


It is NOW working great.

I am absolutely puzzled as to why the photos I geoencoded last night did not show up, but they do now (and that is what is important :) )

There’s something flaky going on that I’ll have to report to Adobe. Today when I started LR, my view was empty. I did something in the plugin manager, and they appeared. I don’t know exactly what I did or why that should have had any effect. Sigh. That’s why bugs are called bugs… they bug you that way.

Last night after geoencoding I verifyed that that showed up on the maps but they did not show up on either the All Plug-ins or the Geoencding views. Today they show up and the new photos that I just geoencoded show up as well. Great job.

I am looking forward to the real Geoencoding as I view my photos in applications other than Lightroom, as well

I’ll be adding a way to flush the shadow data back to the files. That’s the next step… —Jeffrey

— comment by Ina on October 30th, 2008 at 8:03pm JST (5 years, 6 months ago) comment permalink


the thing looks great but whenever I geocode an image, the coordinates do not show up in the metadata panel.

Furtheron, would it be possible that you write the geodata back to the image using exif-tool. Then it can be brought back to LR by rereading the metadata.


— comment by Bernhard on October 30th, 2008 at 8:56pm JST (5 years, 6 months ago) comment permalink

I tried to set the “fuzziness” interval to 180 sec. It is limited to 100 sec, while the default value is 120sec. This seems to be a bug.

— comment by Bernhard on October 30th, 2008 at 10:20pm JST (5 years, 6 months ago) comment permalink


I have the same issue as INA. However these images were ones that refused to be geocoded via Geosetter & Robogeo. When I tried with this great plugin it said all okay (static input of coords), but then showed nothing under the metadata. It might be due to an issue in the image- I have ten of these and everything else works with them.


There’s definately a bug in Lightroom that’s causing it to disappear randmoly. It has happened a few times to me already today. I’m waiting to hear back from Adobe on it, but until then, just use the “All Plug-in Metadta” preset, which seems to always work. —Jeffrey

— comment by simon leppard on October 30th, 2008 at 10:34pm JST (5 years, 6 months ago) comment permalink

Your plug-ins are great and I am using most of them. I am puzzled on the GPS/Geocoding plug-ins however. Most of my images are Nikon NEF files from D200 and D300. They almost all have GPS data in them from a GPS (di-GPS from HK) attached to the camera body during capture. Am I not able to search that data when I invoke the File > Plug-in Extras > GPS Proximity Search?

When I choose an image I know has GPS data that I can see and have verified takes me to Google Earth, then ‘GPS Proximity Search’ > ‘Search Epicenter’, “Most selected” (i.e. first choice) and choose a distance, after checking all the 60K files in the library in about 4 minutes the Pulg-in reports that none of the images are geo-encoded??
I gather I will have to read the valid GPS data from the field in the Nikon EXIF and place it where you place the shadow GPS data to be able to proximity search huh?
Let me know if I have missed something. I wonder if the Plug-in could be allowed to check their for the GPS data first or as an option?

I do also shoot with other cameras like the G9 and have an eTrex Vista CX from which I look forward to using your Geo-encoding plug-in to encode them with shadow data.
Thanks for any clarification on accessing the existing GPS data for proximity searches. And THANK YOU so much for the great plug-ins you write and update so often. We really appreciate them very much.

— comment by Phil Scott on October 30th, 2008 at 10:41pm JST (5 years, 6 months ago) comment permalink

Hi Jeff,

there are more ideas coming up …

Would it be possible to download values for the IPTC fields Country, province, city, location e.g. from geonames.org. This is what gpsPhotolinker does and its really great.

Would it be possible to attach a button in the metadata viewer to invoke show in google maps as it is in the Standard metadata panel. The shadow GPS are shown as decimal values (28.99567, -13.492201) while the Real GPS-Data is shown in degrees minutes seconds (28°59\’33″N 13°29\’25″W). Can you make it to be displayed in the same format.

In general, I somehow dislike the shadow GPS since I use the images outside of LR as well. On the other hand, it is not that bad since it provides an option to check the coordinates before writing them to the image.


— comment by Bernhard on October 31st, 2008 at 12:59am JST (5 years, 6 months ago) comment permalink

That’s a cool idea Bernhard to get the IPTC data set from geonames.org- I like it!

— comment by Phil Scott on October 31st, 2008 at 3:12am JST (5 years, 6 months ago) comment permalink

Awesome plugin, I was looking for this feature. But I am getting an error dialog which says, “Unable to export. Couldn’t render an image. An unknown error occurred. This photo was not rendered.”?

I’m using LR 2.1 on Vista

I just pushed new versions of the export-to plugins, and the GPS Support, that should hopefully take care of this problem. I didn’t call it “beta” for nothing :-) —Jeffrey

— comment by Ian Butterworth on October 31st, 2008 at 6:40am JST (5 years, 6 months ago) comment permalink

I’ve updated to .5, which popped up in the middle of me making a post on the .4 bug ;) I, too, have a lot of blank under the Shadow GPS data.

I just pushed .6 that sort of gets around the disappearing display problem. It’s not idea because the header text is not as specific as I’d like, but at least you can see your data.

The files are definitely getting tagged as I can open a map with them and it goes to the right spot, but no amount of clicking different options, reloading the plugin, restarting etc. will get anything to display under the Shadow section. Also, the Metadata Browser SHOWS the correct number of “shadowed” files but the total images aren’t displayed. Here’s a screenshot of what I’m talking about (the count shows 10 but only 7 are displayed). Restarting Lightroom seems to be the only way to refresh the thumbnails and show the correct number of thumbnails to the Browser count. I’m using LR2.1 on WinXP.

The custom-metadata stuff this plugin uses is all new in LR2, and still seems to be a bit buggy. It’s buggy with the proximity-search plugin as well. Adobe is looking into it… —Jeffrey

Thanks again, Jeffrey for all your work on these plugins!

— comment by JasonP on October 31st, 2008 at 12:04pm JST (5 years, 6 months ago) comment permalink

Hello Jeffrey,

Great program! I tested it, and also tested the same plugin made by Google:
Yours is a lot more powerful!

But I find that the one of Google has an advantage: the GPS-metadata are directly written in the files; after that, you just have to make an LR-synchronisation.

I find that it is an advantage, because then you can use these datas with external softwares (like GeoSetter for example) without having to exporting the photos from Lightroom.

But I saw that this functionality is on your “to-do” list, and I hope that you’ll achieve it without encountering too much problems!

I published a small article about these 2 plugins, and also about your plugin “GPS Proximity Search” on my blog (but … in French ;-)): http://www.etisan.ch/wordpress/2008/10/31/lightroom-et-les-coordonnees-gps

Thank’s a lot!

— comment by Etienne on October 31st, 2008 at 9:01pm JST (5 years, 6 months ago) comment permalink

Just a note to say that I ugraded to the .6 beta. Nice upgrade dialog and execution.
So far, the GPS shadow information is showing up in all Metadata views.

I will second Bernard’s request to reverse code the location fields a la GPS Photo Linker. This is a handy time saver.

Thanks again for a superb new plug-in.


— comment by Ina on November 1st, 2008 at 1:02am JST (5 years, 6 months ago) comment permalink

Hi Jeffrey, I am an old time fan of your blog & LR goodies.. thanks for a new one.
In terms of suggestions, just a reference you might already be aware of or not…
I have recently started to use GPSED (www.gpsed.com)… it is not a LR pluggin (too bad) but appart form that it is more than I ever dreamed of… just ammazing . Thought you might get some useful ideas there if you want to.

Anyways, thanks for your stuff.


— comment by Esteban on November 1st, 2008 at 2:42am JST (5 years, 6 months ago) comment permalink

Correction… meant to reffer to GEOSETTER, not GPSED (that last one is what I use in my BBerry to capture tracks. Also great)

— comment by Esteban on November 1st, 2008 at 2:45am JST (5 years, 6 months ago) comment permalink


Very useful assets you’ve been introducing to the LR community. Thank you.

You might also want to have a look at http://www.everytrail.com. Full disclosure, I work for the company that owns everytrail. We geotag photos based on a track’s timestamp, using a very nice interface, and place them on a map.

Dan Seligson
COO, GlobalMotion Media Inc.

— comment by Dan on November 2nd, 2008 at 9:47am JST (5 years, 6 months ago) comment permalink

I use the Microsoft Pro Photo Tools program.
I wish Lightroom had a plugin as easy to use as this tool to attach GPS info to a Raw file. Within the program you just search for a location in google maps, drag and drop your files and save the images with the metadata. I then import the images into lightroom and the GPS info shows up with no problem. When I export images with your Picasa plugin the locations show up with the pictures on the Picasa website. Thanks for your work.

— comment by P Cutino on November 3rd, 2008 at 7:11am JST (5 years, 6 months ago) comment permalink

This is wonderful! Thanks!

One thing that isn’t working for me: I’d like to be able to use “sync metadata” to copy the shadow GPS data from one picture to others, but it doesn’t seem to work… I can select the shadow GPS fields in the sync metadata dialog, but it doesn’t seem to copy the data to the other photos. (LR 2.1.) I don’t think it’s the other bug you mentioned since “View location in …” doesn’t work either.

— comment by dave glasser on November 4th, 2008 at 4:46am JST (5 years, 5 months ago) comment permalink

It is a very nice plugin. I always use that to update my geographic information from my GPS logger. Recently I have a problem that when I am trying to open up the plugin from plug-in extra in LR tool box. It turns our to show a error message. The message shows that “At line 12581: ?:12668: attempt to index a nil value”. I tried to remove the plugin and move them back, but the problem still happens. Right now I have no clue what can I do to fix that. Can you please tell me how to fix that. Thanks.

— comment by Lucas Liu on November 5th, 2008 at 7:14am JST (5 years, 5 months ago) comment permalink

I’m very excited about this product for geotagging in Lightroom. I decided to test it how it works. I installed it correctly and it run. But I found problems with reading .GPX files generated by this application:

Since I don’t have GPS Tracker, but only a Bluetooth GPS (that has no tracking feature). I connect it to my phone (Nokia N76) via bluetooth. I use TrekBuddy (also tried with Garmin XT application) to generate GPX files. Then when I give that file to you plug-in it said that I have “No datapoints found in that tracklog” in my GPX file.
I opened it with notepad and I saw there are points. If you would like I could send you some track files both from Garmin XT and from TrekBuddy?

I had a bug in .10 that broke tracklog reading. Could you try again in .11? Thanks. —Jeffrey

— comment by Vassil Keremidchiev on November 7th, 2008 at 7:19am JST (5 years, 5 months ago) comment permalink
— comment by Beau Harbin on November 8th, 2008 at 3:55am JST (5 years, 5 months ago) comment permalink

I am using both GPS Support and GPS Proximity and they are working well.

I would like an easy way to modify or edit the GPS shadow values — in particular the altitude value.

My old Garmin III+ does not output the altitude in the track file. After I have geoencoded the photo using the track file, I can view the location using Google Earth and find the altitude at that location.

The only way I have been able to write the altitude into the shadow data is to use the Static Location Tab. This is not a good solution since using it erases some other data items like direction and speed. Also, to use the Static Location for altitude, it is necessary to enter the latitude and longitude manually or by cut and paste from another program.

Thanks for these programs. Finding photos using GPS Proximity, make all the geoencoding effort worthwhile. –Jack

— comment by Jack on November 8th, 2008 at 10:00am JST (5 years, 5 months ago) comment permalink

In addition to my comment earlier about inability to use “Sync Metadata”, I haven’t been able to get this to work with Flickr export at all (yes, I did explicitly turn on the injector in the bottom left panel, and made sure the box was checked in the main panel, and Minimize Embedded Metadata is off). Is this some other thing I might be screwing up?

— comment by dave glasser on November 10th, 2008 at 2:51am JST (5 years, 5 months ago) comment permalink

The ‘Import location from active image’ button in Version .12 does solve the “modify or edit shadow values” request in my comment 2 days ago. I easily geoencoded 1500 old images yesterday. Thank you!

It still over writes other data like direction and speed, but those values are not currently useful to me.

— comment by Jack on November 12th, 2008 at 1:32am JST (5 years, 5 months ago) comment permalink

Jeffrey: thanks! The Import EXIF setting was why I couldn’t get the export to work.

(Still can’t Sync Metadata, though…)

— comment by dave glasser on November 14th, 2008 at 3:09am JST (5 years, 5 months ago) comment permalink

I have the same issue as dave glasser, not what the followup comment means, I’m not re-importing the images when I use the flickr uploader, I am processing from D700 raw if that makes any difference, plus I have ensured the injector is enabled on export.

Be sure you have the latest version of the Flikr plugin, then check the bottom of the “Flickr: Metadata Management” section in the Export Dialog. —Jeffrey

— comment by Gary Thom on November 18th, 2008 at 12:09am JST (5 years, 5 months ago) comment permalink

Hi, and thanks for a truly wonderful plugin. I just want to mention that when I installed it everything seemed to be fine. I was able to geoencode a bunch of files and use the view in … maps. Everything was wonderful. Until…!!!! (Isn’t there always an “until”) ?

This was the problem: no output could be done, whether a file export or a write shadow data to xmp. The process would hang and not complete. It took me a while but when I looked in your gps-jfriedl.lrplugin\Win directory I saw that you were using perl and that I already had ActiveState perl installed. Was that the problem? No! The problem was the cygwin1.dll file. I already had cygwin installed with an older DLL but I also had OpenSSHD installed with an older DLL and that service was running (ie. in memory) so…. once I updated and or removed the older DLLs everything was back to wonderful. I just thought that I would mention this in case anyone else has a similar problem.

It’s very easy to see the problem. Just go to the gps-jfriedl.lrplugin\Win folder and run perl.exe -v – if there’s a cygwin problem, it will tell you and hang :)

Again – thanks for a great plugin.

— comment by Richard Nolet on November 21st, 2008 at 2:58am JST (5 years, 5 months ago) comment permalink

I have the plug-in installed but it fails to geoencode images for me.

I have a photo with an EXIF time stamp of 6/21/2008 2:48:27 PM. The XMP time stamp is 2008:06:21 14:48:27Z.

I have a 770 point .gpx track log created by my Garmin 76CSx. It is set to ‘normal’ track mode so the times between points varies depending upon distance moved. In this particular case I have a point at 14:48:20 and the next at 14:48:34 which puts my photo right in the middle between them.

When I execute the plug-in geocoding function, select the tab Geoencode from Tracklog, read in the file, set the timezone to UTC WET/GMT, leave Fuzziness at the default of 120, set compensate for camera clock to 0, select Process the selected image and the press Geoencode Image I get a dialog box that says:

Images not processed successfully:1
Images selected: 1
Images processed successfully: 0

What could be going wrong?

— comment by CR Henderson on November 25th, 2008 at 7:00am JST (5 years, 5 months ago) comment permalink

Just to let anyone who read my previous post know…version .21 fixed the problem.

And thanks to CR for providing help on tracking down and debugging this. —Jeffrey

— comment by CR Henderson on November 27th, 2008 at 6:40am JST (5 years, 5 months ago) comment permalink

Thanks for what I’m sure will be really useful to me soon! I’m having problems with the Geoencode from Tracklog functions using ver 21.

I haven’t tried the previous versions, and I’m getting the ‘No datapoints found in that tracklog’ message for every GPX file I try. So far I’ve tried files generated with the iPhone app ‘Trails’ version 1.31 which generates a file using the trk, trlseg and trkpt elements, and I’ve tried a someone else’s file (fells_loop.gpx) that uses wpt tags as well as rte and rtept tags.

I can send the files I have if it’ll help. Any clues what I’m doing wrong?

That’s a waypoint GPX file, not a tracklog GPX file. I just pushed version .22 that now handles both. —Jeffrey

— comment by sergio on November 30th, 2008 at 3:46pm JST (5 years, 5 months ago) comment permalink

Hi there, I’ve got a bit of a feature request.

My current geotagging work flow involves doing an import of images, writing metadata to all of them from with Lightroom, firing up Google Earth along with the Geotagger application (OSX, http://craig.stanton.net.nz/software/Geotagger.html ), finding my location in Google Earth, dragging photos that I want to be tagged into the dock icon for Geotagger which writes out the geo info to the source images, then requesting Lightroom to read the new metadata.

The workflow works well, but involves writing to every single source image twice, not including import. I’m worried that after setting up Time Machine, my backup drive is going to get filled rather quickly with previous versions of the source images that don’t contain the geo data.

What I would like to request is either a button, menu item or shortcut that’ll simply grab the current location (lat/lon) out of Google Earth for the Geocoding plugin. There is currently no simple way to grab the current location out of Google Earth (let’s say via copy and paste), so it would be nice if this set got a little bit more streamlined.

At the same time I’m going to guess that Lightroom’s plugin support limits how much you can interact with external programs, but I figured I’d put this out there and ask nicely. :)


— comment by Rubin110 on December 1st, 2008 at 7:54am JST (5 years, 5 months ago) comment permalink

Thanks for this wonderful plugin for LR2. I’ve been wanting such a plugin for some time. Great job on this and thanks for blessing us with the results of your skills and passion!

I’m brand new to your plugins so if something suggested is already there let me know. Here are some ideas I’d like to see in your plugin or a new plugin or if you are aware of other’s tools/plugins that do what I suggest please let me know.

1. Something to aid determining the time offset between GPS time and camera time. I took a batch of photos without sync’ing the times first and now I’m trying to determine the offset amount. It’s a hit-n-miss cycle that works for one photo, then another photo it’s off so it’s back to the guess and try. This is very time consuming.

Your better bet here is to select all the photos that are off by the same amount (e.g. all of them from the same day or the same week… the camera clock likely doesn’t drift that much), then update the date/time using normal Lightroom methods (clicking on the time in the metadata panel) so that the times are correct. Lightroom offers a few ways to update the times, the main one being to set the correct time for a representative image, and then it’ll apply the same offset to the rest. The benefit of this, besides that you then don’t need to worry about an offset when you geoencode, is that your image times have been fixed.

Having a tool that was like GPSTrackView but overlays a map and allows seeing where each and every capture point is and the time beside it would be helpful.

I’d certainly do that if the Lightroom plugin infrastructure allowed.

In the mean time if you could provide a button in the LR2 exif gps panel to jump right into google maps to that point would save having to go up to the menu, then submenu to do the same.

I’d certainly do that if the Lightroom plugin infrastructure allowed. Note, though, that if you write back the GPS data to the files, then import metadata from files, Lightroom proper will then know about the GPS data and you can click on the lat/lon coordinates to open up the location in Google Maps (Alt-click to open in Yahoo! Maps).

Take a look at GPSPhotoLinker from Early Innovations. It’s on the path for doing that but it’s not quite to where I’d like to see a tool allow you to shift the time in real time and watch the photo jump from dot to dot in the track path that corresponds the closest. Another way to determine the offset would be to allow moving the x mark on a map like at geohash maps and then from the new coord. determine where that fits time-wise in the tracking flows clock and how much offset that represents from the camera clock.

2. Add a lookup of the location based on the GPS coord. I thought your plugin does that but I’m not finding it.

I’m not sure what you mean…? —Jeffrey

— comment by Teaman on December 8th, 2008 at 5:55am JST (5 years, 4 months ago) comment permalink

One more thing I forgot to request… is there a way to keep the GPS-Support plugin open after submit? Maybe put the view in Google maps button there to preview where it’s going to place the location, then if we see its off, change the offset and preview location again. This would speed up the guess and view while determining the offset. Once we are happy with the offset for multiple pictures, then assigning a bunch of photos the gps data using the same offset and closing the plugin window seems more efficient.

Thanks again and keep up the awesome job on this plugin stuff!

— comment by Teaman on December 8th, 2008 at 6:00am JST (5 years, 4 months ago) comment permalink

Thanks first of all for your great great plugins. I am using both your Upload-to-flickr and your GPS-Support plugin.

However, the latter one does s.th. strange: I am in the grid view of my LR 2.1. and the filter is set to show all photos that are flagged and not flagged (filtering out the rejected ones). Now, once I (successfully) geoencoded a photo (using the method of inserting the yahoo maps link) the photo disappears from my screen. Once I turn off the flag filter (so that all photos, whether flagged, rejected or not flagged) it is there again. Please note that the photo in question was not flagged before and also not rejected.

Can you please help?

Many thanks!

— comment by Martin on December 14th, 2008 at 7:39pm JST (5 years, 4 months ago) comment permalink

Really nice script.
I posted question about how you do it in some earlier blog-note so forget that! :) Now I know.

— comment by Teemu on December 23rd, 2008 at 8:41pm JST (5 years, 4 months ago) comment permalink

Very useful plugin. Although write data back to file and read metadata back puts it back in the league of using something like GeoSetter, but still having integrated support feels much better. I should say, much much better :)
I am sure lightroom plugin architecture is limiting you to make the above steps easier

Some feedback on things that can be fixed / improved:
1. Seems the gpx parser does not like a GPX file which has waypoints. I loaded a day’s worth of datalogger output into your plugin. It had more than 48,000 logged points, but the plugin said it had only one point. Nailed it down to the gpx file also having one single waypoint besides the track with 48,000 points. I removed the waypoint manually and then your plugin was happy again (this would be my workflow until you can handle this seamlessly)
Let me know (here or via email) if you need a sample of this gpx file

2. Of the 100+ files I was geoencoding, 13 could not be tagged because I took them in a basement where I had lost GPS signal. That is fine. What troubled me was to actually find those 13 files. This is actually more of a lightroom issue. Either I don’t know how to search such files in lightroom, or I am not looking at a log file that your plugin must be writing. Any advise on this scenario is very much appreciated

And thanks again for a very good effort. I is making my life much easier. Cheers and happy holidays :-)

— comment by Ashish Pandey on December 26th, 2008 at 5:32am JST (5 years, 4 months ago) comment permalink

Awsome! Now you need one of those cool facebook icons on this page so I can quicky tell all my friends about this! Do you have a facebook?

— comment by Dan on December 29th, 2008 at 12:59pm JST (5 years, 4 months ago) comment permalink

Hello and happy new year,

I have been succesfull in installing and using your plugin into LR 2.1 w/o any effort, that’s awesome, thanks so much

Now a question:

- while my pictures have been exported with the shadow GPS injector, how can I use those to get them mapped out from google maps or panoramio (which actually works as an integrated extra component)?

— comment by Gilles Simon on January 6th, 2009 at 11:54pm JST (5 years, 3 months ago) comment permalink

It might be good to state upfront what capability people will be receiving in terms of their capability gap. It’s very evident that people who know about geoencoding are the ones having their ears raised. For those that don’t know what you are talking about, you ought to take the time and explain the wonders of what people gain by using your plug in. What’s the overarching benefit? What will I gain by using it? What if I don’t? do you have any scenarios? What if I’m already using Geomet’r? Good idea, certainly, but not being sold correctly.

I’m “selling” it for free. Is that not sufficiently correct? —Jeffrey

— comment by Kev001 on January 31st, 2009 at 7:16am JST (5 years, 3 months ago) comment permalink

This is an amazing plugin. I downloaded, installed it and tested it this morning, all in about 2 hours. I used gpsbabel to convert magellan .trk files to gpx files and the only glitch I had was with the timezone.

My GPS is set correctly for EST, and the camera is properly set for timezone also. When I tried to encode the pics, I had to set the timezone in the import dialog to HST (-10). Not sure why.

Anyone know what’s going on here? In any event, it’s a very workable solution.


The GPS timezone shouldn’t be relevant because that should, as far as I know, impact only how it displays the time to you, and not how the time is encoded in the tracklog (which should always be UTC, I’d think). If you can send me an original image and the TRK file, I’ll see what I can figure out. —Jeffrey

— comment by Robin on February 7th, 2009 at 10:40pm JST (5 years, 2 months ago) comment permalink

I figured out what was going on with the timestamp. In case anyone else experiences it:

- I used Magellan Mapsend to read the track from the GPS, and then saved it as a .trk file. When converted by gpsbabel to .gpx, the date stamp on each track point shows that Mapsend shows UT+5
- If I use gpsbabel directly to read from the GPS, and save to a .gpx file, the correct UT is shown

Since the lightrom plugin converts the photo date stamp to UT, mapsend requires an offset of -10 hours. Otherwise, the normal (for EST) -5 hours is needed.

Since I can’t directly read the .trk file, I can only surmise that Mapsend is adding the timezone offset before creating the track file.

— comment by Robin on February 8th, 2009 at 10:00pm JST (5 years, 2 months ago) comment permalink


Based on what I have read after I have gooled, GPS and Lightroom, it certainly look like you know what you are talking about, so perhaps you can help me.
I am new in geokoding, I have problem with understanding data, perhaps you can help me, and excuss my english, i am from Denmark. I am using the program Geosetter to get GPS data into my pictures both JPEG and RAW, bur I c+ant see the data afterwards in Ligthroom, do you have any clue to what I am doing wrong ??

Another problem:
Sometimes I am using my sony GPS unit, but it cánt seem to write GPS data into the RAW files, do you kwon the GPS unit from Sony ? and if you do do you have the same expericed that it cánt put GPS data into Raw files ?

In advance thank you for any help L. Sandberg

— comment by Lars Sandberg on February 20th, 2009 at 3:56am JST (5 years, 2 months ago) comment permalink

Thanks for your work on all of these plug-ins! I’ve just started using the Geoencoding plugin, and I’m trying to use it with data in GPX format from the GeoCorder app on the iPhone. When I tried to point the plug-in at the GPX file, it said there were no data points in the track log. When I ran the file through GPSBabel, doing GPX -> GPX, then your plug in was able to read it successfully.

When I diff the files, it seems like the big change that was made is in the way dates were encoded. GeoCorder puts the date stamp in local time, with the offset:
The file from GPSBabel converts all of those time stamps (somewhat badly) over to UTC. Any chance a future version of the plug-in could handle this time format?

I suppose I could try, but a GPX file with local times sounds broken to me. I’ll send a note to the GeoCorder author, if I can find him/her. —Jeffrey

— comment by Ryan on March 1st, 2009 at 8:20am JST (5 years, 2 months ago) comment permalink

After spending an hour and not getting what I want out of your plugin, I’m frustrated.
I am a photog that shots with a digital camera that has gps data encoded in the metadata,
I would like to create a simple .kml file with the selected images in LR2 and have been unable to do that with your program. I wonder if its possible.

File > Plugin Extras > View Locations in Google Earth will build a kml file and launch Google Earth. It’s not as snazzy a kml file as could be, but it’s a start. —Jeffrey

— comment by Louis Dallara on March 10th, 2009 at 1:06am JST (5 years, 1 month ago) comment permalink

Your plugin looks great, I am especially interested at the bearing info, that very few software are able to embed in the file.
Though nikon camera support this directly.
However before using your plugin I would like to ask a question: the bearing you compute seems to be the direction of movement which is not quite the same thing as the direction of the photo. Am I correct?

Yes, the bearing is that of your movement at the time the photo is taken.

In that case when you write back this info on the photo are you writting it in the “direction of movement” EXIF field?
A nice addition would also be to let the user manually add the direction of the photo .
I was also wondering if you were able to use the GPS data to fill the xmp time with the timezone. That would be great as lightroom is not very good at that.
( I remember version one using the systeme time zone which did not fit most of my photos and resulted in a big mess when trying to filter them by time -> I want to see all my night shot oooups these were taken during day time why are they here? Since then I always set the time zone +summer winter time outside lightroom before importing any photo, but doing it within lightroom would be great)
Best regards

Timezone stuff is a total mess in Exif data, mostly because the people who created the Exif standard didn’t allow for timezones to be recorded. It’s difficult to fathom how stupid and shortsighted this decision was. In any case, at least the GPS data allows the time to be recorded in UTC, which is unambiguous. —Jeffrey

— comment by Eric on March 10th, 2009 at 11:44am JST (5 years, 1 month ago) comment permalink

Feature request: I use the Nikon GP-1 to geotag images in-camera. Sometimes a few images in a series/shoot are not tagged (the unit can’t get a signal, photographer too quick, etc). It would be very nice to “fill in the gaps” in Lightroom: All non-geotagged images could be tagged using interpolation from the GPS information in the geotagged images. Possible?

Possible now, as of version .59, which I just pushed. See the release notes for that version, above. In theory it should work, and it did during my limited testing, but I didn’t test exhaustively, so please let me know if you run into problems. —Jeffrey

— comment by Christian Løverås on April 16th, 2009 at 7:23am JST (5 years ago) comment permalink

Hi Jeffrey,

Thanks for putting together an outstanding plug-in! I just started using it in my work flow with Lightroom 2.3 and have a question: my current work flow is to import the RAW files, select out the keepers, rename them, and convert to DNG. The first time I tried to geoencode the DNGs it went horribly wrong; then I realized that the program was using the DNG conversion date to match with the GPS track log instead of the original shoot date. Is that possible, given the structure of DNG files and the way LR2 stores metadata? I later repeated the same process with the RAW files and everything worked fine. While that’s certainly an option, I would prefer to geoencode the DNGs. Am I doing something wrong?



Hi Peter. If you’re using a reasonably-recent version of the plugin, it should be using the dateTimeOriginal, which should be the photo time, not the conversion time. Be sure you’re using the latest version, of course, but otherwise, check the “All” metadata-viewer preset, and note the “Date Time Original”. If that’s not the photo time, then I’d think you’d have some issue with how you’re building DNGs (or I have some issue with my understanding of metadata dates). Get back to me via email with more details, if need be… —Jeffrey

— comment by Peter Knoot on April 28th, 2009 at 5:06am JST (5 years ago) comment permalink

I’m writing from Guaymas, Sonora, Mexico asking for some clarification. I just installed your plugin and am successfully using it. A Great Product!!!! I am confused about the shadow data issue. You note that the plugin now allows me to write the shadow data into the original image files. Your plugin produces data in the “GPS Support” section of the LR 2.3 metadata panel. Is this shadow data or data that is actually written into the file’s metadata? If not, please provide instructions on how to write the shadow data into the file’s metadata. I see no location data in the “Location” section of the image metadata so I’m assuming the data is still shadow.

Many thanks,


There are three places for GPS data to be: in the image file, in Lightroom’s database, and in the plugin’s database (which is really part of Lightroom’s database, but we’ll consider them separate because Lightroom considers them separate). The “GPS Support” section of the Library Filter refers only to the plugin database. The “GPS Data” item refers only to the Lightroom database. In order to get data from the plugin to the Lightroom database, you have to “write back” the data, then reread it back into Lightroom. See the instructions and warnings in the “Write Back” tab of the plugin dialog, since doing it wrong can actually destroy data. This is all a royal hassle, but it’s the best I can come up with in the face of severe limitations in Lightroom’s plugin architecture. If everyone complains to Adobe about this, perhaps they’ll fix it. —Jeffrey

— comment by Bill on May 4th, 2009 at 8:42am JST (4 years, 11 months ago) comment permalink

Nice work, the plugin installed and auto-updated the old one smoothly. I’m using it to geotag old photos by importing the location from Google Earth into the plugin and then writing the image files.

Is it possible to have a shortcut key that will perform these two steps automatically since clicking: File > Plugin Manager > Geoencoding, then clicking ‘Import location from Google Earth’, then clicking ‘Geoencode Images and Write Image Files’ (phew!) is a little long winded!

I’ll be pushing something soon that will be even better. ;-) —Jeffrey

— comment by Leon Roy on May 22nd, 2009 at 7:08am JST (4 years, 11 months ago) comment permalink

Very interesting tool!
But when I try to import locations from Google Earth the Crosshair Target will be shown but executing import causes this message:
?:11016: bad argument #2 to ‘?‘ (number expected, got nil)
It returns with nothing done.
What can I do?

Thank you!

Version 20090521.75, Google Earth 5.0, Windows Vista (Italian), LR 2.3 (German)

Please upgrade to the latest version of the plugin, then tray again. After getting the error, please send the plugin log, via the “Send to Jeffrey” button in the upper-right of the Plugin Manager. Thanks. —Jeffrey

— comment by Ludger on May 26th, 2009 at 12:27am JST (4 years, 11 months ago) comment permalink

Now it works fine, thank you!

— comment by Ludger on May 26th, 2009 at 6:54am JST (4 years, 11 months ago) comment permalink

Hi Jeffrey. Firstly great plug-in… if you’re using it only for stuf like google maps and so forth. I am from South Africa and we have been looking for a program to geo-encode images for use in ESRI’s ArcMap. That way when we open a map and want to see the location of an image it will basically already be “projected”. I have used your plug-in and tried to open the image using ArcMap but it says no projection defined so it doesn’t know where to place the image… seems to not be reading the metadata of the file. Is this something you are looking to correct in the near future or will there be no call for it?

Thanks again as i will definitely be using this in a personal capacity if and when i can.

kind regards,
Mark Struwig

The GPS data is not written to the original image master source file unless you go through the procedure described in the “Write Back” tab. Perhaps the app you mention can understand a KML file (which is what I use for showing the location in Google Earth)? If so, perhaps I can swing something… —Jeffrey

— comment by Mark Struwig on May 28th, 2009 at 4:43pm JST (4 years, 11 months ago) comment permalink

it will understand KML… thanks

Okay, I just pushed a new version that includes the ability to pick any application and launch it with a KML file of the selected images. In the Plugin Manager, click on “Configure Plugin Extras menu items” and you’ll see it at the bottom. I tested only with Google Earth, but you should be able to use any app that accepts a KML file on the command line. —Jeffrey

— comment by Mark Struwig on June 1st, 2009 at 4:39pm JST (4 years, 11 months ago) comment permalink

Hi Jeffrey. Even though the KML export didn’t work for the app you have still saved us a hell of a lot of hassle!! We can still use the KML export just in a round about way which is still perfect! Thanks for a wonderful app and you can expect a donation from us soon.


— comment by Mark Struwig on June 1st, 2009 at 10:17pm JST (4 years, 11 months ago) comment permalink

Hi Jeffrey. I’m a huge fan of your Lightroom plugins. Keep up the great work!

I have a feature suggestion for the GPS plugin. I have thousands of photos on my disk and no time to precisely geotag each of them. Instead, I use approximate City coordinates from http://www.gpsvisualizer.com. Then I save them as presets for future use. It would be great if this could be automated. Perhaps a script could be written, so that the GPS coordinates are pulled from online databases (Google, Yahoo, etc.) based on information already specified in the IPTC/XMP fields (Location, City, State, Country). Just an idea!

I’m not really thrilled about that idea because (at least in my mind) geoencoding is supposed to be fairly specific, and if it’s not more specific than the name of the city, why bother? I’d perhaps be more willing to accept it if there were a standard way to indicate how accurate the encoding was (and in this case, for most towns, it’d be “within 10 or 20 miles”), but I’m all about getting accuracy down to a meter or three. —Jeffrey

— comment by Orlin on June 4th, 2009 at 2:26pm JST (4 years, 10 months ago) comment permalink


I’m a new user of Lightroom 2 and just tried out your Geoencoding Plugin. Great work!!

One question:
Where (in which file, WinXP) is the “shadow” GPS data for each image kept? For me that’s important information to backup the right stuff.

Thanks for your info

Like all plugin custom metadata, it’s only in the Lightroom Catalog (the “.lrcat” file). When you back up that file, be sure that Lightroom is not running at the time. —Jeffrey

— comment by Beat Gossweiler on June 6th, 2009 at 10:45am JST (4 years, 10 months ago) comment permalink

Jeffrey are there any pros/cons to using the ‘written back’ feature vs plain gps shadow info stored in the .lrcat database file? I was thinking having the gps data written to each xmp sidecar file would be a good idea in case I needed to move or restore some raw image files from a backup drive to another computer also with Lightroom. What’s your opinion or suggested settings?

BTW: Great plugins and it was a pleasure to show my appreciation ($$) for your time saving Lightroom tools.

Personally, I have come to the conclusion that, generally speaking, maintaining XMP files is just not worth it. If you need them for something specific (interaction with 3rd-party apps) that’s one thing, but as a backup, they just don’t cut it. To be effective, you have to ensure that they’re always up to date, but that puts a huge drain on day-to-day interaction. It also makes a lot more work when backing up your tree. And even with a tree full of XMP files, you still need to back up your LR catalog because some info is not kept in the XMP. But if you back up the catalog, you’ve got everything, so why bother with the XMP at all? The catalog is one file…. take care to back it up properly (while LR is not running) and you’re covered. —Jeffrey

— comment by Tom G on June 23rd, 2009 at 9:56am JST (4 years, 10 months ago) comment permalink

I use my GPS (Garmin E-Trex) frequently, most often when I’m camping, fishing, hiking, or hunting. I don’t take my camera on many of these outings. When I do go out, I take a map, compass, straight edge, etc so that I can continually practice my orienteering and navigating skills. All of my maps and my GPS are set to use UTM coordinates here in the US of A. Will your plug-in accept and display UTM coordinates, or does it just use DDD’MMM’SSS”? I need to know so I don’t get lost somewhere! Thanks for the work you’ve done on this. Hopefully I’ll get to try it out soon.


For input, it can do DMS and decimal notation, and a bunch others. It’d doesn’t accept UTM (I had to look it up), but if there’s an easy way to convert to latitude/longitude, point me to it and I’ll add it. —Jeffrey

— comment by Mark on August 8th, 2009 at 1:51pm JST (4 years, 8 months ago) comment permalink

I had previously asked a question about displaying UTM coordinates through your plug-in. I have found a site that allows programmers to freely use a routine that does convert degrees to UTM. This is it:


I have finally used your plug-in, and it works very well. I’ll be taking some trips up into the mountains of Arizona soon, and will take full advantage of your work. Thank you very much!


Thanks for digging that up…. I’ll take a look. —Jeffrey

— comment by Mark on August 12th, 2009 at 10:03pm JST (4 years, 8 months ago) comment permalink


I’ve just started using your plug-in, and after several years of testing way too many other solutions, yours is by far the best. Congratulations and thank you. This will make an enormous difference in our conservation work.

I have started using a netbook (Samsung NC10) in the field on expeditions. The plug-in works, but the small screen size/resolution (1024 x 600 max) means that when I pull up the Geoencoding (File>Plug-in Extras>Geoencode…) the window (Jeffrey’s Geoencoding Support) is too large for my screen and it locks LR when I try to resize it. Roughly half the screen is cut off (everything below the “load presets from file” button).

My work-around is remembering how many tabs it takes to position myself on the “Geoencode Image” button, but I’m wondering if you might have a better solution to suggest or one in the works? Thanks.


…David (Washington, DC)

In the Plugin Manager, enable the “small dialog for small screen” option. It may not be enough for your small screens (which are way smaller than officially supported by Lightroom, I think), but it should help a lot…. —Jeffrey

— comment by David G on August 24th, 2009 at 8:15am JST (4 years, 8 months ago) comment permalink

I’m trying to geoencode a set of photo’s taken over a 4 week period, using a set of GPS files in NMEA format, using the automatic gpsbabel conversion to gpx format as built into your plugin.
This 4 week period is covered by 104 files, each file being about 2 Mbyte. The logging interval was set to 1 second. With on the average 10 hours logging per day this results in about 1 million track points.
If I select all tracklogs, the plugin gets confused. In a typical example, after checking tracklog, it reports “Selected tracklogs have 66.705 datapoints … ” and reports a begin and end date that are 2 days apart, instead of 4 weeks.
Is there a limit to the number of tracklogs, or their total size, or the number of trackpoints?

Apparently so! In theory there’s not, but I’d not tested it with huge datasets like that. I’d suggest doing it in smaller chunks…. —Jeffrey

— comment by Peter Kroon on September 7th, 2009 at 5:39am JST (4 years, 7 months ago) comment permalink

Is there any way to have the plugin actually write the GPS data into the real master image file, i.e. the .JPG and also any backing raw file (.CR2)?

The “writeback” tab of the geoencoding dialog allows you to write the GPS data back to the master image if the master image is a JPG or a DNG. Raw files shouldn’t be written, so in that case the plugin writes to an XMP sidecar. On export, you can have the plugin inject the gps data into exported JPGs. Personally, this latter functionality is sufficient for me, so I never do the writeback, but to each their own. —Jeffrey

— comment by Ric B on September 17th, 2009 at 9:43am JST (4 years, 7 months ago) comment permalink

I’ve been trying to get this plug-in to work as it seems like a great idea. I have loaded it and it shows up correctly under Metadata. Also in Library:Geocaching metadata a dialogue box shows up. But nothing at all shows up under File:Plug-in Extras.
Any suggestions. Mac Pro LR 2.5, OS 10.5.8

That’s really odd… it sounds like you’re describing something that’s not my plugin. (Library:Geocaching???). Could you send a screenshot? —Jeffrey

— comment by John Doogan on September 17th, 2009 at 10:23am JST (4 years, 7 months ago) comment permalink

Whoops, I was looking at the wrong plug-in. I have the correct one working as expected now. – John Doogan.

— comment by John Doogan on September 18th, 2009 at 5:10am JST (4 years, 7 months ago) comment permalink

I am writing from Waukesha Wisconsin, USA. I have having trouble using your GPS Support plug-in with the .log files that are produced by my AMOD AGL-3080 geologger. GPSBabel does not seem able to convert these files to .gpx, either. At least, I cannot figure out how to run the conversion. The AGL-3080 mounts as an external hard drive, which generally makes things very convenient with my Mac. HoudaGeo has no problem with this log files. I simply mount the geologger and point the software at the .log file. It would be much nicer to not have to run all of my photo files through an external program before importing them into LR. Is there a way to make your plug-in work with .log files? Thanks. — Dave

From what I’ve seen on the web, you should be able to convert with gpsbabel…. perhaps you need only “-i nmea” in the plugin. From what I’ve seen, it’s a simple NMEA log format. —Jeffrey

— comment by Dave K on October 26th, 2009 at 6:52am JST (4 years, 6 months ago) comment permalink

I seem to get errors using this plugin in the LR3 Beta, maybe it is not ready? I love your plugins for facebook/smugmug/gallery and will be registering soon. Thanks for all your hard work.

Tobias, VT USA

— comment by Tobias on October 27th, 2009 at 3:21am JST (4 years, 6 months ago) comment permalink

For DaveK-

I have the same logger, and it uses regular NMEA 0183 sentences (not whatever GPSBabel knows as a LOG file). My logger started out as a great little device, but I’ve found that it quite often doesn’t record a track even though the LEDs show it operating. It seems to be a battery power thing. I’d be interested to hear if you have any of the same issues.

— comment by JasonP on October 27th, 2009 at 3:36pm JST (4 years, 6 months ago) comment permalink


nice plugin!
I’d like to request the possibility to use geonames.org, too.
This service gives me better results than google.
I made a comparison between them and for locations in e.g. Denmark, geonames.org gave me far more detailed results.


Could you send (via email) some example coordinates? I tried my home and it couldn’t tell me any more than “Japan”. —Jeffrey

— comment by Niels on November 14th, 2009 at 2:04am JST (4 years, 5 months ago) comment permalink

I’m blogging from Surprise, Arizona (yes, really). I recently posted a mini-tutorial on your plug-in on my photography blog site.

Hope I gave you enough credit, you certainly deserve it. The plug-in is great.

My photo site is at http://www.randyjacksonimages.com

— comment by Randy on January 6th, 2010 at 12:35pm JST (4 years, 3 months ago) comment permalink

Dear Jeffery,
Thank you for the Geoencoding Plugin.

I have a question on the writing back to Raw files (Nef). Up until now I have used Geosetter to add the GPS to my Nef s (xmp sidecars) then read into LR2.x.

Now evaluating Geoencoder, th job is easier as its all handled in lR. tha I like, however, I write back the meta data to raw, and then re-read the raw in another program (LR3 Beta to be precise) and the GPS is not carried back.

You wrote to one person “….. Raw files shouldn’t be written, so in that case the plugin writes to an XMP sidecar…..”,

So I assumed I had the GPS written back to the sidecar files. As LR3Beta didn’t pick the GPS data up I assumed this did not occur. Other metadata did get picked up in LR3Beta that I used the plugin for in LR2.6 (Location etc)

Many thanks in advance for any pointers you can give.


LR3b should pick up the written-back GPS data if you load the files in LR3b after writing the GPS data in LR2. Or, after writing the GPS data in LR2, “metadata > read from file” in LR3b. I don’t use LR3b so haven’t actually tested it, but it should work in theory…. —Jeffrey

— comment by simon Leppard on January 10th, 2010 at 8:22pm JST (4 years, 3 months ago) comment permalink

Dear Jeffery

Many, many thanks for the prompt reply,

I have now sussed it. I erroneously thought that the data would be written back to GPS codes in the XMP as Geosetter does.

I have looked again at the data, and your Geoencoding Metadata present shows all present and correct.

Donation on the way

yours faithfully

— comment by simon Leppard on January 10th, 2010 at 9:34pm JST (4 years, 3 months ago) comment permalink

I tried your plugin today and it works fine. I find it what complex by using the shadow gps fields and the extra steps needed to embed the data in the real fields but that is not so hard.

I only have one question (maybe I missed it out). Is there a possibility that the coordinates are also transferred to City, State/Province and Country values and that these fields are also filled automaticly (via shadowGPS fields)?

Many thanks in advance,


Yes, that’s “reverse geocoding”, and it’s available in the “Interactive” tab of the Geoencoding dialog, where you can keep an eye on it to make sure the data it comes up with makes sense. —Jeffrey

— comment by Filip on February 3rd, 2010 at 4:37am JST (4 years, 3 months ago) comment permalink

OK, thanks I found it now. I’ll try it out further.

BTW: I’m from Belgium ;-)

— comment by Filip on February 4th, 2010 at 6:05am JST (4 years, 2 months ago) comment permalink

Hello, I love the plugin. I tried the reverse geocoding also and it works like a charm ;-)

Only one point: When you use the ‘Copy from above’ or ‘Copy from below’ buttons not only the locationfields are copied but also the coordinates. That’s not always wanted (not by me anyway). Can’t you provide a checkbox or so to include/exclude the coordinates when you copy the locationfields.

Thanks for the good work,


Up until recently it copied only the coordinates, until someone requested it copy the city/state/etc as well, so I added it. The UI is pretty cluttered as it is, so I’m not sure it would be worth trying to change it. I suggest getting the coordinates all set, then do a bulk reverse geocode on the whole thing…. —Jeffrey

— comment by Filip on February 5th, 2010 at 10:50pm JST (4 years, 2 months ago) comment permalink

Are there any plans to integrate Google Maps directly so that no copy paste is necessary?
Would be great to set just a pin on the map for a set of photos (like iPhoto or Aperture 3).
There’s some rudimentary Google Maps support in there now… “import location from Google Maps”, in both the static tab and the interactive tab. —Jeffrey

— comment by baszero on February 10th, 2010 at 6:45pm JST (4 years, 2 months ago) comment permalink

Where is the GPS shadow data stored if I do not export the image? It must be somewhere in the Lightroom database. If I have images stored as JPEG and export at 100% in order to write the GPS info, won’t that be a JPEG resave that will cost me some amount of quality?
It’s all described on the plugin’s page, linked from this one. —Jeffrey

— comment by Tim on March 11th, 2010 at 4:26am JST (4 years, 1 month ago) comment permalink

Thanks for a plugin that looks impressive and hopefully will deliver lots of joy still for me!

As for now, I’m getting the “Datapoints in that tracklog don’t have timestamps” error message that others have reported about in earlier versions — I’m running 2000317.115 on my Mac. I’ve tried GPX files created both by “Time Album v. 1.7.1″, a JAR app belonging to my GPS tracker Columbus V-900, and a GPX file created from GPSbabel+ 1.3.6.

Anything I should do differently?

Some units/apps that create GPX files don’t put timestamps… take a look at it in a text editor (TextEdit or Notepad) and see whether you see anything that looks like a timestamp. If you do, maybe my plugins isn’t reading it correctly, so send a small sample to me via email… —Jeffrey

— comment by Kaj Arnö on March 21st, 2010 at 11:51pm JST (4 years ago) comment permalink

I have exactly the same problems than Kaj Arnö. I also use the Columbus V-900 and work on a mac.
When I look in the file with an text editor I think I see timestamps. Do you have a solution meanwhile for that problem?

If it doesn’t have timestamps, there’s nothing one can do. If it has timestamps but in a broken format, you can perhaps fix them in a text editor, or try something like GPSBabel to change the format to the GPX standard. —Jeffrey

— comment by Beate on April 10th, 2010 at 4:53pm JST (4 years ago) comment permalink


I have discovered the delights of the preset section on page one of the Geoencode plugin.
I have a question on its behaviour.
I travel to several places and have saved waypoints for various places (streets where GPS does not work).
I have discovered the file format for the presets in Geoencoding and tried to make several sets so I could load individual sets (e.g. Spain, UK etc).
However, the presets are additive and I end up with a great big list.

Is there a way to “unload” the presets so I only load the ones I need?

By the way I am mostly using the LR3 Beta 2 with Geoencoding and have yet to have any issues.

Many thanks in advance for any pointers you have


I just pushed a new version (v120) that includes an option in the load-presets dialog that allows you to clear out the current presets when loading the new ones. —Jeffrey

— comment by Simon Leppard on April 14th, 2010 at 5:26am JST (4 years ago) comment permalink

I may be the only that the could use this capability, but I think it’d be cool if the plugin could:

- Examine a series of GPS log files
- Using the filtering capability w/in select the set of images to which the date range of the log files would apply
- Perform the encoding as usual

The reason for this approach, is my photo GPS doesn’t work with Windows 7, so I have to book Ubunti, fetch the files off the device, and reboot. As a result, I end up with a giant folder of GPS log files which sometimes don’t get applied to the photos as contemporaneously as they ought.

Thanks for a fab plugin.

You can pretty much already do this…. just select all the photos and invoke the geoencoding plugin, then select all the tracklogs, and apply. —Jeffrey

— comment by Scott Blessley on April 23rd, 2010 at 2:15am JST (4 years ago) comment permalink

Hi – firstly, thanks for great plugins. I donated to you for the Geoencoding in LR plugin and received an unlock code a long time ago. I recently upgraded to LR3 and it seems like I need the code again – do I need to make a new donation for the plugin to be active in LR3? If not, how can I get my unlock code again? Thanks.

As described on the plugin page and the registration page, the Lr3 versions in Lr3 need new codes. You can generate one with a one-cent transaction. Sorry for the hassles. —Jeffrey

— comment by Pieter on June 16th, 2010 at 3:55am JST (3 years, 10 months ago) comment permalink

One comment from a Nikon/View NX user perspective. Nikon supports GPS in camera and writes coordinates into EXIF. Often enough however, GPS isn’t quick enough to lock and register before I push the shutter release. View NX allows to cut and paste GPS data from one image to a selection of other shots with two click action. This is probably the only feature I am missing from your otherwise excellent plugin.

The whole UI of my plugin is pretty bad, I know. But, this particular thing is easy enough to do in the Interactive dialog (“copy from above”, “copy from below”), though the whole interactive dialog got a lot less interesting with the loss of thumbnails in Lr3. )-: —Jeffrey

— comment by Peter on June 23rd, 2010 at 9:48am JST (3 years, 10 months ago) comment permalink

Thanks for that Jeffrey, I missed it first time. Anyway, having done a bunch of images I would like to make a suggestion:

To provide a box next to each image so we could tick those that we want the Google Earth import to be applied to. One extra box would be for “select all”

Again as an option being able to automatically write to XMP sidecars, so I don’t have to click another tab and another button.

I guess refresh of metadata being outside of the plugin would need to remain a separate activity…

— comment by Peter on June 23rd, 2010 at 2:26pm JST (3 years, 10 months ago) comment permalink

Some dummy questions:
- any difference if using Nikon own GP-1 or some external device?
- if using Nikon GP-1 it writes gps info to the image files so is this plugin needed?

If something writes gps info directly into the file in camera, you don’t need this plugin unless you want to correct some of the data, or use the extra features such as the various “View in…” functions, or the reverse geocoding, etc. —

— comment by Hannu on August 9th, 2010 at 5:34pm JST (3 years, 8 months ago) comment permalink

Jeffrey, I just tried doing this using a tracklog from my iPhone and it seems to be pretty cool! However, a fairly large subset of the images taken along the track show up in the log with something like the following:

Tracklog has datapoints 6 minutes (380 seconds) earlier, at: 30.595763, -98.101750
and 3 minutes (186 seconds) later, at: 30.595906, -98.101764
The two points are separated by 16 meters (17 yards).

I’m wondering what would cause this? Is the GPS unit getting confused, or is it just not creating datapoints often enough?

It’s giving you that message because the photo time is during a 9-minute gap…. perhaps you were in a building (and the two points represent readings just going into and out of the door), or perhaps because it’s set up not to log points unless you move “enough”. Check the logger settings… —Jeffrey

— comment by Bill Ledbetter on August 14th, 2010 at 5:21am JST (3 years, 8 months ago) comment permalink

Hallo, i’m coming from germany and my englisch is not good. Today i have installed this great plugin, but i have a problem. I can see the gps data, gps shadow says yes, but i dont see the region, town , country.
What can i do??
My camera: Panasonic Lumix DMC TZ10

Town, country, and such are filled in only if you do the reverse geocoding, via the dialog that opens in the Interactive tab. The UI design is horrible, sorry. —Jeffrey

— comment by buemic on September 9th, 2010 at 11:50pm JST (3 years, 7 months ago) comment permalink

I would also like the ability to tie a Sublocation/City/StateProvince/Country to a GPS coordinate. I agree that it will not be accurate, but at least, when I export images from LR into a photo-application (like on the iPad) that supports showing photo locations on a map, those images would be included.

I would like to have both an automatic mode (i.e. download from internet) and a manual mode (i.e. all my images with the same Sublocation/etc. should have the same GPS coordinates. Well – not those that have real GPS coordinates already, of course

You can do all this via the “Interactive” tab in the geoencoding dialog. —Jeffrey

— comment by Henrik on October 24th, 2010 at 2:34am JST (3 years, 6 months ago) comment permalink

Great PlugIn!

But I have one problem:

When I try to open the location with Google Maps, Yahoo or whatever, I get an error-message telling me, that the application could not be found…
How to fix that? Am I doing something wrong?

Regards from Germany,

Sounds like an install issue with Lightroom or your system browser. Does the “Lightroom Exchange” button in the lower-left of the plugin manager yield the same error? If so, perhaps try reinstalling Lightroom or your browser, or asking Adobe… —Jeffrey

— comment by Tom on January 5th, 2011 at 10:23pm JST (3 years, 3 months ago) comment permalink

Thanks, it was – surprise surprise – yet another windows-problem.


— comment by Tom on January 6th, 2011 at 10:45pm JST (3 years, 3 months ago) comment permalink

Hi Jeffrey,

Thank you for this great plugin, works great! Are you planning to support Gisteq loggers as well?
And further more do you any good layouts / templates for creating web galleries that show a (google) alongside the photo’s? At the moment I’m using JetPhoto for this. But would be nice to be able to do this all inside Lightroom.

Kind regards,


The plugin works with GPX files, which any modern unit should be able to create or convert to. I don’t understand your second question (“shows a google?”), but I have no experience with web-gallery tools, so I doubt I’d be able to offer anything useful. —Jeffrey

— comment by Roy on January 10th, 2011 at 5:23pm JST (3 years, 3 months ago) comment permalink

Would be awesome if this plugin allowed functionality like Picassa for tagging – just select the photos then click Geo-Tag, it opens google earth with a set of crosshairs – just pick the location and click done and it returns to picassa with the photo(s) tagged

You can essentially do the same thing with the plugin’s “Geoencode selected photos from Google Earth” feature. On a Mac you can even set a keyboard shortcut for it so that simply tapping one key combo and the currently-selected image is geoencoded with the current location from Earth. It’s about as seemless an integration as Lightroom allows. —Jeffrey

— comment by Markus on January 11th, 2011 at 7:56am JST (3 years, 3 months ago) comment permalink

I apologize if this has been covered in the multiple pages of comments, but I have been checking out your GPS encoder, which I absolutely love. (I have been using Geosetter, so I still don’t know what is different between yours and it, but I love your other plugins) Anyway, what I was wondering is how to Reverse Geoencode multiple images (without producing a bulk reverse geoencode) For instance if I’ve been out shooting and come back I’d like to select all photos, and then go to the “Interactive” tab and click on “Open Interactive One-by-one Geoencoding and Reverse Geoencoding Dialog” and then I wish there was a “Click all City, Etc…from GPS” button, instead of having to click through each photo to reverse Geoencode. Obviously, if I click “Bulk Reverse Geoencode” it will mark all of my photos as if they are in the same location, which may not be the case. Any help or future time saving tips are welcome.

“Bulk Reverse Geoencode” treats each photo individually.

The second suggestion has to do with once you have clicked the “City, Etc… from GPS” button within the “Interactive” tab, I wish that the address that typically populates above the “Location” block would automatically fill in the “Location” block. Right now I am having to manually highlight the address, and then copy and paste it into the “Location”block. Any help or future time saving tips are welcome….

Thanks again for all your help and plugins…..you truly have a passion that is inspiring to many across the world. Keep it up!

Google’s data is very fuzzy for the address/location, so it’s hard to be consistent… sometimes the plugin does fill in the location data, but it all depends on how the data is returned by Google. I’ve made some adjustments and so the next version of the plugin will be a bit more aggressive about filling in the location field with something. —Jeffrey

— comment by Hans on February 4th, 2011 at 7:29am JST (3 years, 2 months ago) comment permalink

Hi – I am looking in to various options for adding geotagging to my photos in LR3. I see that there are several iPhone apps for this in addition to your LR plug- in. What are the pros/cons or differences of your plug in vs GPS4cam or Geoagphotos apps? I am just looking for easiest way to do this as part of my LR3 workflow. Thanks.

Ideally you’d want to use the plugin with a tracklog made while you took the photos, and so an iPhone app might be used to create the tracklog (though I’m not familiar with those apps in particular). Personally I use a dedicated GPS unit, but plenty use iPhone-created tracklogs successfully. —Jeffrey

— comment by Gary K on May 14th, 2011 at 3:59pm JST (2 years, 11 months ago) comment permalink

Wow! I’ve been thinking about something like this for a while! I have no coding experience, but what I do have is tens of thousands of photos that i have taken on hikes and the corresponding GPX data from my Garmin! I love you! I can’t wait to try this!!!!

— comment by Meestermole on June 4th, 2011 at 10:04am JST (2 years, 10 months ago) comment permalink

Hi Jeffrey
I have been using both your GPS-Support and Proximity search plugins, I love them, they are so useful, I just have one question. Is it possible to clear the GPS shadow data? some how I seem to have added the same location to all the images in my LR catalogue and now I can’t export the locations to google earth.

I don’t quite understand the reference to Google Earth, but you can clear the shadow data from the Geoencoding Dialog’s “Un-Encode’ tab. —Jeffrey

— comment by Andrew on June 15th, 2011 at 3:23pm JST (2 years, 10 months ago) comment permalink

I tried using GPSBabel on my Mac using the Config option.
I installed the GPSbabel.dmg successfully.
However when I select the GPSBabel file, the plugin rejects it saying it’s not the valid executable.
How to solve this?

I don’t know what gets installed with your dmg, but if it’s an app, you’d need to point the plugin at the actual executable within it. —Jeffrey

— comment by Marc on June 16th, 2011 at 2:28am JST (2 years, 10 months ago) comment permalink

Dear Jeffrey,
thanks for yet another great plugin!
As far as I understand, you match a photo’s timestamp to the trackpoint with the “closest” timestamp.
Well sometimes you don’t have a gps reading or something else happened (run through a tunnel, ride a train whose windows dont allow gps reception, …) and you might end up having hours without trackpoints.
Thus my feature suggestion: Add an “interpolation threshold it”, if the timely distance to the nearest trackpoint is larger than it, find the next trackpoint with negative sign (i.e. find past+future) and interpolate the current coordinate as a fraction between the two. (Of course if user wants the old behaviour he/she can switch the new one off)
what do you think?
Cheers Gernot

The plugin has always done exactly that. I use the term “fuzziness” for what you call “interpolation threshold”. —Jeffrey

— comment by Nose on October 2nd, 2011 at 6:26pm JST (2 years, 7 months ago) comment permalink

Hi Jeffrey,

Thank you for a great plug-in!
I read the docu and screens and wonder about the following:
a) Why is the image taken time stamp not adjusted to the GPS track log? I did not see it changing when geo-coding the selected images. What am I missing? And in case the plug-in does not do it, are you planning to implement this feature? — I feel silly overlooking something :o)
b) Is there a way to get the location info (populated via reverse Google geo server) into the keywords?
c) Maybe b) can be expanded with a config dialog, as in which field goes where in the keyword tree. Example: I use Word location | Continent | Australia | Far-North Queensland | Cairns, compared to AU| Australia | Cairns.

To come back to this great plug-in… it demonstrates how some simple lon / lat information can become so much more with all the linkages you have established. Simply great work!!

MaxG, Brisbane, Australia

I don’t know what you mean in item “a)”… why should the image’s time be adjusted by the plugin? If the image’s time is incorrect, it’s probably a good idea to correct it whether you’re going to geoencode or not, but geoencoding will be wrong if your camera clock was incorrect and you don’t fix it. (The “compensate…” option in the tracklog tab is for people too lazy to do it the right way.) As for “b)” and “c)”, there’s no interaction with keywords. —Jeffrey

— comment by MaxG on October 12th, 2011 at 8:43pm JST (2 years, 6 months ago) comment permalink

Thanks Jeffrey,

Thank you for your speedy reply.

As for a) I thought the GPS log contains the right time; when adding the GPS coordinates it could update the time stamp at the same time, based on the “Compensate for the camera’s clock” value (not the fuzziness value).
More detailed: I already know the compensation value; why use LR to adjust, when I geo-encode and know the difference that need to be applied.

When you say: “The “compensate…” option in the tracklog tab is for people too lazy to do it the right way.” Are you implying that I should change the time of the images first (after I have established the time difference), and then use your plug-in to add the lon/lat?

Yes. Better still would be to just set your camer’s clock properly, but if you hadn’t and realize the mistake while in Lightroom, use Lightroom’s normal facilities to fix the time. Lightroom doesn’t let a plugin update the time. —Jeffrey

Hence, where I am coming from: I tell the plug-in the time difference, and it updates the lat/lon as well as corrects the time stamp in one go :)

It seems a workflow thing; I am an automation guy :) let the computer do whatever it can LOL

No worries, just a thought and bouncing ideas…

Keep up the good work!

MaxG, Brisbane, Australia

— comment by MaxG on October 13th, 2011 at 6:26am JST (2 years, 6 months ago) comment permalink

Re: GPS Support

I am a refugee from Microsoft Pro Photo Tools which has recently stopped providing reverse GPS (at least for me). I used it because it was the only product I could find that provided street level information.

After a mostly fruitless search, I found your LR plugin. Wonderful!

However, I have a suggestion. You fill out the sublocation field as the entire “address”. What I want and need is only the street level address part, like Pro Photo Tools did. Geosetter also only puts the lowest level information there (sometimes useful but mostly just a repeat of the city).

but I would really prefer the sublocation to be the sublocation as I understand it should be. Here is the IPTC description:

“Enter the name of the location shown in the image. This sublocation name could be the name of a specific area within a city (Manhattan) or the name of a well-known location (Pyramids of Giza) or (natural) monument outside a city (Grand Canyon). Sublocation is the most specific term, at the fourth level of a top-down geographical hierarchy if it is inside a city or at the third level if outside a city.”

I have a number of scripts that rely on these all being parts of the total address, which of course could be rewritten with some effort. But mostly I don’t believe this concatenation is what sublocation should contain.

Thanks for all your work to provide much-needed tools for Lightroom!


I don’t think I’ll be able to make that change… the code is very fragile, owning to the really vague nature of reverse geocoding to begin with, a compounded by the wide variety of location types throughout the world, all mixed in with a healthy dose of randomness from Google that can’t be easily explained. The plugin is using an old Google API, and perhaps it’ll be more regular when I upgrade, but for now I’m reticent to touch that code. —Jeffrey

— comment by Judith Nicholls on December 23rd, 2011 at 11:35am JST (2 years, 4 months ago) comment permalink

Hello Jeffrey,

I just installed your plugin in LR4.Then I was able to transfer GPS data from my “i-GotU” to my shots (NEF files) in LR4.
You have done a great job, and I want to thank you a lot.

Feel well

— comment by Bernard on September 19th, 2012 at 10:34pm JST (1 year, 7 months ago) comment permalink

Hi Jeffrey,

I have a iPhone App called Geotag Photos Pro by tappytaps.com. The software is supposed to work with Lightroom 4.3., but I haven’t been able to test it yet. Do you, or anyone else, have any experience of the software working with your plug-in?

Greetings from Rotterdam, Netherlands.

— comment by Martin Nillesen on January 22nd, 2013 at 10:15pm JST (1 year, 3 months ago) comment permalink

Hi Jeffrey, first thank you very much for your great plugins.

One question regarding Lightroom 5 with GeoTagging and Committing:
I am using LR5 and enabled reverse geocoding. The images that have the GPS coordinates automatically get the city, state and country. They are in italic gray. When selecting Metadata->Save Metadata to File it is actually NOT written to the file. In order for this to work I first need to click on the label for City and select the city, click on the label for State/Province to select the State/Province, click on the label for Country and select the country, click on the label ISO Country Code and select the ISO Country Code and THEN select “Save Metadata to File”.

I tried to get this automized by using your GEO plugin but so far without any success. Is it possoble anyway? If yes, I was grateful to get a hint or a short advise. It’s also appreciated if someone else answers on this as I can imagine that Jeffrey must be very busy with reading and answering those questions…

Thanks in advance!

I don’t use Lightroom’s built-in reverse geocoding because my plugin is so much better, so I’m not sure whether you can do it in bulk, but check out the “Lightroom > Catalog Settings…” dialog for some options that may be related. —Jeffrey

— comment by Chris on February 17th, 2014 at 4:13am JST (2 months, 2 days ago) comment permalink
Leave a comment...

All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.

More or less plain text — see below for allowed markup

You can use the following tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting