Two years ago, I released a very rickety browser extension I made to make it easier to add observation fields and annotations to iNat observations. I’ve improved on the extension by adding features and improving stability for the last two years, and it’s now officially available in both the Firefox Add-Ons store and the Chrome Web Store (which is cross-compatible with Edge and other Chromium browsers). These releases should resolve a lot of the user-unfriendly challenges that were required when it was an experimental extension.
For anyone who is new to this extension, it’s a swiss army knife tool designed to make your life as a power-user easier in as many ways as I could think of. Here’s a little tour to help new users get oriented.
The core feature of the app is the “action.” Actions include:
Actions can be assigned to a button. Multiple actions can be combined into a single button. For instance, you could make a button that adds a taxon ID, a comment explaining your ID, and adding the observation to a project. You can also choose whether this interaction leaves the observation marked as followed (so you get notifications about it) and reviewed.
You can make buttons on the extension’s configuration page, available by clicking the extension in your toolbar or extensions dropdown.

Once made, buttons can be used on Identify and individual observation pages. Buttons appear automatically and update immediately when you make changes on the configuration page; no need to refresh.
Buttons can be hidden or moved around the corners of the screen with keyboard shortcuts
Buttons can be activated by clicking or with keyboard shortcuts programmed on the configuration page.
There are a lot of more specific details available in the action list but one I want to flag is that you can make a text input box popup for Observation Fields, so you can paste or type in a value on the fly.
One action allows you to add an observation to a list. The extension stores that list for you so you can reopen that set of observations later; those can be viewed at the bottom of the configurations page.
Using buttons individually is very powerful for common actions you need to apply conditionally. But true power users would often like to apply metadata to large swathes of observations at a time. This is possible with bulk action mode. The same buttons made on the configuration page can be applied to up to 200 observations (iNat’s Identify page limit) at a time.
In bulk action mode, you can select observations to apply the action to. While in bulk action mode, you can examine a given observation more closely to confirm your ID or other information by ctrl-clicking on it.
Once a set of observations has been chosen, you can select an action and apply it.
Browser resource use limitation features mean that bulk actions will pause while the window is minimized or you switch to another tab (you can have another window active on the same screen though). This is a key limitation I don’t believe there is a true solution to but I recently made an update that dramatically speeds up the application of bulk actions, so this is much less of an issue now.
Bulk actions make a lot of changes at once, and it would be a big headache if you applied an action to lots of observations by mistake. It was really important to me that I make it easy to handle that situation, so I built a record that tracks every bulk action you take and generates and applies the exact bulk action to undo it. This is available on the bulk action mode menu and on the configuration page. This menu provides a convenient link to all affected observations so you can validate that the undo was applied correctly.
Applying bulk actions is much easier when you can prefilter to ensure all or nearly all observations are relevant targets for your action. iNat Identify pages already offer a lot of ways to make these filters (by month, annotation, etc), but there are many, many more options available that aren’t conveniently accessible in the simplified user interface. These are the topic of a popular forum thread and I used to painstakingly construct specific common queries and save them. My extension offers an expanded UI to conveniently take advantage of all of these.
This page allows you to filter by presence/absence and value for observations, annotations, projects, taxa, user, etc in any number of combinations you desire. It is very powerful and there are lots of possibilities here that are not immediately obvious; worth taking some time to explore.
Among the most useful is a “without” condition for an observation field. If you are on an Identify page with this filter, as you add bulk actions that fill in that field, observations that have already been completed will be automatically cleared from view as you work. You can choose to have them clear on manual refresh or refresh automatically when you apply a bulk action.
The URL gen page is also a good place to change the per page maximum from 30 to higher numbers (up to the max of 200).
One more important note: the extension saves all of your lists and buttons to a file that your browser associates with the extension itself. If you remove it, that file disappears, which can lose you lots of painstakingly constructed configurations. If you ever need to remove the extension, transfer your configurations to a new browser, new device, etc, you can export the configurations and import on the other side. You can also use this feature to share configurations with other users.
I’ve made a lot of improvements to the extension based on feedback from users here on the forum over the last two years. Feel free to make suggestions here in this thread, but I also added a form to the extension itself that helps you directly generate a github issue, which is the easiest place for me to actually track them.
I’m sure I’m forgetting things but that should be a good start. Let me know if you have any questions or problems arise. Thank you all for your support and for the work you do on iNat! It’s a privilege to make your lives easier!












