Build status Documentation Status GitHub issues PyPI PyPI - Python Version


Naturtag is a tool for tagging image files with iNaturalist taxonomy & observation metadata. This includes a basic command-line interface, a work-in-progress desktop application, and can also be used as a python library.

Use Cases#

Naturtag takes useful information from your own iNaturalist observations and embeds it in your local photo collection, mainly using XMP and EXIF metadata. This has a variety of uses, including:

Local photo organization#

If you like the way you can search and filter your observations on and its mobile apps, and you wish you could do that with your local photos, naturtag can help. It can tag your photos with hierarchical keywords, which can then be used in a photo viewer or DAM such as Lightroom, FastPictureViewer, or 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 structured keywords in the same format as iNaturalist’s Flickr Tagger.

Example search using these tags:

Example of taxonomy tags on a Flickr photo page:


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#