Introduction: GeoTagging With a Standalone GPS Unit & GeoSetter

I've searched for other Instructables about geotagging and all of the ones I found used Adobe Photoshop Lightroom to do the geotagging. With the cost of Adobe Photoshop Lightroom anywhere from $170 to $300, Lightroom may be too expensive for the average photographer wanting to geotag their photos. Many of my friends were impressed with the method I use and encouraged me to post this Instructable.
In this Instructable I show how to use Geosetter (freeware) to accomplish the geotagging. Geosetter does not come with a User’s Manual/Guide, so when people first use Geosetter it can be confusing. Therefore, I’ve included lots of screenshots to make the entire process easier to follow. In order to reduce the number of screenshots to upload, in some cases several screenshots have been combined into single images – recommend you view the photos full sizein order to see the best detail.
I’ve been geocoding my photos a few years now and it’s a reasonably automated process. I routinely search for new (better) ways and techniques to improve the process, whether it’s changing to another application or different hardware. The following applications, hardware and methodology I’ll discuss here are the ones that work best for me. I encourage you to experiment and decide what works best for you.
Things you will need for Geotagging
1. Camera for taking photos
2. A GPS device that can save/copy a tracklog. It more convenient if the GPS can output the tracklogs as GPX files, however there are various applications such as EasyGPS (freeware) that can help save them as GPX files.
3. GeoSetter
4. Internet Connection (for getting map information)

Step 1: Why a Standalone GPS & GeoSetter?

On-camera GPS units versus standalone GPS units.
I’ve tested on-camera GPS units (Nikon GP-1 & EasyTagger) and I’ve found that on-camera GPS units are too cumbersome for me (extra cables & storage requirements), have limited capabilities, and they can miss potential photo opportunities. I use Canon and Nikon DSLR cameras and my wife uses a Point-and-Shoot, so we require a process that can be used with any of the cameras we bring along that day. Figure 1 shows a comparison of features for standalone GPS units and on-camera units and should explain why I only use a standalone GPS unit.
GPicSync or GeoSetter?
Over time I’ve used my Garmin Oregon 450 with both GPicSync and GeoSetter (both freeware). There are other applications that can geotag JPGs, but what is important to me is that GPicSync and GeoSetter can also geotag RAW files. Both require GPX files as input so if your GPS doesn’t save in the GPX format then you can use an application like EasyGPS (freeware) to save the tracklog as a GPX file. In my case I just copy the GPX directly from my GPS to my hard drive.
Which geotagging application do I prefer?
Initially I started geotagging using GPicSync, but quickly changed to GeoSetter for a variety of reasons. GPicSync hasn’t been updated since it was created in 2007; GeoSetter is actively being upgraded, debugged and enhanced to this day. GeoSetter has more “robust” capabilities and you can see the changes real time. If an exact track time match isn’t found for a photo time stamp, GPicSync chooses the photo location using either the “last” or “next” track time whichever is closer while GeoSetter interpolates the location between the “last” and “next” locations. GeoSetter has options to check for updates to itself as well as the ExitTool it uses so that you don’t have to remember to check for updates.

In another forum, someone asked me the following question. Can the Garmin Montana be customized to show the time with 'seconds' on the Trip Computer display similar to how you did it on the Garmin Oregon? I believe so; I don't have access to a Garmin Montana to test the following method, but here's what I would try (I am assuming the data format names are the same as the Garmin Oregon):

- create a new profile for geo-tagging
- watch the portion of the following video on the Trip Computer (6:42 - 6:55).
Although the menus are not in English, the steps the person uses are easy to follow.
- Switch from a 6-field display to a 2-field display (as in video)
- Press the top data field and select the "Location" data format from the listing
- Press the bottom data field and select the "Time of Day" data format from the listing

Other useful Garmin Montana links:
Owners manual:
'How to' videos for the Garmin Montana series by GPS City:

Step 2: The Basic Process

Automatic geotagging requires that the camera’s clock be synchronized with the GPS unit’s time. GeoSetter cross-references the time of each photo with the time & locations in the GPS track data. "I was here at this time, so this must be where I took that photo." In an ideal situation, the camera clock keeps perfect time with the GPS, but that doesn’t always happen if the camera clock drifts. In addition, sometimes it can be difficult to set the ‘seconds’ when synchronizing the camera time to the GPS time.
The basic workflow:
  • Power on the camera and GPS units
  • Synchronize the camera time to the GPS (because the GPS gets its time from the satellites)
  • Set the GPS into tracking mode and start the track
  • Take a photo of the GPS clock display (with hour, minute & seconds)
  • Now you can shoot the rest of your photos
  • After you are done taking photos, stop GPS tracking
  • Transfer the photos from the camera photo card to a folder on computer
  • Copy OR save the tracklog to the computer in GPX file format (same folder as photos). Note that this step states “copy OR save.” Some GPS units erase the time data of the track when saving a tracklog, so in that case you copy the “current track” instead of saving it. Older Garmin GPS devices erased time data when saving a tracklog, so be sure how your GPS operates.
  • Launch GeoSetter. Navigate to the folder with the track file & photos and start geotagging!

Step 3: Setting Up a Garmin Oregon 450 GPS for GeoTagging

Most GPS units “out-of-the-box” have clock functions that display time in ‘hours’ and ‘minutes’ - many do not display the ‘seconds’ needed for geotagging without some customizing. Such was the case with my Garmin Oregon 450. To display the needed information easily we need to “tailor” one of the buttons, the “Trip Manager.” The Main Menu options can also be more conveniently arranged for geotagging. I decided to add a new profile specifically setup for GeoTagging (Figure 2) in order to keep the original profiles intact. To add the new profile, I started with a copy of the “Recreational” profile and named the profile “GeoTagging.”
First, lets rearrange the buttons of the main menu to be more convenient for geotagging. Figure 3 shows the original arrangement for the Recreational profile and Figure 4 shows the new arrangement for the GeoTagging profile.
Next, setup the GPS to record geo-position information to be integrated into the photos in post processing. Select “Setup” and then “Tracks” (Figure 5). Set the GPS “Record Method” to “Time” and set the “Interval” to 10 seconds (Figure 6). With these settings the Oregon will record its geo position every 10 seconds.
Is there an optimum track point interval time?
Opinions vary. Some people set their interval to one second to make it easier for GeoSetter to match track points with photo time stamps. In reality, this is unnecessary since the application can be set to correct for any time stamp differences. I prefer to set my Garmin GPS to record a track point every 10 seconds. I’ve found that I usually don’t move very far in ten seconds when shooting photos and the error in location (lat/long) that would result is far less than the best accuracy of most GPS units. By setting the time interval at 10 seconds it reduces the size of the tracklog by a factor of ten. More importantly, I can now let the GPS record all day and not worry about turning it on and off to conserve space; I am only limited by the battery life during recordings (about 15 hours per set of batteries)!
To assign an accurate geotag to each photo we need to set the GPS and camera times to agree. Setting the times to agree can be tricky, but luckily we can correct any time difference in post processing. The easiest way to get all aligned is to shoot a photo that shows the exact time of your GPS device. The Garmin Oregon doesnot normally display a clock that shows the ‘seconds’ (essential for geotagging photos). Here is how I set up my Garmin Oregon to display a clock that includes ‘seconds.’
Starting from the main menu, choose “Trip Computer” (Figure 7). The “Trip Computer” has some presets that can be swapped with the different fields on the display. Figure 8 shows the initial screen and the first of the fields we’ll swap. When you press one of the large fields like “Dist to Dest” you get a new dialog like Figure 9. Search for the button labeled “Time of Day” and press it. For the Garmin Oregon, each track point in the tracklog contains: coordinates, elevation and time stamp. If you use the heart rate or cadence sensor the data from these devices is also included in the tracklog. Press the magnifier icon on the bottom right corner and you can set the top portion to “smaller data fields.” You can tailor the display just about anyway you’d like - my preference is Figure 10.
Now the GPS time in ‘seconds’ can be easily displayed by pressing the “Trip Computer” button on the Main Menu (Figure 7). Figure 10 is the GPS display I take a photo of each time I start a session and when I have a photo that I want to record the specific location, heading, elevation & GPS reception & accuracy information. During the day I may return to this screen and take a photo so I can check alignments in post processing.
Sometimes I like to take a photo of the display to show the “Heading” & “Elevation” for a series of photos since they do not get saved in the tracklog. Although the elevation will be recorded in meters in the Exif meta data, I prefer to display the elevation on the GPS in feet for my photos. That’s how I setup my Garmin Oregon 450.
Figure 11 is a Geotag checklist I created for my GPS that I carry in my camera bag. Although it is designed for the Garmin Oregon 450, it can be easily tailored to other GPS units. The dotted line indicates where to fold the checklist. Once folded I then laminate as a two sided card.

Step 4: Setting Up GeoSetter for the First Time

GeoSetter is a fantastic program to input GPS EXIF data onto your pictures. Below are steps to ensure the best experience when using GeoSetter for the first time.

1 - Start GeoSetter
2 - On the top left, select the “File” tab and then “Settings” (Figure 12)
3 - Select the "File Options" tab and enable the following options:

  • Don’t Create Internal XMP Data if it Doesn’t Exist Already
  • If IPTC Data Exists Already, Use It As Is (Unicode or Local Character Coding)
  • Overwrite Original File when Saving Changes
  • Preserve File Data and Time when Saving Changes

4 - Select “Select All” (bottom left of Figure 14)
5 – Select the “Data Preferences” tab and enable the following options:

  • Consider Daylight Saving Time in Time Zone
  • Save Time Zone to Exif Data
  • Set Taken Date to all Exif Dates
  • Add Time Zone Automatically to Taken Date when Assigning Map Position
  • Flickr Geo Tags
  • Set IPTC Creation Date from Taken Date (can be changed individually for each image)
  • Use Current Language for Countries (instead of English)

6 - The rest of the options are user preference (Figures 16A, 16B and 17).

Step 5: How to Use GeoSetter

Note: I recommend you read “Setting Up GeoSetter For The First Time” first before installing GeoSetter.
The first thing you will notice is that there are five basic areas on Geosetter: 1) ‘Tabs, Address & Toolbar’ area, 2) “Folder View” window (top left), 3) “Image Preview” window (bottom left), 4) “Map” window (top right), and 5) “Tracks” window (bottom right). Here are the steps I use with Geosetter:
  1. Save your photos to your hard drive - it will be quicker and easier to work with them on your computer.
  2. Save the GPX files from the GPS to your computer; recommend placing them in the same folder as photos.
  3. Run GeoSetter.
  4. Select the “View” tab and then “Tracks” (Figure 18)
  5. Select the “Images” tab and “Open Folder”; select the folder location of your photos. (Figure 19)
  6. You should see the first photo high-lighted like in Figure 20.
  7. Identify the location of the GPX tracklog by double-clicking on the folder icon in the “Tracks” window (Figure 21) and navigating to the file (Figure 22). Press “Open.”
  8. The screen should now look similar to Figure 23.
  9. Go to the “Folder View” window and select the last photo to be geotagged. (Figure 24)
  10. Navigate to the first of the photos in the list to be geotagged. Press and hold the “Shift” key then select the photo of the GPS display; this will select all in the series to be geotagged. (Figure 25)
  11. Go to the “Image Preview” window and adjust the size of the GPS display (Figure 26) until it fills the “Image Preview” window from top to bottom (Figure 27).
  12. Place the mouse cursor on the image and drag the GPS screen to the far left of the “Image Preview” window.
  13. The Geosetter display should look similar to Figure 28. Now we are ready to synchronize the photos with the tracklog data. Press the “Synchronize” button on the toolbar (shown in Figure 28).
  14. The synchronize window will pop-up (Figure 29). Here we can adjust any time differences & select the appropriate options to use.
  15. Since the GPS photo was selected last, it will be shown in the “image preview” window. This allows us to compare the time stamp of the photo Exif meta data to the GPS time displayed in the photo. Correct any time difference at the bottom of the “syncronize” pop-up window (refer to yellow arrows in Figure 30).
  16. Once you are ready, press “OK” and you should see a pop-up window like Figure 31.
  17. If you weren’t successful, press “No” and adjust the synchronize parameters accordingly.
  18. If you answered “Yes”, then wait for the program to complete the operation; this can take awhile depending on a number of things: speed of your computer, number of photos, size/quality of the photos, or file types.  If you were successful you’ll see something like Figure 32. Note that the lat/long info is red in color, indicating it has not been applied/saved to the photo meta data yet.
  19. You may find that all of the meta data can not be seen because the size of the thumbnails are too small. You have two options:
  • double-click on the GPS photo display and a “Edit Data” window will popup (Figure 33), OR
  • use the “slider” (Figure 34) on the toolbar to change the size of the thumbnails. I prefer to use the “slider” option because I can still see the other photos Exif meta data.
  1. Since the GPS photo and the photo’s Exif meta data are both visible (Figure 35), we can compare the GPS photo time and lat/long with what Geosetter has proposed for geotagging.
  2. Decision time - we can either save/apply the changes or exit without saving. To save the results and write the geotag info into the Exif meta data press the “save” icon on the toolbar (Figure 36).
  3. The color of the Exif meta data shown on the photos will change from red to black showing that the geotag info is now integrated into the photo Exif meta data. During the save process you will see the status shown at the bottom of the “Folder View” window (Figure 37).
  4. If you decided to exit before saving the changes a “Confirm” popup window will be displayed (Figure 38). This is helpful if you forget to save the changes before exiting Geosetter.
  5. Your photos are now geotagged!

Step 6: Why Is Exif GPS Data Less Accurate Than My GPS Unit?

The short answer is that it might not be less accurate - the application you use to read it may just display it that way. Applications that display Exif meta data may only show portions of the actual GPS info or show the data “rounded.” For example, Geosetter doesn’t display the full precision of the lat/long data nor do many others such as Picasa, Google maps, etc. Other applications such as ACDSeePro2 display the GPS precision as it is actually recorded in the Exif meta data. Figure 39 shows screenshots from ACDSeePro2 of the Exif meta data for the same photo before and after showing the GPS information that was added to the Exif meta data. Notice that the lat/long meta data indicates a higher degree of precision than what Geosetter actually displays during geotagging.


persiomenezes (author)2015-01-09

How can I set bulk keywords?

tdwm (author)persiomenezes2015-03-12

Select the images you want to all have the same keywords, open 'images, edit data' (control+E), 'categories/keywords' tab, type keyword(s) in the appropriate blank box and hit return for each; click on 'Set current values for all selected images...' and tick 'keywords' and 'changed items only' boxes, 'OK' and 'OK'; Save the changes to the files... should be all good.

MacGyver9 (author)persiomenezes2015-01-11

In GeoSetter there are two different methods to add muliple keywords to groups of photos. You can setup keywords to use each time you process a set of photos, or you can manually add multiple keywords to use for different groups of photos.

To setup keywords to use each time you process a set of photos:

1. Select File, Settings..., ExifTool tab
2. Check the Use Additional ExifTool Commands box
3. Place a command line similar to the following (but using your own keywords)
-keywords="Disney World" -keywords="Orlando" -keywords="Florida"

The above example will replace all existing keywords with three new keywords ("Disney World", "Orlando", and "Florida"). Refer to the Exiftool & GeoSetter Help sections for more information. The photo at the bottom of this comment shows what this would look like.

To manually add multiple keywords to different groups of photos:

There are a couple of ways to do this. The first is shown in a tutorial located here and another is demonstrated in a YouTube video (approximately 2:53 of the video). Hope this helps.

Geosetter-Using Exiftool to replace keywords.jpg
JakeLi87 (author)2014-08-27

I've used this software for the last 6 years or so. Always been a fan!

FKlusmann (author)2014-03-29

Thank you for taking the time to write this!

I am trying this, using an android phone with "My Tracks".
Since the seconds are not available we
photo the same clock or watch at the start of shooting. With that the photos of
multiple cameras will merge in sequence.

I export my photos (*.CR2 - this is one of Canon's names for
RAW) and the .GPX files into the same folder and run Geosetter. Now, I don't want
to have a side-car for each of my photos (it seems some programs lose them) to
keep track of. For each photo which Geosetter writes into it creates a *.CR2_original.

This brings up question 1: How do you
separate your processed (changed or not) files from the original (unprocessed)

Q 2: Assume two or more cameras with their own .GPX files. Let's
assume that we have copied the photos and .GPX into folders NewPhotos01, NewPhotos02, ... ect. Is there a command line
or batch file way to handle these?

Q 3: How would you invite exitool to set the copyright
differently for each folder (NewPhotos01, NewPhotos02, ... ect) as wife, daughter, me?

Again, thank you.

MacGyver9 (author)FKlusmann2014-03-30

1. How do you separate your processed (changed or not) files from the original (unprocessed) files? I copy all originals to a new folder ("working folder") and then only process the "working folder" using GeoSetter. I always place the GPX track files in the original folder and have GeoSetter use them from there. To separate the xxxxxxx.JPG_original files from the newly processed files in Windows use the Windows Explorer and sort the folder files by Type rather than Name. Do your processing (Moving, Deleting, Coping, etc) and then re-sort by Name afterwards.

2. Assume two or more cameras with their own .GPX files. Let's assume that we have copied the photos and .GPX into folders NewPhotos01, NewPhotos02, ... ect. Is there a command line or batch file way to handle these? Since GeoSetter does not have a command-line capability, you will need to process each folder separately.

3. How would you invite exitool to set the copyright differently for each folder (NewPhotos01, NewPhotos02, ... ect) as wife, daughter, me? Let's assume you wanted to set the Copyright for all of the photos in a folder to Nancy, then here are three ways to accomplish that using...

a. Exiftool commandline in the folder with the photos:
exiftool -copyright="Copyright Nancy"

b. ExifToolGUI and selecting the folder with the photos, you could select all of the photos to change, press the 'ExifTool Direct' button in the center panel, and enter the following and press the Enter button:
-copyright="Copyright Nancy"

c. GeoSetter
- Before geotagging the photos, Select the 'File' tab
- Select 'Settings'
- Select the 'Exiftool' tab in the popup window
- check the 'Use Additional ExifTool Commands after GeoSetter Commands:'
- enter the same text as the ExifToolGui above into the area/box provided
- press OK

Note: I suggested the AFTER option since GeoSetter will probably create duplicate files from the geotagging, thus the processing afterwards will change ALL of the JPGS copyright tags (even new the ones created by GeoSetter).

Be sure to practice a smaller subset of photos before processing any important photos. Good Luck!

FKlusmann (author)MacGyver92014-03-31

Thank you!!

You said

--> (1) "I copy all originals to a new folder ("working folder") and then only process the "working folder"

This is basically what I do.

--> (2) "Since GeoSetter does not have a command-line capability, ..."

Alright, I'll use one starting folder for each camera.

--> (3) Three good solutions. Thanks.

a. I found and am trying to work with exiftool.exe

b, It seems that ExifToolGUI is not part of the download package for GeoSetter.

c. Using the GeoSetter tab ExifTool wrote the copyright to the files with matching geo tags but not to the others.

For testing I have a set of 5 *jpg's with minimum tags or keywords.

I have made a batch file does part of what I need. After making backup copies;

exiftool.exe -overwrite_original -copyright="(c) by My Wife's Name" *.jpg

works for all files.

-overwrite_original -keywords="Copyright-checked" *.jpg

This keyword shows up as a top-level keyword after importing into Lightroom. I would be happier if it I could make it show up as a hierarchical keyword.

-keywords=">>Work-Flow|Copyright-checked" *.jpg

This puts the keyword there as wanted, but is over-written later by

-keywords=">>Work-Flow|Geo-tagged-ran" *.jpg

My trials with (copied from

exiftool -hierarchicalkeywords='{keyword=one,children={keyword=B}}'

gives: "Warning: Improperly formed structure for XMP-mwg-kw:HierarchicalKeywords
Nothing to do."

I am stuck here.


Manually keywording from within Lightroom and then looking at the file (and re-formatting) shows what I think that I want as:

<rdf:li>>>Work-Flow|Copyright-checked</rdf:li> <rdf:li>>>Work-Flow|Geo-tagged-ran</rdf:li>

Again, thanks for your time and ideas.

-- Fred

FKlusmann (author)FKlusmann2014-03-31

I have made progress!

I just did a test run of 96 photos, 43 of which had matching times of a track.

A big problem was I thought I was working with HierarchicalKeywords when I needed hierarchicalSubject.

For what it may be worth, here is my "pre-lightroom" process:

(1) copy all photos from a camera into \Photo Processing\Fred's Camera

(2) export tracks as .gpx and copy into the same folder.

(3) Run "Pre-Lightroom.bat" from within the same folder.

(4) Import the product into Lightroom.

----+---- Here is my Pre-Lightroom.bat file ----+----

Rem FileID: Pre-Lightroom.bat
Rem Purpose: Set the copyright to each photo, Geo-tag them set Keywords for Lightroom work flow.
Rem (1) Make a directory "Originals" and copy everything there
md Originals
xcopy *.* Originals
Rem (2) Mark the copies read only for protection
attrib +R Originals\*.*
Rem (3) Set the copyright for all photos
Rem I got the path and syntax from an error message from GeoSetter
C:\Users\Fred\AppData\Roaming\GeoSetter\tools\exiftool -overwrite_original -copyright="(c) by Fred Klusmann" *.*
Rem (4) Set flag in each photo to show that copyrighting has been optioned
C:\Users\Fred\AppData\Roaming\GeoSetter\tools\exiftool -overwrite_original -hierarchicalsubject+=">>Work-Flow|Copyright-checked" *.*
Rem (5) call GeoSetter
"C:\Program Files (x86)\GeoSetter\GeoSetter.exe"
Rem (6) Set flag in each photo to show that geo-tagging has been optioned to it.
C:\Users\Fred\AppData\Roaming\GeoSetter\tools\exiftool -overwrite_original -hierarchicalsubject+=">>Work-Flow|Geo-tagged-ran" *.*
echo "Ready for Lightroom Import" > "Ready for Lightroom Import.txt"


Again, that you for your time and assistance.

-- Fred

shomzy3000 (author)2013-12-06

Do you know if this would work with a garmin forerunner 305 gps trainer watch for runners?

MacGyver9 (author)shomzy30002013-12-06

Yes. I don't know if the software included with the ForeRunner is capable of creating a standard .GPX file directly, however you can use the free GPS application EasyGPS ( to create the .GPX file from the ForeRunner TrackLog.

stevekas (author)2013-01-01

Great tutorial, it really helped!

Best wishes,