FormaTeX

\compare{bibtex-vs-biber}

BibTeX vs Biber

Both are bibliography processors for LaTeX — but they make fundamentally different trade-offs. This guide covers Unicode support, sorting, performance, and when each backend is the right choice.

BibTeX— classic, fastBiber— Unicode, modern
Use BibTeX when…
  • A journal or publisher template requires it
  • You use natbib citation style
  • Your bibliography contains only ASCII text
  • Maximum compilation speed is a priority
Use Biber when…
  • Author names contain non-ASCII characters
  • Starting a new project (recommended default)
  • You need locale-aware alphabetic sorting
  • You want extended fields: doi, url, langid, eprint

\section{What each tool does}

Role of a bibliography processor

Neither BibTeX nor Biber is a LaTeX package — they are external programs invoked between LaTeX compilation passes. They read your .bib database, resolve citations, sort entries, and write a formatted .bbl file that LaTeX reads on the next pass.

BibTeX

bibtex main

Written by Oren Patashnik and released in 1985 alongside LaTeX 2.09, BibTeX is the original bibliography processor. It uses .bst style files written in a stack-based language to control output formatting.

  • ASCII-only input by design
  • Very fast on any database size
  • Required by natbib and most journal styles
  • .bst styles are notoriously hard to write

Biber

biber main

Written in Perl by Philip Kime and released in 2009, Biber is the recommended backend for the biblatex package. It uses a Perl-based Unicode Collation Algorithm for sorting and supports UTF-8 natively throughout the entire processing pipeline.

  • Full UTF-8 support — no escaping needed
  • Unicode Collation Algorithm sorting
  • Extended fields: doi, url, langid, eprint
  • Full cross-reference field inheritance

\subsection{Feature Matrix}

Side-by-side comparison

Feature
BibTeX
Biber
Unicode input
ASCII only (manual escaping)
Native UTF-8
Sorting algorithm
ASCII byte order
Unicode Collation Algorithm
Performance
Very fast
Slower on large databases
Works with
natbib, plain styles
biblatex only
Extended fields
Ignored or errors
doi, url, langid, eprint…
Cross-references
Basic
Full field inheritance
Internationalization
Manual LaTeX escaping
Native locale support
Journal templates
Most require BibTeX
New projects, own templates

\begin{examples}

.bib file comparison

The same database entry in classic BibTeX vs BibLaTeX + Biber. Note how Biber supports UTF-8 directly and additional fields.

BibTeX
% Classic BibTeX .bib — special characters need manual escaping
@article{einstein1905,
  author  = {Einstein, Albert},
  title   = {Zur Elektrodynamik bewegter {K\"orper}},
  journal = {Annalen der Physik},
  year    = {1905},
  volume  = {17},
  pages   = {891--921},
}

@book{knuth1986,
  author    = {Knuth, Donald E.},
  title     = {The {\TeX}book},
  publisher = {Addison-Wesley},
  year      = {1986},
  isbn      = {0-201-13447-0},
}
BibLaTeX + Biber
% BibLaTeX .bib — Biber handles UTF-8 natively, no escaping needed
@article{einstein1905,
  author  = {Einstein, Albert},
  title   = {Zur Elektrodynamik bewegter Körper},
  journal = {Annalen der Physik},
  year    = {1905},
  volume  = {17},
  pages   = {891--921},
  doi     = {10.1002/andp.19053221004},
  langid  = {german},
}

@book{knuth1986,
  author    = {Knuth, Donald E.},
  title     = {The {\TeX}book},
  publisher = {Addison-Wesley},
  year      = {1986},
  location  = {Reading, MA},
  isbn      = {0-201-13447-0},
}

Unicode Support

BibTeX

BibTeX processes source files as 8-bit ASCII. Authors with accented names — Müller, Björk, Nguyen — must be written as M\"uller, Bj\"ork etc. Forgetting an escape character causes garbled output or a bibtex error.

Biber

Biber reads .bib files as UTF-8. You write Müller, Björk, Nguyễn directly. No escaping. Editors and version control tools handle the files naturally.

Sorting

BibTeX

BibTeX sorts entries using raw ASCII byte values. This means uppercase letters sort before lowercase, and accented characters (ä, ö, ü) sort after Z — not in their natural alphabetical position. For English-only bibliographies the difference is invisible; for multilingual work it can produce wrong ordering.

Biber

Biber implements the Unicode Collation Algorithm (UCA) and is locale-aware. Ä sorts with A, Ö with O, and you can specify sortlocale=de_DE for German rules, sv_SE for Swedish, and so on.

\subsection{Migration Guide}

Migrating from BibTeX to Biber

The .bib file format stays the same — the changes are in your LaTeX preamble and citation commands.

Preamble migration
% Switching bibliography backend: BibTeX → Biber + BibLaTeX

% REMOVE these (BibTeX-style):
% \bibliographystyle{plain}     ← remove from preamble
% \bibliography{refs}           ← remove from document body

% ADD this to the preamble:
\usepackage[
  backend=biber,       % use Biber processor (not bibtex)
  style=authoryear,    % citation style: authoryear, numeric, alphabetic…
  sorting=nyt,         % sort by: name, year, title
  urldate=iso,         % ISO 8601 dates for URL fields
]{biblatex}

\addbibresource{refs.bib}   % replaces \bibliography{}

% Then in the document body:
% \parencite{einstein1905}   →  (Einstein, 1905)
% \textcite{knuth1986}       →  Knuth (1986)
% \printbibliography         →  full reference list

% Compile order:
% pdflatex main.tex  →  biber main  →  pdflatex main.tex  →  pdflatex main.tex
Remove
\bibliographystyle{plain}

biblatex controls citation style via its own options — no bibliographystyle needed

Remove
\bibliography{refs}

This call at the end of your document is replaced by \printbibliography

Add
\usepackage[backend=biber, style=authoryear]{biblatex}

Declare biblatex in the preamble; backend=biber selects Biber as the processor

Add
\addbibresource{refs.bib}

Replaces \bibliography{}; note the .bib extension is required here

Replace
\cite{key} → \parencite{key}

biblatex uses \parencite (parenthetical) and \textcite (inline) by convention

Add
\printbibliography

Place at the end of the document where you want the reference list printed

BibTeX and Biber both supported

Compile with bibliography in seconds

FormaTeX runs multi-pass compilation automatically: pdflatex → biber → pdflatex. No local TeX installation required.

One quick thing

We track anonymous usage — page views, feature usage, compilation events — to understand what works and what doesn't. No ads, no personal data, no third-party sharing.

Cookie policy