GitPedia

Go exiftool

Golang wrapper for Exiftool : extract as much metadata as possible (EXIF, ...) from files (pictures, pdf, office documents, ...)

From barasher·Updated June 20, 2026·View on GitHub·

**go-exiftool** is a golang library that wraps [ExifTool](https://www.sno.phy.queensu.ca/~phil/exiftool/). The project is written primarily in Go, distributed under the GNU General Public License v3.0 license, first published in 2019. Key topics include: exif, exiftool, golang, iptc, wrapper-api.

Latest release: v1.10.0
June 7, 2023View Changelog →

go-exiftool

Mentioned in Awesome Go
Build Status
go report card
GoDoc
codecov

go-exiftool is a golang library that wraps ExifTool.

ExifTool's purpose is to extract and update as much metadata as possible (EXIF, IPTC, XMP, GPS, ...) from a lots of differents file types (Office documents, pictures, movies, PDF, ...).

go-exiftool uses ExifTool's stay_open feature to optimize performance.

Requirements

go-exiftool needs ExifTool to be installed.

  • On Debian : sudo apt-get install exiftool

By default, go-exiftool binary will look for exiftool binary in $PATH, but another location can be specified (see SetExiftoolBinaryPath functional option).

Usage

Metadata extraction

go
et, err := exiftool.NewExiftool() if err != nil { fmt.Printf("Error when intializing: %v\n", err) return } defer et.Close() fileInfos := et.ExtractMetadata("testdata/20190404_131804.jpg") for _, fileInfo := range fileInfos { if fileInfo.Err != nil { fmt.Printf("Error concerning %v: %v\n", fileInfo.File, fileInfo.Err) continue } for k, v := range fileInfo.Fields { fmt.Printf("[%v] %v\n", k, v) } }

Output :

[FOV] 69.4 deg
[Orientation] Rotate 90 CW
[ColorSpace] sRGB
[Compression] JPEG (old-style)
[YCbCrSubSampling] YCbCr4:2:2 (2 1)
[Aperture] 1.7
[ColorComponents] 3
[SubSecCreateDate] 2019:04:04 13:18:03.0937
[FileSize] 26 kB
[FileAccessDate] 2019:05:17 22:44:26+02:00
[DateTimeOriginal] 2019:04:04 13:18:03
[CreateDate] 2019:04:04 13:18:03
(...)

Metadata update

See example function ExampleExiftool_Write in exiftool_sample_test.go

Changelog

Contributors

Showing top 9 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from barasher/go-exiftool via the GitHub API.Last fetched: 6/21/2026