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
  1. What each one is
  2. Side-by-side
  3. Which should you use?
  4. Minimal examples
  5. Switching from BibTeX to biblatex
  6. Compatibility notes

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 .bst style file and writes a .bbl file that LaTeX typesets.
  • biblatex is a LaTeX package, loaded with \usepackage{biblatex}. Its styles are written in LaTeX (.bbx and .cbx files), so changing the look of a reference means setting an option or redefining a macro, not editing a .bst program.
  • 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 .bst file, or its instructions ask for BibTeX. Common examples are IEEE (IEEEtran.bst), ACM (ACM-Reference-Format.bst in acmart), Elsevier (elsarticle-num.bst and siblings in elsarticle) and Springer’s journal templates. Publishers often process your .bbl file 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 url and urldate printed 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

  1. Remove \bibliographystyle{...} and replace \bibliography{references} with \printbibliography where the list should appear.

  2. Add to the preamble \usepackage[backend=biber, style=authoryear]{biblatex} (or style=numeric for numbered citations) and \addbibresource{references.bib}. Note the .bib extension, which \bibliography did not want.

  3. Remove \usepackage{natbib}, since natbib and biblatex cannot be loaded together. Either rewrite \citep and \citet as \parencite and \textcite, or keep them by adding the natbib=true option:

    \usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
  4. Make your editor or build run biber instead of bibtex. latexmk detects biblatex and runs biber on its own, and Overleaf does the same. In TeXstudio or TeXworks, change the bibliography tool in the settings.

  5. Delete the old .aux and .bbl files once, so that no BibTeX output is left over.

  6. Leave the .bib file as it is. biblatex accepts journal for journaltitle, address for location and year/month alongside date, 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 (not bibtex) 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, urldate or journaltitle, so an entry that only has date loses its year in a BibTeX style. If a file must serve both, keep year and journal.
  • biblatex-only entry types such as @online are unknown to standard .bst styles. 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 .bst file 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=bibtex exists 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.