Decode embedded EXIF meta data from image files.
Switch branches/tags
Nothing to show


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. Documentation can be found at

Like goexif? - Bitcoin tips welcome: 17M7LFh3ETz4bz83VikB7xuGQskt8K5Lj4

To install, in a terminal type:

go get

Or if you just want the tiff package:

go get

Example usage:

package main

import (


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