GeoTagger logo GeoTagger - Display and modify GPS location data in photos
Online Help
GeoTagger on facebook

© 2022 KLS

GeoTagger Help

GeoTagger allows you to display and modifiy the GPS location information that is stored in image files. For a quick introduction see the "GeoTagger User Guide" (available from the Help menu).

Starting the program

If started without command line parameters, the program will come up with an empty file list, and you can use File/Open to load image and/or GPS track files.

You can also start GeoTagger from the command line, in which case you can specify the names of files and/or directories to open. If a directory is given, all files in that directory with extensions *.jpg or *.jpeg (case insensitive) will be loaded. Subdirectories of the given directories are followed recursively.

See geotagger --help for a list of command line options.

Loading files

The File/Open Files (Ctrl+O) command opens a dialog from which you can select the files you want to process. Multiple files can be selected by clicking on them with the Ctrl and/or Shift key pressed. Any files selected with this command will be loaded in addition to the files already in the list.

The File/Open Directories (Ctrl+Shift+O) command opens a dialog from which you can select a directory to load files from. Depending on the settings in Edit/Preferences/Misc subdirectories within the selected directory will be scanned recursively.

A preview of the current image is displayed below the list of images, and the status bar shows the full path name of the current image.

You can use File/Clear Image List (Ctrl+K) to clear the image list.

The rightmost column in the list shows a '*' for images that have been modified since the last time they have been loaded or saved.

Navigating the map

Click&drag to move the map, and use the mouse wheel to zoom in and out.

Zoom in on the location of the current image with Map/Zoom Current (or Ctrl+N). This can also be achieved by double clicking on the name of an image in the list. You can configure how far to zoom in with Edit/Preferences/Map/Zoom radius.

Zoom out to see all image locations and tracks with Map/Zoom All (or Ctrl+Alt+N).

Zoom out to see the entire world map with Map/Zoom World (or Ctrl+Shift+N).

The map displays markers at the locations stored in the images. The location of the current image is shown with a red marker, while all others are blue. The red marker has a hole at its center, so that you can see if there are blue markers beneath it. Green markers are used for Points Of Interest ("POIs"), which can be read from GPS track files.

Clicking on a blue marker makes the corresponding image current.

The map also displays a red line that leads from the very first image location to the last one. This "path" indicates the sequence in which the photos were taken.

Map providers and types

You can select your preferred map provider under Map/Map Provider. The first nine providers can be quickly selected directly by pressing Ctrl+Shift+n (n=1, 2, 3, ...).

Some map providers may require the use of api keys or other parameters. These can be defined as name=value pairs in Edit/Preferences/Map.

If a map provides different types (like "Street" or "Satellite"), you can switch between these through Map/Map Type or by pressing Ctrl+n.

Modifying times

To modify the time data of an image, you can double click on a Time field, press Ctrl+D, execute Edit/Modify Date/Time or right click on a list item and select Modify Date/Time from the context menu.

In the dialog that appears, you can change the date and time when the image was taken, and the offset from UTC ("Universal Time Coordinated", also known as "Greenwich Mean Time" or GMT) at that location. The date and time are usually "local time", as shown on a calendar or wall clock. The offset from UTC indicates the time zone of the location, including a possible offset due to DST (Daylight Saving Time). If, for instance, a photo was taken in Denver, Colorado, the offset from UTC would be -0700 in winter, and -0600 in summer. Of course you can also have all times in UTC, in which case the offset would be +0000. Making sure the times are correct is important for getting locations from GPS track logs.

If more than one image are selected, the dialog is filled with the data from the current image. Changing the date or time results in the delta between the old and new value to be applied to all selected images. A change to the offset from UTC is directly applied to all selected images.

Modifying locations

To modify the location data of an image, simply click at a point on the map. This will set the Latitude and Longitude of the selected image(s) to the given values, and adjust the markers accordingly. The Altitude is not changed, because the map doesn't provide that information.

You can also double click on a Latitude, Longitude or Altitude field, press Ctrl+L, execute Edit/Modify Location or right click on a list item and select Modify Location from the context menu to open a dialog in which you can edit the location data, including the value of the Altitude. If more than one image are selected, there is a check box that allows you to change only the Altitude of these images.

Note that the values for latitude and longitude must be given in the format selected under Edit/Preferences/Format/Coordinates. If the format is "dd° mm.mmmm' N" or "dd° mm'" N", the symbols (°, ' and ") are optional. The letter for the hemisphere (N/S or E/W) must be given, though, and has to be separated from the value with a blank.

If you want to make sure you don't inadvertently change an image's location by clicking on the map, you can check Edit/Preferences/Misc/Require Shift to set location.

Clicking on a marker makes the corresponding image the current image. If you want to select a location that is inside the area of a marker, hold down the Shift key when clicking the left mouse button.

Selecting images on the map by clicking and dragging a rectangle over their markers always requires Shift to be pressed, because a simple click&drag moves the map around. The list items with markers inside such a rectangle will be selected (any previous selection is cleared). The selection rectangle is limited to the currently visible map area (zoom out if you need more).

Interpolating locations

If you have images that lack GPS coordinates, you can interpolate these from surrounding images that have coordinates. To do so, select a sequence of images where the first and last one have valid coordinates, and all images in between have no coordinates. Then execute the command Edit/Interpolate Coordinates and the missing coordinates will be approximated, assuming you moved with constant velocity on a straight line between the first and last position.

GPS track logs

GeoTagger can handle GPS track logs in GPX and CSV format. CSV formats are configured in the file csv.conf and can be either detected automatically (provided there is a suitable entry in the configuration file) or selected manually in Edit/Preferences/Misc/CSV file format.

Several track logs can be loaded simultaneously, and will be displayed on the map with the color and width defined in Edit/Preferences/Map.

Moving the mouse along a GPS track displays the date and time (in UTC) that point was recorded.

The command Edit/Location from Track (Ctrl+F) can be used to set the location of the selected images to the positions recorded in the GPS track. This is where the "Offset from UTC" in the image timestamps becomes important. Make sure these offsets and the dates/times are correct, otherwise you may end up with wrong locations extracted from the GPS track.

If the location for the exact time an image was taken can't be found in the track log, the value between the two positions recorded closest to the given time is interpolated. Locations for images with times before the first or after the last entry in a track will not be changed.

If a GPS track log contains Points Of Interest (POIs), these will be displayed with green markers on the map.

The command File/Clear Tracks clears any previously loaded tracks. Map/Show Tracks (or Ctrl+T) turns displaying tracks on or off.


The map doesn't provide the altitude of the selected coordinates, and sometimes even the GPS data from cameras, smart phones or GPS trackers doesn't contain proper altitude values. There are sources on the Web that provide the altitude (some call it elevation) for any given coordinate. The command Edit/Altitude from Web (Ctrl+U) retrieves the altitudes for the selected images from the altitude provider defined in the preferences.

Currently GeoTagger has builtin support for ELEVATION API.

Aligning times

So you have correctly set the time zones (i.e. offsets from UTC) of all your photos, but your favorite image viewer still doesn't show them in the proper order. That's because the timestamp that is stored in the EXIF data is considered to be "local time", and even though some cameras do set the correct time zone, image viewers widely ignore it. For instance, imagine you take a summer trip from Munich (UTC+0200) to Denver (UTC-0600). Your smart phone is set to the local time and time zone at the departure Airport, and, lacking contact to a mobile phone network during the flight, stays that way until you reach your destination. So all the photos you take during the flight will be in local time of Munich. Once arrived at Denver, your phone connects to the local network and sets itself to the new local time and time zone. Since there is an eight hour difference between local times in Munich and Denver, any photos you take for the next eight hours will be intertwined with the ones you took up to eight hours before. GeoTagger presents the images in the proper order, because it takes the time zones into account. To have any image viewer also do so, you can use the Edit/Align (Ctrl+G) command to set the times of the photos you have taken while crossing time zones in a way that implements a smooth transition from departure to destination.

To do so, sort the image list by ascending time, and select all images from the last one that shall keep the departure time zone up to the first one that shall keep the destination time zone (you need to select at least three images). The Edit/Align (Ctrl+G) command will then modify the times of all images between the first and last selected one in such a way that the "local time" will always be increasing, while the offset from UTC will be decreased accordingly. This is also what is in fact happening when you travel from east to west: you're moving through time zones and it's a "long day", because "local time" increases slower than for a stationary observer at the departure airport (and no, this has nothing to do with Einstein). The effect is reversed when going from west to east. It is then typically a "short night".

Aligning times this way works for any westward journeys, even crossing the dateline. It also works eastwards, however crossing the dateline poses a problem there, because in that case the generated image times would have to run "backwards".

The UTC times of the images will be roughly the same as before the alignment (if the offset from UTC is taken into account). They may be up to plus/minus one minute off from the original time, because the offset from UTC is given in full minutes. Also, times that were close together but different before, may become the same after the alignment. In case you use the Edit/Location from Track (Ctrl+F) command to set locations from GPS track logs, you may want to do so before aligning times.

Rotating images

The command Edit/Rotate Images (R), which is also available in the preview's context menu, rotates the selected image(s) by 90 degrees counterclockwise. This command always starts from the initially loaded image, so any previous "straighten" or "crop" command will be reverted.

WARNING: Unlike the commands that modify times or coordinates, this command actually modifies the image data itself when you save your work in "store" mode!

Straightening images

While adjusting times and coordinates of your photos, you may come across images that are a bit slanted. A typical example for this are photos hat show the horizon. Geotagger offers a quick and easy way of straightening such images by means of the Edit/Straighten Image (S) command (also available in the preview's context menu). Activating this command shows a grid over the preview image that allows you to see where horizontal or vertical lines need to be straightened. Click&drag along such a line (for example the horizon), and when you release the mouse button, the image is rotated in such a way that the marked line will be straightened. Lines between +/-45 degrees from horizontal will become horizontal, lines within +/-45 degrees from vertical will become vertical. This command always starts from the initially loaded image. To revert the straightening, either use Edit/Undo, or start Edit/Straighten Image so you see the grid lines, and click (without dragging) into the image. Pressing ESC cancels this command.

Straightening an image rotates the image by the given angle, which results in a larger image with white triangles at its corners. GeoTagger automatically crops the result to the maximum possible rectangular area within the original image, so that none of the white areas is visible. You can use the Edit/Crop Image (C) command to adjust this.

WARNING: Unlike the commands that modify times or coordinates, this command actually modifies the image data itself when you save your work in "store" mode!

Cropping images

The Edit/Crop Image (C) command (also available in the preview's context menu) allows you to select a given area of an image. Issuing the command shows the current crop area (which may be the entire image area) with handles you can use to resize it. Two horizontal and vertical grid lines approximate the "golden ratio". Click&drag on the handles to adjust the crop area, or inside the area to move it as a whole. Hold down the Shift key to retain the image's aspect ratio while resizing the area. Finally click (without dragging) inside the crop area to confirm the selection. If you press ESC, click outside the crop area, switch to a different image or resize the preview window, the command will be cancelled.

WARNING: Unlike the commands that modify times or coordinates, this command actually modifies the image data itself when you save your work in "store" mode!

Excluding images

The Edit/Exclude Images (X) command toggles the 'X' flag of the selected image(s), which controls whether an image is excluded from exporting with the File/Export (Ctrl+E) command. If more than one image are selected, the 'X' flag of all selected images are set according to the current image. Note that this flag is only saved in "cache" mode.

If you have excluded some images, you can use the View/Next Image (N) and View/Previous Image (Shift+N) commands to browse through only the non-excluded images.

Hiding images

Imagine you have loaded many images from various events in different locations, and you want to view or edit only a particular set of them, for instance all images taken over the years at a certain place. The View/Hide Images (H) command allows you to do just that. It hides all selected images from the list and the thumbnail view. The images are still loaded, but all commands work only on the images that are currently shown (see below for exceptions). To perform the task described above, you could zoom the map into the desired location, select all the respective markers (by click&dragging a rectangle around them, with the Shift key pressed), invert the selection with Edit/Invert Selection (Ctrl+Shift+A), and finally use View/Hide Images (H). View/Show all Images (Shift+H) makes all images visible again.

You can tell if there are hidden images by looking at the "Images:" entry at the right end of the status bar. If it shows two numbers, separated by a '/', the first one is the number of shown images, and the second one is the total number of loaded images.

When you save your work, it will always save all image data, no matter if there are hidden images or not.

When you export images and there are hidden ones, you will be asked whether or not you want to export the hidden ones, too.

Undo/redo always treats all images as visible.

Maximizing the image preview

The command View/Maximize Image View (M), which is also available in the preview's context menu, hides the image list and the map, so that the preview can take up the entire space of the GeoTagger window. This can be helpful when straightening or cropping images. Issuing the command again restores the previous window setup.


The image preview can be switched to thumbnail view with the View/Thumbnails (T) command. In thumbnail mode, the status bar provides a slider for adjusting the size of the thumbnails, as well as a button that toggles between square and full aspect ratio display. Double clicking on a thumbnail switches to full view of the selected image (and vice versa).

Thumbnails for excluded images are shown in reduced black&white mode, with a red triangle in the upper left corner.

If an image file doesn't contain a thumbnail in its EXIF data, one will be generated automatically. Also, every time an operation modifies the image (like rotating, straightening or cropping), the thumbnail will be regenerated.

Sometimes the thumbnails generated by the camera may not be optimal. For instance, photos taken in 16:9 mode may have black bars on top and bottom, or the resolution of the thumbnail image is very poor. In such cases, Edit/Preferences/Misc/Always generate thumbnails can be enabled to have GeoTagger always (re-)generate thumbnails. Note that this can take quite a while if it is done for many images, so this operation runs in the background and you can continue to work.

When a file with a generated thumbnail is written, GeoTagger adds a "user comment" to the EXIF data that indicates that this is a thumbnail that has been generated by GeoTagger. That way, next time the file is loaded with GeoTagger and Edit/Preferences/Misc/Always generate thumbnails is enabled, it won't have to regenerate it. Any previous user comment tag (if present) will be overwritten.


Before saving modifications to an image file, GeoTagger creates a backup copy of that file. By default, a directory named BAK is created in the same directory as the image file. The image file is then copied into that directory. So for instance the file


would be copied to


If a file with that name already exists there, a numerical suffix is added to the file name, as in


The name of the backup directory can be defined in Edit/Preferences/Backup. If you use a local name (like BAK), that name will be excluded when recursively loading files from directories, so that the backup copies don't get in your way. You can also select an absolute path name here, if you want the backups to go somewhere else.

If you delete the backup directory name, no backup will be done.


If you select an absolute path name for your backup directory, you can choose whether to store the backup under the full path name of the image, as in


or just the file name:


You can also choose whether to back up only the original image file, or every time a modified file is saved.


The cut, copy and paste operations apply only to locations. Edit/Copy (Ctrl+C) copies the location data of the current image to the buffer. Edit/Cut (Ctrl+X) does the same as copy, but also clears the location data of the current image. Edit/Paste (Ctrl+V) copies the location data from the buffer to the selected image(s). If the buffer doesn't contain an altitude value, existing altitudes in the selected images are not overwritten.


You can undo/redo any changes you made with Edit/Undo and Edit/Redo (or Ctrl+Z and Ctrl+Shift+Z, respectively). The undo buffer is not cleared when you save your modifications, which means that you can always undo all the way back until you loaded your files. If there are unsaved modifications, this is indicated at the right end of the status bar.

Saving modifcations

You can use File/Save at any time to write modified image data back to the disk. When you exit the program by closing the main window, executing File/Quit or pressing Ctrl+Q, you will be asked whether you want to save any modified data. The same happens if you clear the image list with File/Clear Image List (Ctrl+K).

There are two different ways in which GeoTagger saves modified times and locations. By default it writes the data back into the image files, making a backup copy of the original files according to the settings in Edit/Preferences/Backup. GeoTagger only modifies the EXIF data, leaving the actual image data untouched.

The second method leaves the image files untouched and writes the modified data into a text file (.geotagger by default) within the directory of the image files. When files from such a directory are loaded in a later session of GeoTagger, the .geotagger file (if present) is read and the times and locations of the images are set to those given in that file. Besides leaving the original files completely untouched, this method has the advantage of saving data much faster than creating backup copies and overwriting the original image files. Go to Edit/Preferences/Backup/Mode to select which of these modes you prefer.

Once you have finished editing the times and locations of your images with the second method, you can set Edit/Preferences/Backup/Mode to "store modifications in original images" and save your work. This will create backup copies according to your selected preferences, write the modified data into your image files, and delete the data from the .geotagger files in the respective directories.

Exporting image files

Image viewers normally have options to display images sorted by their file name or by time. If present, some take the time from the EXIF data stored in the image file, others may just use the file timestamp. If you have image files (maybe from various sources, like different cameras or from people joining you on your trip) that you want to be sure are presented in the exact sequence they were taken, the File/Export (Ctrl+E) command can be used to export all loaded images (which may reside in different directories) into one new directory, following these rules:
  • All image files must have a valid EXIF time (which may have been modified in GeoTagger).
  • No two images may have the same time (this will be checked automatically before generating any output). To resolve such conflicts, simply add or subtract one second to/from one of the images in question.
  • All file names will be generated from the EXIF times of the images, in the form YYYYMMDD-hhmmss.jpg (this is the reason why images must have unique times). The times used are the local times as shown in the "Time" column, without the offset from UTC.
  • If the parameter Edit/Preferences/Misc/Export sets file time is active, the timestamps of the exported image files will be set to the same times as used for generating the file names.
  • The directory into which to export the image files should be empty (subdirectories and hidden files are OK). If the directory is not empty, you will be prompted whether to continue, and if you select OK, any existing files with names that match those of the exported ones will be silently overwritten.
This works with both the "store" and "cache" modes. With "cache" mode you can create an exported directory of your images without modifying the original files in any way.

See "Excluding images" if you want to exclude some images from exporting.

Batch mode

The Export command can also be executed in batch mode by using the --export option. This can be useful if you have interactively processed images in several directories and then realize that, for instance, you had Edit/Preferences/Misc/Export sets file time turned off all the time, while you actually wanted it to be turned on. Instead of interactively loading and exporting each directory again with the new setting, you can simply do (maybe within a script)

geotagger --export=target source...

which takes all the files/directories given as source and exports them into the target directory. If, while doing so, any user input would be required, a message will be printed to the console and the command is terminated. You can use the --quiet option to suppress any info and warning messages and progress displays.

Batch mode uses all the relevant settings given in the Edit/Preferences dialog. You may need to close any open GeoTagger window in order to have the settings written to disk before running the program in batch mode. You can use the command line options --thumbnails, --orientation, --times, --exclude and --xref to make sure these parameters are set, no matter what their stored setting is.


The Edit/Preferences dialog allows you to configure various parameters to your liking.


Zoom radius: when zooming in on the location of the current image with Map/Zoom Current, the zoom level is set so that an area within a circle with the given radius around that position is visible. The unit in which the value is displayed can be defined on the Format tab.

Width of path: the width (in pixel) with which the path between image locations is displayed.

Width of tracks: the width (in pixel) with which GPS tracks are displayed.

Color of path: the color with which the path between image locations is displayed.

Color of tracks: the color with which GPS tracks are displayed.

Color of track times: the color with which GPS tracktimes are displayed.

Color of selection: the color with which the selection rectangle is displayed.

Map provider parameters: parameters like "app ids" or "tokens" required by some map providers. One parameter per line, given as name=value pairs. The name consists of the provider's plugin name followed by a dot ('.') and the actual parameter name.


Provider: the provider to retrieve altitude data from.

Overwrite existing values: if checked, existing altitude values will be overwritten with values from the provider.

Altitude provider parameters: parameters like "keys" or "resolutions" required by some altitude providers. One parameter per line, given as name=value pairs. The name consists of the provider's name followed by a dot ('.') and the actual parameter name.


Units: the units used to display measurements ("metric" or "imperial").

Precision of altitude: like longitude and latitude, altitudes are often stored with several decimal digits in the GPS data of photos. However, these values usually are not that precise, and displaying them with many decimals is just irritating. Use this parameter to set the number of decimal digits to display for altitudes.

Show file names: by default the list of images displays only the base name of the image's file. If you have loaded files from different directories it may be useful to switch to "full path". Note that the status bar always displays the full path name of the current image file.

Coordinates: the format in which to display coordinates.

Time: the format in which to display dates and times.


Mode: the mode in which modified times and locations are saved ("store modifications in original images" or "cache modifications in separate files"). See "Saving modifications" for details. You can tell which mode is currently active by looking at the "Modified:" entry at the right end of the status bar. In "store" mode it shows the number of modifications that will be written with the next save command. In "cache" mode this number is followed by the total number of modifications that are stored in the .geotagger files.

Directory: the directory in which to write backups.

Name: how to name backups ("full path name" or just "file name").

Frequency: how often to do backups (every time a file is saved, or only when the original file is saved).

File: the name of the file in which modified times and locations are stored in "cache modifications in separate files" mode (default is .geotagger).


Max. preloads: when moving the cursor in the image list, the given number of images are loaded in addition to the current image. This makes browsing the image list faster.

Max. image memory: the maximum amount of memory to use for caching images. Note that no matter how small you set this value, there may always be the present, previous and following image loaded, which may well exceed the given value. Also, the memory taken into account is that of the actual image in memory, which is typically more than that of the file on disk.

CSV file format: the file format to use when reading GPS track logs in CSV format.

Load track files: automatically load GPS track files when opening a directory.

Use custom list style: GeoTagger uses a custom style for displaying the image list. Uncheck this option to use the standard system style.

Require Shift to set location: if checked, a click on the map requires the Shift key to be pressed in order to set the location of the selected image(s).

Export resets orientation: by default, GeoTagger leaves image data untouched if possible when writing files. When you export your images, you may want to reset the orientation parameter in the EXIF data, even if this wouldn't be necessary because you didn't rotate, straighten or crop the image. You can check this option to make this happen.

Export sets file time: if checked, exported images will have their file time set to the time stored in the EXIF data. Note that this may prevent files from being synchronized with commands like 'rsync', therefore this option is off by default.

Always generate thumbnails: if checked, thumbnails will always be (re-)generated.

Exclude directories: the names of directories you don't want to be scanned when recursively opening directories. You can enter more than one name, separated by colons (':'). If the name of the backup directory is local, it will be automatically excluded.

Max. directory scan level: when opening a directory, by default all subdirectories within it will be scanned recursively for image and GPS track files. Use this parameter if you only want to scan up to a certain level.

Export xref file name: the name of the file in which the File/Export command stores a cross reference between the generated file names and the original names (default is .geotagger.xref). If the original names are relative to the export directory (i.e. below it), they are listed without the export directory. If this is empty, no such file will be generated.

Bug reports

Please send bug reports to <>.
GeoTagger icon made by Nikita Golubev from