Update: The code has moved from Google Code to github here

Geotagging is a method of adding GPS data to the EXIF header of photographs (found in JPEG and other file formats).

Geotagger is a tool to help geotag photos. This can be done manually by locating a spot on a map or automatically by correlating with data from a GPS.

The reason I wrote it is that I wanted a decent tool to use for myself and the older free tools were becoming very dated. I wanted to control the source code and have intimate knowledge off how it was editing my JPEG images. Specifically, I wanted a tool that would make minimal changes to the EXIF headers of the JPEG. Just enough to modify or add GPS data, without losing any other information.

The tool is ready for release, barely. Let’s call it Alpha. I have tested it and it is ready for others to play around with it. It won’t yet change your original files (at least it shouldn’t, but I recommend using it on copies) and will create a “\geotagged” subdirectory with the modified file.

The user interface is designed to be simple, but is not yet as intuitive as I would like. I hope to fix it and add some help pages here soon.


Not much help yet, but the 30 second version is…

  • Click “Load Images…” and select one or more images JPEG images to load
  • Click “Load GPX…” and select a GPX file exported from your GPS that contains a track log of when you took the photograph. The track log should appear as a red line on the map. Unfortunately, the map does not autoscroll, so you will have to navigate manually
  • Select all of the photos and click “Locate Photos”. You should see some pins appear on the map, one for each photo. If you click on a pin, it will highlight the associated photograph.
  • You can drag and drop the pins to other locations on the map, or adjust the “Time Offset”* at the bottom and reclick “Locate Photos”.
  • Once you are satisifed with the locations of the pins, click “Save”. This will write each image out to a “geotagged” subdirectory (a subdirectory of the image location). The output files should be identical to the source images, except with GPS data added.
  • * Time Offset is located at the bottom of the image list. It is meant to be used if the images were taken in a different time zone from your computer (and the camera was set to that time zone). If you notice that all of your images are incorrectly located you may want to try adjusting the offset and click “Locate Photos” again. This is a work in progress, and this feature will become more usable in time.


    This is a Windows ClickOnce install that comes as the default deploy with Visual Studio 2008 Express Edition. It will check for updates when you run it, which is good that you will get the latest versions, but bad if you don’t like that feature. Sorry, but I feel that it is the best way to ensure that everyone gets updated with any fixes that are applied.

    Source Code

    Geotagger is written in C# and uses Google Maps in an embedded web browser for visualizing the GPS data and photo locations.

    This is an open source project. It is one of my first C# applications so don’t expect the best practices, but it isn’t bad.

    The interesting features of this application are…

  • Embedded webbrowser control with a direct C# to Javascript (and back) interface. This is quite simple, but it took me a while to find good samples online.
  • Integrated web server to serve the initial pages that use Google Maps. This is the only legitimate way of using Google Maps as the application is both a web browser and web server in one.
  • JPEG EXIF parsing written entirely in C#. It is specifically be used to update GPS data, but the parser is capable of understanding other entries and could easily be modified to modify and write other data. I did not find any good examples of C# EXIF code.
  • Contribute

    If you fix any bugs or wish to contribute source code changes, please let me know by writing up an issue in the Google Code project. Be aware that this is an open source project, so any contributions you make will become open source as well.


    As this is a pre-alpha version of the tool, please expect that it may not work correctly or with images from all sources. I would like to hear of any issues or problems you experience with this tool.

    If you have a question, you can leave a comment below and I will try to answer it.

    If you find a bug such as an image that cannot be loaded or a crash, please report it to the Google Code project issue list ( Please attach the files you were using.