Screenshot of my Zotero library

Free Zotero storage with R2

I use Zotero extensively in my personal and academic life. It is one of the two buckets that all of my reading materials go into. Zotero is a citation manager plus a whole bunch extra. You can annotate PDFs,1 generate bibliographies and citations, and it can sync everything, including notes, with Obsidian, Logseq, Google Docs, etc.

I use Zotero on all my devices, but mainly my iPad and Macbook. This means that I need some way to sync my library between the two devices, and I don’t really want to pay $20 a year for only 2GB of storage (after about a semester of use, my library is already pushing 600Mb. Scanned PDFs can be really big!). I’d also like to own my files, and be the one responsible if something goes wrong. I’ve been burned already by a reading/knowledge management tool shutting down (RIP Omnivore), and want to ensure against that happening again.

While poking through the Zotero settings, I found that there’s an option to replace Zotero file hosting with WebDAV. I’m really glad they offer an open option to use other file syncing services (or self host your file server), and I hope other developers can learn from this.

I poked around and found that someone had made an WebDAV implementation that runs as a Cloudflare worker and uses Cloudflare R2 as its file storage system. It was as simple as creating an R2 bucket (R2 has very generous free storage allocations, I store originals and resized copies of every image on this blog in an R2 bucket and have yet to pay a dime). R2 is nearly a clone of the S3 API, which makes it easy to understand and play with.

R2 not quite having directories, despite the way the dashboard looks (it is just a bucket after all) caused me a little confusion when setting up my WebDAV bucket for Zotero, but after a couple tries Zotero was able to create itself a zotero file and then start storing things.

Screenshot of my Zotero WebDAV config

My Zotero sync config, with some fields partially blurred.

This setup has worked great for me. I had one issue (earlier this week), where Zotero couldn’t connect, but I believe that was a problem with campus WiFi, not R2 or the worker. Sync is really fast, changes populate across devices within a couple seconds, and I get to carry all my knowledge around with me! Recently, during a conversation on the Holiday Train, me and another person both pulled out our Zotero libraries on our phones to find a document to show another person!

Zotero makes saving things really easy. Most academic URLs it can recognize (it’ll even try to get a pdf for you), and what it can’t can be manually entered. You can also enter batches of ISBNs, DOIs, and other identifies, and the app even has a barcode scanning mode that I used to scan in my whole bookshelf in about 2 minutes. On iOS you can “share” things into Zotero really easily, and the browser extension works great.


  1. On iOS and desktop apps, how wonderful ↩︎