BibTeX vs. biblatex: Differences and Which to Use
Use biblatex with biber when you are free to choose. Use BibTeX when your journal, conference or thesis template ships a .bst style or requires one.
On this page
BibTeX is the program from 1985 that sorts your references and formats them with a .bst style, and it is still what most journal and conference templates expect. biblatex is a much newer LaTeX package that does the formatting inside LaTeX and uses the separate program biber to read and sort the data. Both read the same .bib files, so your references do not have to change when you switch. The difference lies in the LaTeX document, the compile step and the style you choose. biblatex is more flexible and handles Unicode and modern entry types natively; BibTeX is what publishers accept everywhere.
What each one is
Three names cause most of the confusion:
- BibTeX is the name of the .bib file format and of the original program
bibtex. The program reads your .bib file and a.bststyle file and writes a.bblfile that LaTeX typesets. - biblatex is a LaTeX package, loaded with
\usepackage{biblatex}. Its styles are written in LaTeX (.bbxand.cbxfiles), so changing the look of a reference means setting an option or redefining a macro, not editing a.bstprogram. - biber is the program biblatex uses in place of
bibtex. It reads the .bib file in UTF-8, sorts the entries and hands the data to biblatex. It is included in TeX Live and MiKTeX (see Install).
| BibTeX workflow | biblatex workflow | |
|---|---|---|
| File you write | references.bib |
references.bib (the same file) |
| Tool that sorts | bibtex |
biber |
| Tool that formats | bibtex, following the .bst |
LaTeX, following the biblatex style |
| Where the style lives | a .bst file |
.bbx/.cbx files, chosen with style= |
Side-by-side
| BibTeX | biblatex | |
|---|---|---|
| Preamble | nothing, or \usepackage{natbib} |
\usepackage[backend=biber, style=authoryear]{biblatex} |
| Loading the .bib file | \bibliography{references} at the end, without extension |
\addbibresource{references.bib} in the preamble, with extension |
| Printing the list | \bibliographystyle{plain} and \bibliography{references} |
\printbibliography |
| Compile sequence | pdflatex, bibtex, pdflatex, pdflatex | pdflatex, biber, pdflatex, pdflatex |
| Citation commands | \cite; with natbib \citep, \citet |
\cite, \parencite, \textcite, \autocite, \footcite and more |
| Styles | .bst files: plain, alpha, IEEEtran, elsarticle-num, … |
style= options: numeric, alphabetic, authoryear, authortitle; packages such as biblatex-apa (style=apa), biblatex-ieee (style=ieee) and biblatex-chicago |
| Unicode in the .bib file | write accents as {\"o} (accent table) |
UTF-8 such as ö works directly |
| Several bibliographies | needs extra packages (chapterbib, multibib) |
built in: refsection, refsegment, filters by keyword or type |
| Sorting | fixed by the .bst |
sorting= option (nty, nyt, ydnt, none, …), Unicode-aware |
| Localisation | strings such as “and” or “edition” are fixed in the .bst |
follows babel or polyglossia (“und”, “Hrsg.”, “2. Aufl.”) |
| Entry types and fields | the classic entry types; no @online |
adds @online, @dataset, @software and others; date, journaltitle, urldate; @thesis with a type field |
| Cross-references | crossref with limited inheritance |
crossref and xdata, with configurable inheritance |
| Field length | very old builds had hard limits on entries and string size; current bibtex and bibtex8 are rarely affected |
no practical limits |
| Speed and complexity | fast, small, stable for decades | slower, bigger package, many options |
Which should you use?
Use BibTeX if:
- your journal, conference or university supplies a template with a
.bstfile, or its instructions ask for BibTeX. Common examples are IEEE (IEEEtran.bst), ACM (ACM-Reference-Format.bstinacmart), Elsevier (elsarticle-num.bstand siblings inelsarticle) and Springer’s journal templates. Publishers often process your.bblfile themselves and cannot accept biblatex output. - you maintain existing documents full of natbib commands and see no reason to touch them.
- a co-author’s setup or a build server lacks biber.
Use biblatex if:
- you start a new document, such as a thesis, a book or a report, and nobody prescribes a
.bst. - you need a style that is hard to get with BibTeX, such as APA 7 or Chicago, or want small changes to an existing style. See Bibliography styles for what BibTeX styles can do.
- you cite websites, datasets or software often and want
urlandurldateprinted properly. - you need one bibliography per chapter, or separate lists for primary and secondary sources.
- your references contain names in many languages, or the bibliography must follow the document language.
Overleaf supports both out of the box and runs bibtex or biber automatically, depending on what your document loads.
Minimal examples
Both examples use this references.bib:
@book{lamport1994latex,
author = {Lamport, Leslie},
title = {{\LaTeX}: A Document Preparation System},
edition = {2},
publisher = {Addison-Wesley},
address = {Reading, MA},
year = {1994}
}
@book{knuth1984texbook,
author = {Knuth, Donald E.},
title = {The {\TeX}book},
publisher = {Addison-Wesley},
address = {Reading, MA},
year = {1984}
}
With BibTeX
\documentclass{article}
\begin{document}
\LaTeX{} is described in \cite{lamport1994latex}, \TeX{} in \cite{knuth1984texbook}.
\bibliographystyle{plain}
\bibliography{references}
\end{document}
Compile with pdflatex, bibtex, pdflatex, pdflatex. The text reads “described in [2]” and the Lamport entry comes out as:
[2] Leslie Lamport. LaTeX: A Document Preparation System. Addison-Wesley, Reading, MA, 2 edition, 1994.
With biblatex
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{references.bib}
\begin{document}
\LaTeX{} is described in \textcite{lamport1994latex}, \TeX{} in \parencite{knuth1984texbook}.
\printbibliography
\end{document}
Compile with pdflatex, biber, pdflatex, pdflatex. The text reads “described in Lamport (1994)” and “(Knuth 1984)”, and the entry becomes:
Lamport, Leslie (1994). LaTeX: A Document Preparation System. 2nd ed. Reading, MA: Addison-Wesley.
Note the “2nd ed.”: biblatex turns the number in edition into a localised ordinal, while plain prints “2 edition” verbatim. In both cases latexmk -pdf runs the right program for you.
Switching from BibTeX to biblatex
-
Remove
\bibliographystyle{...}and replace\bibliography{references}with\printbibliographywhere the list should appear. -
Add to the preamble
\usepackage[backend=biber, style=authoryear]{biblatex}(orstyle=numericfor numbered citations) and\addbibresource{references.bib}. Note the.bibextension, which\bibliographydid not want. -
Remove
\usepackage{natbib}, since natbib and biblatex cannot be loaded together. Either rewrite\citepand\citetas\parenciteand\textcite, or keep them by adding thenatbib=trueoption:\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex} -
Make your editor or build run
biberinstead ofbibtex.latexmkdetects biblatex and runs biber on its own, and Overleaf does the same. In TeXstudio or TeXworks, change the bibliography tool in the settings. -
Delete the old
.auxand.bblfiles once, so that no BibTeX output is left over. -
Leave the .bib file as it is. biblatex accepts
journalforjournaltitle,addressforlocationandyear/monthalongsidedate, so most files need no changes. Accent commands like{\"o}keep working; you may now also writeö.
Common errors after switching:
- “Please (re)run Biber on the file”: biblatex wants fresh data. Run
biber(notbibtex) on the document name, then LaTeX again. - “I found no \citation commands” from bibtex, or “biber: command not found”: the editor still calls
bibtex, or biber is missing from your installation. Check the bibliography tool setting and your TeX installation. - “Style ‘xyz’ not found”: the style name is wrong or its package (for example
biblatex-apa) is not installed. - “Incompatible package ‘natbib’”: natbib is still loaded, perhaps by the document class. Such classes are usually meant for BibTeX.
For the plain BibTeX workflow see Using BibTeX, and for adding references to a document in general see LaTeX bibliography: how to add references.
Compatibility notes
- The .bib file works with both. biblatex understands all standard BibTeX fields and types. BibTeX silently ignores fields it does not know, such as
date,urldateorjournaltitle, so an entry that only hasdateloses its year in a BibTeX style. If a file must serve both, keepyearandjournal. - biblatex-only entry types such as
@onlineare unknown to standard.bststyles. BibTeX warns (“entry type for … isn’t style-file defined”) and formats them with the style’s default, usually like@misc. See entry types for portable choices. - Styles are not interchangeable. A
.bstfile cannot be used with biblatex, and a biblatex style cannot be used with BibTeX. To match a publisher, you need a style written for the system you use. backend=bibtexexists in biblatex, but it loses Unicode support and many features and is only a fallback for systems without biber.
More short answers are in the FAQ.