If you are writing a master’s thesis in computer science, physics, electrical engineering, or mathematics, you will almost certainly end up in LaTeX — and with it, in the choice between BibTeX and BibLaTeX. Both handle citations and the reference list, but they are different beasts: different age, different feature set, different error messages. This article shows you which tool fits your thesis, which citation commands to use in your prose, and where the pre-submission compile errors tend to hide.
BibTeX, BibLaTeX, biber — three names, three things
The confusion often starts at the names. These are three separate tools:
- BibTeX is the classic 1985 program that turns a
.bibfile and a style file (.bst) into a formatted reference list. - biblatex is a LaTeX package that moves the formatting into LaTeX code — instead of a dedicated style language (
.bst) that almost nobody can read. - biber is the modern backend that reads and sorts your
.bibdata for biblatex. biber replaces classic BibTeX as the data processor.
In practice: if you are starting fresh today, you want biblatex + biber. BibTeX is not broken, but it is a 40-year-old answer to a problem that has since been solved more cleanly.
| Feature | BibTeX (classic) | BibLaTeX + biber |
|---|---|---|
| First release | 1985 | 2006 / 2009 |
| UTF-8 (umlauts natively) | No, only via \"a | Yes, native |
| Citation styles | Hard-coded in .bst | Configurable in LaTeX |
| Localisation | English only | German, French, etc. |
| Sorting | ASCII | Unicode-correct |
| Citation commands | only \cite | \parencite, \textcite, \autocite … |
| Learning curve | Steep but shallow ceiling | Gentler, extensible |
When classic BibTeX still makes sense
Two cases where sticking with classic BibTeX is pragmatic:
- Your department ships a LaTeX template built on a
.bststyle. Older university templates — anything from before 2010, really — tend to usenatbib+ BibTeX. If you cannot touch the formatting, leave it alone; migrating costs more time than it saves. - You are submitting to a journal with a prescribed
.bstfile. Elsevier, Springer, IEEE, and many others distribute their styles as BibTeX templates. CS conference submissions almost always useIEEEtran.bstor a variant.
For everything else — fresh bachelor/master thesis, PhD dissertation, German-language literature, non-English author names — biblatex is the better choice.
The .bib file: the shared foundation
In both worlds, the .bib file is the same: a plain text file with entries in BibTeX syntax. A journal article looks like this:
@article{mueller2023learning,
author = {Mueller, Anna and Weber, Thomas},
title = {Learning strategies at university: A longitudinal study},
journal = {Zeitschrift für Pädagogische Psychologie},
year = {2023},
volume = {37},
number = {2},
pages = {112--128},
doi = {10.1024/1010-0652/a000345},
}
The key mueller2023learning is the handle you cite from LaTeX — you type it into \cite{mueller2023learning}. Convention: lastname + year + keyword, all lowercase, no diacritics, no special characters. That convention saves you later, when you discover two articles by the same author in the same year (mueller2023a, mueller2023b).
What BibLaTeX adds
biblatex understands fields that classic BibTeX ignores — most importantly date, langid, url, urldate, and dedicated entry types like @online, @thesis, @report:
@online{ons2024education,
author = {{Office for National Statistics}},
title = {Educational qualifications 2023},
year = {2024},
urldate = {2026-05-12},
url = {https://www.ons.gov.uk/...},
langid = {english},
}
The doubled braces around the author are required whenever the author is an organisation — otherwise biber tries to read “Statistics” as a last name and “Office for National” as a first name. You will not see the problem in the compiled PDF, but your alphabetical sorting will be wrong.
Citation commands: the big biblatex win
This is where biblatex pays for itself every day. Classic BibTeX really only has \cite{key} — what the output looks like depends on the style, not on the shape of your sentence.
biblatex separates the intent:
| Command | Output (author-year) | Use case |
|---|---|---|
\parencite{mueller2023} | (Mueller 2023) | Citation in parentheses at the end of a sentence |
\textcite{mueller2023} | Mueller (2023) | Author in the running text, year in parentheses |
\autocite{mueller2023} | depends on configuration | The default you set at the top of the preamble |
\footcite{mueller2023} | Citation as a footnote | Chicago notes, legal writing |
\cite{mueller2023} | Bare minimum, no parentheses | Rarely used directly |
With a page number: \parencite[p.~42]{mueller2023} → (Mueller 2023, p. 42). The tilde ~ is a non-breaking space, preventing an ugly line break between “p.” and “42”.
Multiple citations in one parenthesis: \parencite{mueller2023,weber2022,schmidt2020}. biblatex sorts them according to the scheme you set in the preamble (usually alphabetical or by year).
A minimal LaTeX skeleton
A working main document for a bachelor’s thesis with biblatex looks like this:
\documentclass[12pt,a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[
backend=biber,
style=authoryear,
natbib=true
]{biblatex}
\addbibresource{references.bib}
\begin{document}
Trust is the precondition for openness
\parencite[p.~42]{mueller2023learning}.
\textcite{mueller2023learning} describes the process
in three stages.
\printbibliography
\end{document}
The build order is pdflatex → biber → pdflatex → pdflatex. The two trailing passes stabilise cross-references and numbering. In TeXstudio or Overleaf you set this as a build chain and run it with one button.
Choosing a style with biblatex
Instead of hunting for a .bst file and hoping it supports APA 7, you set the style directly in the package call. The important ones:
style=authoryear— author-year, close to Harvardstyle=authoryear-icomp— compact variant for multiple works by the same author in one yearstyle=numeric— numeric, like Vancouver or IEEEstyle=alphabetic— short tags like[Mül23], popular in theoretical CSstyle=apa— APA 7, via the add-on packagebiblatex-apastyle=ieee— IEEE-aligned, viabiblatex-ieeestyle=chicago-authordateorchicago-notes— viabiblatex-chicago
The add-on packages come with your TeX distribution (TeX Live, MiKTeX) or are already installed on Overleaf. For a map of which style fits which discipline, see our citation style comparison.
Zotero → Better BibTeX → LaTeX: the practical workflow
Hand-editing a .bib file is self-inflicted punishment. The working pipeline:
- Collect in Zotero. Browser connector, DOI lookup, PDF metadata — Zotero fills in most of the fields automatically.
- Install the Better BibTeX plugin. It generates stable citekeys (
mueller2023learninginstead of Zotero’s random internal ID) and exports a continuously updated.bib. - Enable “Export → Keep updated”. Any change in Zotero lands in
references.bibimmediately. No manual pulls. - Set a citekey formula. Example:
[auth:lower][year][shorttitle3_3:lower]produces deterministic keys that stay findable after renames.
For Overleaf users: Better BibTeX can sync the .bib straight into your Overleaf project. Alternatively, hook Zotero into your local repository with a git commit hook.
More on the Zotero side in our Zotero workflow guide.
The most common compile errors and what causes them
Package biblatex Warning: 'mueller2023' not found
The citekey is misspelled or missing from the .bib file. Check case — biber is case-sensitive. After fixing, remember to re-run biber.
! LaTeX Error: Something's wrong--perhaps a missing \item
Almost always a malformed .bib: a = where a , should be, an unclosed brace, a line break in the middle of a field value without brace protection. Open the file in JabRef or Zotero — both flag the syntactic error immediately.
“All citations render as [?] in the PDF”
Either biber did not run or the run produced errors in the biber log. Check main.blg — it names the exact entry that is missing or broken.
“Umlauts in author names disappear or render as ?”
Rare with biber + UTF-8, but check that your .bib is saved as UTF-8 (not Latin-1 or Windows-1252). You set this in your editor’s save dialog or, in JabRef, under “File → Preferences → General → Default encoding”.
“The reference list is in the wrong order”
In biblatex: add sortlocale=de_DE (or your target locale) to the package call, otherwise biber sorts by Unicode codepoint and umlauts drop to the end. In classic BibTeX, there is no clean path to real German sorting without patching the style file.
“‘et al.’ kicks in too early”
In biblatex, tune this via maxcitenames and mincitenames in the preamble, e.g. maxcitenames=2, mincitenames=1. For APA 7, the default — “three or more authors use et al.” — is already correct.
Pre-submission checklist
- Every cited entry has a unique, stable citekey.
- Every citekey in the text appears in the
.bib, and vice versa. Themain.blglog flags both missing entries and unused keys. - Umlauts and special characters render correctly in the PDF.
- DOIs sit in the
doi =field as bare identifiers (10.xxxx/...) — noDOI:label and nohttps://doi.org/prefix. biblatex adds the URL wrapper when it renders. - Multiple works by the same author in the same year are disambiguated with
a,b,c. - The final
pdflatexpass does not emit arerunwarning. - The reference list is sorted according to the correct locale (
sortlocale). - The
.bibfile is in git or a backup — not only in Zotero.
What LaTeX gets perfect — and what it does not check
LaTeX and biblatex are the cleanest tools for producing a formally perfect reference list. What they do not do: they do not check whether the page number you wrote in \parencite[p.~42]{mueller2023} is actually where that claim appears in Mueller 2023. They do not check whether the study you point to even exists — Zotero can create an entry whose DOI lookup silently resolves to a different paper. And they do not check whether the claim you attribute to a source in your sentence is really supported there in the full text.
For a first pass you can run your reference list through the free Quick Check: browser-based, no sign-up, result in seconds — it flags entries whose DOI does not resolve, or sources with inconsistent metadata. You get a fast map of which .bib entries deserve a second look.
For the full check you upload the thesis and the source PDFs. Acurio compares each citation against the source content: does page 42 actually say what you attribute to Mueller 2023? Or is Mueller discussing a neighbouring topic there, and did you grab the wrong page while flipping between Zotero and your PDF reader? That is the most common error type in STEM theses — and the one LaTeX cannot catch, no matter how clean the compile log.
Once your LaTeX pipeline stands
LaTeX plus biblatex plus biber plus Better BibTeX is a very robust pipeline, once it is set up. The setup costs a few hours, running it costs no thought — insert a citation, compile, done. The real quality of your thesis is decided one layer up: in reading, understanding, and faithfully representing your sources. For the form, you now have all the tools you need.