Written and maintained by CASRAI Editorial Board
Last updated
Zotero and Obsidian solve two different problems: Zotero is the reference store (metadata, PDFs, citation formatting), and Obsidian is the note graph (literature notes, backlinks, synthesis). Neither product talks to the other on its own — the bridge is two community plugins, both built on top of Zotero’s Better BibTeX extension. This guide covers the two working plugin chains, how to set each one up, and where the connection actually breaks in practice.
The two ways to bridge Zotero and Obsidian
Both routes require Better BibTeX for Zotero installed first — it is what gives every Zotero item a stable, human-readable citation key (e.g. smith2024climate), and both Obsidian plugins key their notes off that identifier.
- Citations plugin (
obsidian-citation-plugin, by hans) — reads a static.bibor CSL-JSON file that Better BibTeX exports from your library. Simple, works even when Zotero isn’t running, but only as current as your last export. - Zotero Integration plugin (
obsidian-zotero-integration, by mgmeyers) — talks to Zotero live over Better BibTeX’s local connection while Zotero is open, and can pull in PDF annotations, not just bibliographic metadata.
They aren’t mutually exclusive, but most people only need one. The rest of this guide sets up each in turn, then covers what actually breaks.
Step 1: install and configure Better BibTeX in Zotero
- Download the
.xpifile from Better BibTeX’s installation page and install it via Zotero’s Tools > Plugins (drag the file onto the plugins window, or install from file). - Decide on a citation-key pattern once, before you generate a large library of notes — Better BibTeX defaults to
authoryeartitle-style keys, and changing the pattern later regenerates keys for existing items unless you pin them (right-click an item > Better BibTeX > Pin BibTeX Key). A pinned key never changes, which matters once Obsidian notes are filed under that key. - Right-click the collection (or your whole library) you want available in Obsidian and choose Export Library… / Export Collection…, format Better BibLaTeX or Better CSL JSON, and check Keep updated. This registers a live auto-export: the file rewrites itself whenever the collection changes, as long as Zotero is running (foreground or background). Save it somewhere Obsidian can read — inside your vault, or a synced folder.
Path 1: Citations plugin (file-based)
Best if you want literature notes without keeping Zotero open, or your vault syncs across devices where Zotero itself isn’t installed.
- Install Citations from Obsidian’s Community Plugins browser and enable it.
- In its settings, point Citation export path at the auto-exported
.bibor CSL-JSON file from Step 1. - Set a Literature note folder and edit the note title/content templates. The plugin exposes variables like
{{citekey}},{{title}},{{authorString}},{{year}}, and{{abstract}}— a common title template is{{citekey}}, so every note filename matches its Zotero citation key exactly. - Run the Citations: Open literature note command (via the command palette or a hotkey), search your library, and Obsidian creates or opens the note for that reference using your template.
Path 2: Zotero Integration plugin (live connection, with annotations)
Best if you annotate PDFs inside Zotero and want those highlights and margin notes to land inside the Obsidian note automatically, not just the citation metadata.
- Confirm Better BibTeX is installed and Zotero is running — this plugin connects to Zotero directly rather than reading an exported file, so Zotero has to be open for it to work.
- Install Zotero Integration from Obsidian’s Community Plugins browser (search “Zotero Integration”) and enable it. It requires Obsidian 0.13.24 or later.
- Configure an Import format — a template (Obsidian’s own templating syntax, or Templater if installed) that defines what a generated literature note contains: frontmatter fields, an annotations section, a notes section.
- Run the Zotero Integration: Import command, select the item(s) from a live Zotero picker, and the plugin writes the note with citation metadata and any PDF annotations already pulled in — no separate export step.
Which path to choose
| Need | Citations plugin | Zotero Integration plugin |
|---|---|---|
| Zotero must be running | No (reads the exported file) | Yes, live connection required |
| PDF annotations imported | No | Yes |
| Setup complexity | Lower — one export path to configure | Higher — needs a working import template |
| Freshness | As current as the last auto-export | Always current at import time |
Where this breaks: failure modes on re-import
- Unpinned citation keys regenerate. If a key isn’t pinned and you later edit an item’s title/author/year in Zotero, Better BibTeX can assign it a new key on the next export. Any Obsidian note or link built around the old key is now orphaned from the library item — this is the single most common cause of “my literature notes stopped matching my library.” Pin keys before you build a note library on top of them (Step 1 above).
- The Citations plugin’s export file can go stale silently. “Keep updated” only re-exports while Zotero is actually running; close Zotero for a stretch, add items, and Obsidian’s citation search won’t show them until you reopen Zotero and the export catches up.
- Re-running an import against an existing note is a template question, not a given behavior. Whether re-generating a note for an already-imported reference overwrites, appends, or is blocked depends on how you’ve written the import/literature-note template and which plugin you’re using — check your template’s behavior on a throwaway item before relying on it for a real re-import, rather than assuming either plugin merges changes for you.
- Mobile sync gaps. The Citations plugin can work on Obsidian Mobile if the exported file itself syncs into the vault (e.g. via Dropbox alongside Better BibTeX’s own sync target). The Zotero Integration plugin cannot — it needs a running desktop Zotero to connect to, so it has no mobile path.
Frequently asked questions
Do I need Zotero open for the Obsidian side to work?
Only for the Zotero Integration plugin, which connects to Zotero live. The Citations plugin reads a file Zotero already wrote, so it works with Zotero closed — the tradeoff is that file can lag behind your actual library.
Can I get PDF annotations into my literature notes automatically?
Yes, but only through the Zotero Integration plugin’s import — the Citations plugin only ever sees bibliographic metadata (title, authors, year, abstract), not annotation content, because that’s all a BibTeX/CSL-JSON export contains.
Does changing my Better BibTeX citation-key pattern break existing notes?
It can. An unpinned key is free to change when the pattern changes or the underlying metadata is edited, and both Obsidian plugins use that key to identify a reference — pin keys on items you’ve already built notes around before changing your pattern.
Do I still need a separate reference-manager Word/Google Docs plugin for citing in a manuscript?
Yes — this pipeline is for note-taking inside Obsidian, not manuscript citation formatting. Continue using Zotero’s own Word, LibreOffice, or Google Docs integration when you actually write the paper.
Related CASRAI resources
- Zotero for Researchers: Reference and Citation Management Guide — Zotero fundamentals if you’re setting up a library for the first time.
- Zotero Setup and Troubleshooting — Connector, Word plugin, and sync issues unrelated to Obsidian.
- The BibTeX File Format Explained — what’s actually inside the file Better BibTeX exports.
- Getting Clean BibTeX from a DOI — a different route into a
.bibfile when you don’t already have the item in Zotero. - Note-Taking Methods for Research: Cornell, Zettelkasten, and Lab Notebooks — for the note-taking methodology itself, once the plugin chain above is producing notes to organize.
- Research Tools cluster hub








