Birdsync’s purpose is to enable eBirders to easily contribute to the iNaturalist community. Based on feedback from the iNaturalist folks, I’ve tuned birdsync to create higher quality observations: it only uploads verifiable observations (those that include photos or sounds); it sets positional accuracy to something reasonable for eBird hotspots; and it avoids creating duplicate observations.
Birdsync is free and open source on GitHub. The README provides detailed instructions and a description of how it works. Feedback is welcome here; please file feature requests and bug reports as issues on GitHub. If you’re interested in contributing changes to birdsync, DM me on this platform.
Interesting! I’ll have to share this with some folks. I wish it would go the other way around–I’m way behind on uploading my data to eBird. But thank you! A great tool.
I had hoped to make it bidirectional, too! Unfortunately eBird doesn’t provide an API for writing checklists. Kudos to iNaturalist for providing an open platform!
It does result in duplication (I think eBird is the largest dataset in GBIF and iNat is the second largest) although I’m not sure how big of a deal that is. Many birders have been putting their bird observations on both platform for years. Old thread discussing it here.
Hopefully someone who actually works with the data could confirm but my understanding is because GBIF data is meant to be the widest conglomeration of data from different sources there’s no real expectation of a lack of overlap or redundancy. After all, the same cool vagrant bird could rack up dozens of eBird observations by itself.
That’s a fair point. My understanding is that most good studies using GBIF datasets already account for duplicate datapoints, so I suppose it doesn’t really matter that much. For some reason, though, I can’t bring myself to duplicate records myself.
I agree that duplication is not ideal, though responsible researchers will deal with it. I don’t know exactly how eBird data compares to iNat data in structure/formatting, so it could be easy or more difficult.
One other issue with duplication is just that it creates unnecessary work for IDers on iNat and eBird reviewers (or whatever they are called). Duplicating observations on both platforms increases the work for the humans who interact with the platforms with little/no scientific benefit - the data is already on GBIF when it is entered to one platform. In small amounts, this probably doesn’t matter. But if a large volume of eBird observations starting coming to iNat in a semi-automated fashion (or vice versa), that could be a large waste of identifier time/effort and take away from the user experience. It might be possible to filter out observations coming over to iNat from eBird for IDers that don’t want to contribute to those, but that would probably too complex for most users to implement (if they even know that is the origin of the observations).
Via @pisum ‘s links, there exists a Python program to generate an eBird spreadsheet of Historical observations from your iNaturalist data: https://github.com/lubianat/inat2ebird
It is straightforward to see which observations have been created by birdsync: it identifies itself in the observation description, and it sets the “eBird” (submission ID) and “eBird scientific name” observation fields. Example: https://www.inaturalist.org/observations/312496934
There may be value in having iNaturalist reviewers look at eBird observations, as the person creating the observation may have made an error in the ID they used in eBird. The iNaturalist community can help refine the identification. It’s on the user to then update the original eBird observation with the revised ID.
Thanks again, all, for the feedback. I find the birdsync tool useful, and I hope others do, too.
S
I had this error, any ideas how to resolve? (Note, I also submitted on GitHub so if you would rather simply reply there that is fine)
2025/09/09 22:48:56 Media assets differ between eBird https://ebird.org/checklist/S211428733 [Crypturellus cinnamomeus] (Thicket Tinamou) and iNaturalist http://inaturalist.org/observations/4c0371ba-7541-461e-b5ec-9643e4e70a30 [Crypturellus cinnamomeus] (): 1 ML Asset IDs added to eBird: 630176652
2025/09/09 22:48:56 Couldn’t download ML asset 630176652 from eBird: DownloadMLAsset(630176652): failed to rename file: rename C:\Users\tates\AppData\Local\Temp\birdsync2607409670 C:\Users\tates\AppData\Local\Temp\birdsync2607409670.mp3: The process cannot access the file because it is being used by another process.
I’ve never looked at eButterfly, but probably! The iNaturalist API is quite good. The main requirement for sources is that they provide a way to download your observations and the corresponding media (photos or sounds).