Zettelkasten Forum

Citekey good practice

Hi everybody,

This question is for those who use .bib files to manage your bibliographies. I want to know how you guys generate unique citekeys and what do you think constitutes good practice.

I am following a 'universal citekey' strategy suggested by the people who made an app called Papers (I have never tried the app, I use Zotero and Betterbibtex). Link below. I will give an example. My citekey looks like this for the book Foucault, M. (1980) Power/knowledge. selected interviews and other writings 1972-77. New York: Pantheon Books:


This process can be automated by software such as bibdesk. A mode of automating this format will be to use the string: %a1:%Y%t2
The string denotes [author] [:] [year] [2 first unique characters]

However things get muddy when for instance, I want to cite different sources that were published by the same author on the same year, and both titles have the same two characters at the beginning. Hypothetically, let's say we have 'the government of the self' and 'the birth of biopolitics' published on 2008. The string would generate a conflict: @foucault:2008th
On a different level, bibdesk generates incompatibilities when, for instance it adds a hyphen after titles that begin with only one character, such as the book A Thousand Plateaus by Deleuze and Guattari. (Pandoc is not able to process this): @deleuzeguattari:1991a-

I would normally change by omitting common words ('a' 'the' 'of', etc.). But this is annoying.

I want to know everything that you smart people use to manage citekeys in an orderly manner.


Link) "support.papersapp.com/mac/manual#http%3A%2F%2Fsupport.mekentosj.com%2Fkb%2Fcite-write-your-manuscripts-and-essays-with-citations%2Funiversal-citekey)")


  • I just have authour + date. Example: newport2015

    There are just two cases for my work:

    1. Important books. Then I now right away which book is references with the citekey.
    2. Articles. Then I don't have an idea and in the long run I wouldn't keep track even if I individualize even further (something with the title; e.g. newport2015begood)

    Therefore, I am fine with an added letter at the end which is automatically done by BibDeks for me (e.g. newport2015b)

    I am a Zettler

  • I grow attached to objects quickly and even attribute some kind of personality to books. That's why I use author + year + self-picked shorthand. Let's say there's a book called "Object-Oriented Programming of Systems", I'd never stop to chuckle using the citekey foobar1993oops. Because of the oops. As in, saying "oops!". Get it? Ha ha!

    In any case I try to use <5 characters for the title shorthand and tend to keep it pronouncible, because I tend to verbalize them in my head and remember them for a while.

    I'd thus prefer foucault:1980pokno (pronounced like Ponyo) if the book meant anything to me.

    Author at Zettelkasten.de • https://christiantietze.de/

  • Since the latest version of Betterbibtex for Zotero was just released, I changed my citekeys to work in the following way foucault1980birth. This is looking like a great option because:

    1. betterbibtex removes common words that are likely to cause duplicates, such as 'the' 'a' 'an';
    2. betterbibtex picks the first word in the title of the publication (excl. the aforementioned common words), which makes for easy mnemonic cues. I will never forget that the book 'the birth of biopolitics' has to be called birth, since I can very easily infer that from the strict rule that I have imposed.
    3. Finally, Betterbibtex keeps the .bib file up to date with each and every change, and has a sophisticated set of functions to create rules. (fwiw I use only one large .bib file with all my library; Zotero is great because it is open source).
    4. Hence, I believe that this will qualify for 'universality' that the crowd at Papership is looking for. But, with the added plus that it is open, rather than proprietary software. Your philosophy of avoiding vendor lock-in and future-proofing data that is machine readable (or consists of self-evident text-base code).

    Of course, this depends on every person's different workflow and needs. Knowledge work is unpredictably diverse so I am just sharing this to learn more and find useful workflows, hoping that this can be useful for others.
    For @Sascha, the setup works perfectly fine because the citekey is incredibly simple and fast to type. I guess this depends on the volumes of material by one same author that you end up citing.
    As for @ctietze, the mnemonic trick is excellent because once the oops connection is made, there is no way of forgetting that.
    In my case, I often find myself heavily relying on many articles and books by one same author. Often these start with common terms, so this turns into a nightmare pretty quickly. I believe the solution above is basically what made me look for a scalable option that can be used in all (most) cases. (In the end, I have a Zotero collection for every writing project, but this is another topic).

    Thanks for your answers.

  • @mnlngl If you are suggesting my short citekey works mostly for small volumes I'd like to disappoint you: Sometimes I have same citekey bases because some people have the same surname. There seem to be many "Youngs" doing research I use. :smile: It would matter to me even if there were 20 "young2012".

    My workflow does not involve typing citekeys. I mostly copy them or (for books) I have snipped for Typinator. :smile:

    I am a Zettler

  • Old thread, new info.

    @Sascha, I have settled for the @authorsurname:2010title string. This provides the best unique handle for a huge zotero library like mine (yes, I am a research and pdf hoarder).

    The semicolon helps as a visual delimitation to quickly separate author from title in the citekey (and ditch caps, which can easily become messy). The good thing about this is that you can figure the citekey out 99% of the times, else you can normally straight copy-paste from zotero/bibtex/whatever you use (or use some sort of autocompletion plugin that may or may not exist for Sublime Text 3).

    I must add that I use Better Bib(La)Tex , which constantly keeps an updated .bib file on my dropbox and automatically generates my citekeys in the way I am describing it here. (The tip comes from here). For anyone who uses Zotero + Better Bib(La)Tex the following is the string I use:


    For further bliss, the Better Bib(La)Tex plugin allows me to copy all citekeys in a specific project at once, which can then be orderly processed by pandoc. This is useful for bibliographies that include texts that are not necessarily referenced in inline citations but need to be included. i.e. research applications (these go on a YAML header as per the example below).

    nocite: |
    @taussig:2009what, @taussig:2004my, @mbembe:2003necropolitics


  • Cool! Thanks for the update.

    Like I tried to say: It is a practical solution you choose. I am still struggling with the overproductivity of some Young Dynasty that apperantly does 20% of the research I use in a couple of dozen unrelated fields. :smiley:

    Are you generating the citekey automatically? I am wondering if the veryshorttitle could be problematic in the long run.

    I am a Zettler

  • Yep, I'm generating it automatically via Zotero. It could potentially be problematic, but many things would have to go into consideration: i.e. that two or more authors have the same surname and publish a book that has almost the same name in the same year. This could happen I guess, with say Smith 2009 The origin of / the main...: Smith2009the. In this case, Zotero adds an extra letter: smith:2009thea smith:2009theb smith:2009thec

    For now, it has scaled up well...

Sign In or Register to comment.