Need help with goexif?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

479 Stars 112 Forks BSD 2-Clause "Simplified" License 148 Commits 32 Opened issues


Decode embedded EXIF meta data from image files.

Services available


Need anything else?

Contributors list



Provides decoding of basic exif and tiff encoded data. Still in alpha - no guarantees. Suggestions and pull requests are welcome. Functionality is split into two packages - "exif" and "tiff" The exif package depends on the tiff package.

Like goexif? - Bitcoin Cash tips welcome: 1DrU5V37nTXuv4vnRLVpahJEjhdATNgoBh

To install, in a terminal type:

go get

Or if you just want the tiff package:

go get

Example usage:

package main

import ( "fmt" "log" "os"



func ExampleDecode() { fname := "sample1.jpg"

f, err := os.Open(fname)
if err != nil {

// Optionally register camera makenote data parsing - currently Nikon and
// Canon are supported.

x, err := exif.Decode(f)
if err != nil {

camModel, _ := x.Get(exif.Model) // normally, don't ignore errors!

focal, _ := x.Get(exif.FocalLength)
numer, denom, _ := focal.Rat2(0) // retrieve first (only) rat. value
fmt.Printf("%v/%v", numer, denom)

// Two convenience functions exist for date/time taken and GPS coords:
tm, _ := x.DateTime()
fmt.Println("Taken: ", tm)

lat, long, _ := x.LatLong()
fmt.Println("lat, long: ", lat, ", ", long)

} alpha

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.