Naturtag - Organize your photo collection with iNat metadata

Here’s a fun little project I’ve been working on for a couple years that I’d like to share:

It’s an open source desktop application, and its main goal is to let you use your own iNaturalist data to add useful tags to your local photos, including taxonomy and observation details.

I’ve been using this myself for awhile now, and while it’s far from complete, I think it’s in a good enough state for others to try it out.

Wait but why

Why would you want to use this? Short version:

  • If you don’t use keywords or other image metadata: It’s a really nice way to organize your photos (and later search them) without messing with folders and filenames. See this thread for an interesting discussion on the topic.
  • If you already add metadata to your photos: This app will make the process faster and more thorough.

Using the app

With Naturtag, you pick some photos, pick a taxon (or an observation, if you have one), and it will add scientific and common name keywords for its full ancestry, plus a bunch of other useful metadata fields.

Using tagged photos

For example, after tagging your photos, if you want to find all your Canada Goose photos in whatever photo organizer you use, you can search by 'Canada Goose', 'Geese', 'Waterfowl', 'Birds', Branta canadensis', 'Branta', 'Anatidae', 'Anseriformes', 'Aves', etc.

To take it a step further, you can even browse your photos with a taxonomic tree using tools that support hierarchical keywords, like Lightroom, digiKam, or XnViewMP. With a few photos tagged, it will look something like this; and with lots of photos tagged, it will basically start to look like your dynamic life list on iNat.

How does it work?

Naturtag stores your data in standard EXIF and XMP metadata formats that most image organizers/editors/viewers support, and doesn’t require any extra databases or proprietary formats. You can uninstall the app and still use your data with whatever tools you want.

Observation data is stored in Darwin Core, which is a standard for biodiversity data used by platforms like GBIF. You can see a complete example here.




I realize this may only appeal to a small subset of iNat users, but I think it has a lot of potential to be a useful part of a nature photographer’s workflow.

Feedback would be appreciated! In the unlikely possible inevitable event that you encounter bugs, you can either send me a bug report on GitHub, or post details here.

I would also be interested to hear from anyone who already makes use of image metadata with your iNat photos: What details do you usually add, and what tools (if any) do you use to search / filter / organize your photos based on those details?


interesting. what happens when there’s a taxonomy change?

for example, if some photos were previously labeled as Dracopis Amplexicaulis, but then the taxon in iNat’s taxonomy changes to Rudbeckia Amplexicaulis, do you have to load the new taxonomy and then go back and relabel all the previously labeled photos for that taxon?

Good point. There’s currently a “Refresh” feature that will take any images previously tagged with an observation ID and update it with the current observation info. If the user has “Automatically update my content for taxon changes” enabled in their iNat settings, the image will be updated with the new taxon.

That won’t currently work for images tagged with only a taxon ID, but I’ll add that as a feature idea.

The other limitation is that loading a large number of images at once in the UI isn’t fast enough to be convenient, but I’ll be working on that (and other batch processing features) in the near future.

@pisum I’m taking a look at this now. It looks like in results from GET /taxa/{id}, I would look for is_active=false, and then check current_synonymous_taxon_ids for the updated taxon. Does that sound right? And do you happen to know in what cases current_synonymous_taxon_ids might contain multiple IDs? I thought that iNat didn’t have multiple synonymous taxa active at the same time, but I could be wrong.

generally, yes, except:

when there’s a 1:M taxon split. (maybe M:M, too, if those exist.)

for example, see:

Thanks for the example! In that case, an automatic taxon update is probably only reasonable to do if it’s a simple 1:1 taxonomy change. Some changes for that are now in the main branch.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.