Build status Documentation Status GitHub issues PyPI PyPI - Python Version


Naturtag is a tool for nature photographers that adds useful metadata to describe the organisms in your photos. It includes a desktop application, a command-line interface, and can also be used as a python library.

It is mainly intended for use with iNaturalist; it can tag your photos with either complete observation metadata, or just taxonomy metadata.

Use Cases#

Naturtag embeds this information in your local photo collection using XMP and EXIF metadata. This has a variety of uses, including:

Local photo organization#

Naturtag can tag your photos with hierarchical keywords (aka structured keywords), which are supported by some photo viewers/editors like Lightroom, FastPictureViewer, Photo Mechanic, and XnViewMP.

This essentially gives you a phylogenetic tree for browsing and filtering your photos.

Example in XnView


Photo hosting#

Naturtag can also simplify tagging photos for photo hosting sites like Flickr. For that use case, this tool generates semi-structured keywords in the same format as iNaturalist’s Flickr Tagger.

Example search using these tags:

Example of taxonomy tags on Flickr


Other biodiversity tools#

Finally, naturtag can improve interoperability with other tools and systems that interact with biodiversity data. For example, in addition to iNaturalist you might submit some observations to another platform with a more specific focus, such as eBird, BugGuide, or Mushroom Observer. For that use case, this tool supports Simple Darwin Core.


See GitHub Releases for downloads and Installation for platform-specific instructions.

To just install naturtag as a python package, run:

pip install naturtag



The main interface for this project is still a work in progress.

It includes an interface for selecting and tagging images:


And tools to search and browse species to tag your images with:


See Application Guide for more details.


Naturtag also includes a command-line interface. It takes an observation or species, plus some image files, and generates EXIF and XMP metadata to write to those images. You can see it in action here: asciicast

See CLI documentation for more details.


You can also import naturtag as a python library, and use its main features in your own scripts or applications. Basic example:

from naturtag import tag_images, refresh_tags

# Tag images with full observation metadata
tag_images(['img1.jpg', 'img2.jpg'], observation_id=1234)

# Refresh previously tagged images with latest observation and taxonomy metadata
refresh_tags(['~/observations/'], recursive=True)

See API Reference for more details.

Development Status#