Zotero + LaTeX: A Citation Workflow That Stays in Sync
If you write in LaTeX and manage references in Zotero, you already know the friction point. You add a paper to your library, then you have to remember to export a fresh .bib file and drop it back into your project. Miss that step and your bibliography is out of date before you notice. A proper Zotero LaTeX integration removes the manual export entirely, so the .bib your document compiles against always reflects what is actually in your library.
This article walks through the workflow, the BibTeX details that trip people up, and how an always-synced setup differs from the one-time import most editors offer.
Why Zotero and LaTeX go together
Zotero is a free, open-source reference manager. You clip a paper from a journal page or a DOI, and it captures the metadata, the PDF, and the citation key. LaTeX, meanwhile, wants a plain .bib file it can read at compile time. The two were not built for each other, which is why the bridge between them matters so much.
The classic bridge is the Better BibTeX plugin. It gives every item a stable citation key (so \cite{smith2019} does not silently change when you edit an entry) and it can keep a .bib file on disk updated automatically. That is the foundation. The question is what happens to that file once your writing tool gets hold of it.
The problem with one-time import
Most online LaTeX editors let you upload a .bib file or pull one from Zotero once. That is import, not sync. After the first pull, the copy in your project is frozen. You add three references next week, and the editor has no idea. You either re-import manually or you start hand-editing BibTeX inside the project, which defeats the point of using a reference manager at all.
Here is the moment it usually bites. You are two days from a deadline, you add a late citation to Zotero, you type \cite{newpaper2024}, and the build throws an undefined-reference warning because the project’s .bib predates that entry. Now you are debugging your bibliography instead of writing.
How inscrive keeps the .bib always synced
inscrive connects to your Zotero account and maintains an always-synced .bib file. When you add or edit an item in Zotero, the change flows into your project. You are not exporting anything. On top of that, you get live citation autocomplete: start typing inside a \cite{} and inscrive suggests keys from your synced library, so you do not have to alt-tab to Zotero to remember whether it was vaswani2017 or vaswani2017attention.
This works on the free tier. inscrive is freemium, with a Free plan at zero cost (up to 10 active projects, unlimited collaborators, 60-second compile time) and a Pro plan at €7/month for longer compiles and AI assistance. Zotero and Mendeley sync are available on Free, so you do not need to pay to stop exporting .bib files by hand. For more on managing references at scale, see our guide on Mendeley and LaTeX.
The workflow, step by step
1. Organize your Zotero library
Keep your citation keys predictable. With Better BibTeX you can set a key format like [auth][year] so a 2019 Smith paper becomes smith2019. Consistent keys make collaborative writing far less error-prone, because everyone references the same thing.
2. Connect Zotero to your project
Link your Zotero account to inscrive. From that point the synced .bib lives in your project and updates as your library changes. No file juggling.
3. Cite as you write
In your .tex source, cite the way you normally would. With BibLaTeX:
\documentclass{article}
\usepackage[backend=biber,style=authoryear]{biblatex}
\addbibresource{references.bib}
\begin{document}
Transformer models reshaped sequence modeling \autocite{vaswani2017attention}.
According to \textcite{devlin2019bert}, bidirectional pretraining helps.
\printbibliography
\end{document} Or with classic BibTeX and natbib:
\documentclass{article}
\usepackage{natbib}
\begin{document}
Recent work \citep{vaswani2017attention} changed the field.
\bibliographystyle{plainnat}
\bibliography{references}
\end{document} 4. Let autocomplete carry the keys
As you type \cite{, inscrive offers matching entries from the synced library. You pick one. The key is correct because it came straight from Zotero, not from your memory.
What a Zotero entry looks like in BibTeX
When Zotero exports an article, it produces something like this:
@article{vaswani2017attention,
author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and
Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N. and
Kaiser, Lukasz and Polosukhin, Illia},
title = {Attention Is All You Need},
journal = {Advances in Neural Information Processing Systems},
year = {2017},
volume = {30}
} A couple of practical notes. Title casing matters for some bibliography styles, so wrap words you want protected in braces, for example {BERT}, to stop a style from lowercasing them. And if an author’s name has accents, prefer the Biber backend, which handles Unicode cleanly without the \'{e} escaping dance.
Where your library actually lives
There is a question worth asking about any cloud writing tool: where does your data sit, and who can reach it? Your reference library and your unpublished drafts are sensitive. They reveal what you are working on before anyone else sees it.
inscrive stores all data on EU soil. Hosting is with Hetzner in Germany and Finland, in ISO 27001-certified data centres, with full GDPR compliance and a signed Data Processing Agreement available. There are no third-country data transfers, which sidesteps the Schrems II uncertainty that comes with US-hosted services. For EU universities, that distinction is not academic. It is often a procurement requirement. You can read the specifics on the GDPR and security page.
One more point that matters for a reference workflow: inscrive never uses your documents or data to train AI models. Your synced library and your drafts stay yours.
Zotero sync vs import-only editors
| Capability | Always-synced (inscrive) | Import-only editors |
|---|---|---|
.bib updates when library changes | Yes | No, re-import needed |
Live \cite{} autocomplete from library | Yes | Usually not |
| Manual export step | None | Every update |
| Stale-bibliography risk near deadline | Low | High |
| EU data residency + signed DPA | Yes | Varies, often US-hosted |
The comparison is not about whether you can use Zotero with a given editor. Almost all of them accept a .bib file. It is about whether the editor keeps that file honest as your research moves.
Choosing a citation style with a synced library
A synced .bib does not lock you into a citation style. The library holds the data; the style is set in your preamble, and you can change it without touching a single reference. Switching from numeric to author-year is one line:
% Numeric, ordered by citation
\usepackage[backend=biber,style=numeric,sorting=none]{biblatex}
% Author-year, sorted name-title-year
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex} This is one of the underrated payoffs of keeping the library in Zotero and the formatting in LaTeX. A journal rejects you and the next one wants IEEE instead of APA? You change the style option and recompile. The references themselves, sourced from your synced Zotero library, do not move. Compare that to hand-formatted citations in a word processor, where a style change means editing every entry by hand.
One caveat. Some styles want fields that Zotero does not always capture, for example a doi or an eprint for preprints. If a reference looks thin in the bibliography, the fix is to complete the item in Zotero, not to patch the .bib, because the patch would be overwritten on the next sync. Treating Zotero as the single source of truth is the whole point.
A few habits that keep things clean
Pin your citation key format early and do not change it mid-project, or old \cite{} calls will break. Keep one library collection per paper if you tend to accumulate hundreds of references, so autocomplete stays focused. And when you collaborate, agree on a single source library so two authors do not introduce two keys for the same work. inscrive supports unlimited collaborators on every tier, so the constraint is your process, not the tool.
For more on keeping multi-author projects tidy, our piece on real-time LaTeX collaboration covers how live editing avoids the merge conflicts that bibliographies are especially prone to.
Start writing with a library that keeps up
A citation workflow should disappear into the background. You add a paper to Zotero, you cite it, it compiles. No exports, no stale files, no last-minute undefined references.
Connect your Zotero library to inscrive and write with an always-synced .bib and live autocomplete. It’s free to start, and your data stays in the EU. See the full plans on the pricing page.




