Is there an app/program that can display the following information on my photos (both when I display them on my Windows 10 PC and when I print them):

  • The date the picture was taken
  • The GPS coordinates (my camera records GPS data)
  • A caption that I can write using this program

I used to have such a program but as a freebee, the producer stopped supporting it and it became too glitchy and unusable.

  • \$\begingroup\$ Did my answer help @Tom? \$\endgroup\$
    – Destroy666
    Commented Jul 11, 2023 at 7:33

2 Answers 2


You can achieve this in many ways. This one will use PowerShell, ExifTool and ImageMagick.

GPS extraction is very easy and has bunch of options when using ExifTool. For instance, this:

$coordinates = exiftool C:\Path\To\Photo.jpg -GPSPosition -n -S -s

will store the coordinates in a PowerShell variable in this format:

51.5041055555556 -0.074575

-S -s option makes it only output the value, while -n formats it as decimals. You can instead use e.g. -c (-coordFormat) switch to have more control about it - see documentation.

You can then add the variable content onto the image with e.g. ImageMagick. For example, this:

magick C:\Path\To\Photo.jpg -gravity Center -pointSize 100 -annotate 0 "$coordinates" -append C:\Path\To\Output.jpg

will add centered coordinates with font size 100 and output Output.jpg. -gravity defines how it's centered horizontally and -annotate the vertical offset from center. You can add the caption in a similar way. Check the documentation for many more possibilities.

  • 1
    \$\begingroup\$ I think you can skip saving to a variable and pipe the exiftool output directly. Something like exiftool C:\Path\To\Photo.jpg -GPSPosition -n -S -s | magick C:\Path\To\Photo.jpg -gravity Center -pointSize 100 -annotate 0 @- -append C:\Path\To\Output.jpg \$\endgroup\$
    – StarGeek
    Commented Jul 1, 2023 at 20:54
  • 2
    \$\begingroup\$ Of course you can. Is that clear and understandable in this situation? Nope. \$\endgroup\$
    – Destroy666
    Commented Jul 1, 2023 at 21:03
  • \$\begingroup\$ For reference Add text on image at specific point using imagemagick has some useful tips on text placement, fonts and font sizes \$\endgroup\$
    – Peter M
    Commented Jul 2, 2023 at 14:31
  • \$\begingroup\$ Using a variable rather than just a pipeline also allows you to build the caption from coordinates, timestamp, and text, as the body of the question asks for (@StarGeek). I've done something very similar but with bash (and a final ffmpeg step - it was a timelapse). \$\endgroup\$
    – Chris H
    Commented Jul 2, 2023 at 19:38

The feature you are looking for is called, "text overlay" or "metadata overlay." Many different programs that view, edit, or manage photos have this feature in one form or another. You can do it in Photoshop, though I don't know if Photoshop still has a batch feature. I haven't used it in decades. IrfanView (freeware for non-commercial use) can do it. My favorite Digital Asset Management tool, IMatch (photools.com) also does it, but that costs $130.

Here's the thing: All of these programs do it when they export an image. So, if you want to "permanently" embed this information within the pixels of the image itself, then you would need to export a batch of images, then delete the originals. Keep in mind, that with JPEG files, the image will be recompressed, thus losing quality. So, when you run your batch export, make sure to set the JPEG compression setting to the highest quality (lowest compression).

The exact instructions should be available within the documentation for whichever program you choose to use.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.