I am using better-biblatex to access my Zotero collections of journal articles. Mostly it works fine, though duplicate keys are a bummer (the documentation for the alternate JabRef syntax based fields is not adequate).

I am writing to discuss a different, somewhat scary feature of this combination - change in item keys.

I was just writing a paper and added a citation to a journal article (call it \cite{Chen2014} for concreteness). While I was writing the conclusions, I found another article, also by a first author named Chen and added it to my Zotero collection.

Using BibDesk, I refreshed the URL that provides the bib file to check the key for the new article. It was also Chen2014. However, to my horror, the citation key to the previous article (the one I had already cited to as \cite{Chen2014}) had changed to Chen2014a!

Now, a typical user is going to have a dynamically growing library. He or she is also going to have a large static set of .tex files (those that have already been written, or the sections of a paper than have been finalized).

This "feature" above means that everytime I have to use a previously written tract of LaTeX, I cannot be certain that article keys have not changed.

If I am not messing up something, this is an utter show-stopper.

Any suggestions?

  • I'd never heard of the system but it says you can specify fixed keys github.com/ZotPlus/zotero-better-bibtex/wiki/Citation-Keys Commented Jun 13, 2014 at 23:02
  • Impractical when you have hundreds, if not thousands, of articles in personal library. I might as well go with the default behaviour of Zotero. Commented Jun 13, 2014 at 23:04
  • I never heard of the system either. But if it really changes existing keys you should make a bug report. Commented Jun 14, 2014 at 8:49
  • 3
    This is basically the reason why Zotero itself generates more complicated citekeys. Since Zotero doesn't store the auto-generated bibtex keys anywhere--they're re-generated on every export--short citekeys that easily result in duplicates don't work well. The easiest solution is to use something more robust, which you can do in either better-bibtex (which gives you more flexibility) or Zotero's built-in system.
    – adam.smith
    Commented Jun 14, 2014 at 15:22
  • Recent versions of Better BibTeX generate stable keys without having to hand-generate them. Shifting keys no longer happens, regardless of what part of your library you export.
    – retorquere
    Commented Dec 7, 2014 at 11:17

2 Answers 2


The Better Bib(La)Tex plugin has since been updated to make sure your bibtex keys are unique even if not explicitly forced to a unique value. The example that is given in the question will no longer occur (full disclosure: I am the author of the plugin -- problems such as these are more swiftly handled when an issue is lodged at github).


Better bib(la)tex is the way to go here. You can configure it to use short static keys, these are saved in the Extra field, the format is bibtex: LABEL, these are stripped off and used by the better bib(la)tex export function.

There is a menu choice to generate keys, although these are not yet made unique, perhaps this has been added recently. Once you make them unique by editing the Extra field they will stay static.

I have saved a search for "No bibtex label" (Extra Does not contain bibtex:). This makes it easy to add missing ones.

See https://github.com/ZotPlus/zotero-better-bibtex

  • Not practical. I have hundreds of articles in my Zotero library. Commented Jun 25, 2014 at 17:02
  • If you install biblatex, mark all of your entries and use the add bibtex label menu entry. This will give you a static label for all of them. Now sort on the Extra field and spend a few minutes to make them unique. There will not be that many duplicates. Commented Jun 29, 2014 at 20:45
  • It seems that the collision check does work if you Generate BibTex key for all of them at once (this time the name is right). Mark your 1000 entries, and Just Do It, this will give you static and unique keys. Adding new ones later will not give unique keys --- but the extension author is working on this, I understand. Commented Jul 1, 2014 at 17:23
  • Thanks for your suggestions. Several of them are very informative. The last one will not work because the library is always growing. Say I finish up a draft of a paper with library with 6032 entries (an example). I send it off to my colleagues. I then start working on a different paper. The library grows to, say, 6150 entries. After a week, I get back an updated draft that I need to touch up on. Can I be assured that the extra 6150-6032=128 entries have not changed the keys for the articles which existed in the collection a week ago? If not, this becomes a showstopper. Commented Jul 2, 2014 at 5:09
  • 1
    You can now -- there's an option in the preferences to enable it.
    – retorquere
    Commented Mar 21, 2015 at 23:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .