LaTeX: Undefined references and ?? in output
Seeing "??" instead of a number, or "Reference/Citation undefined" warnings, means the labels have not been resolved yet. Fix it by compiling again — LaTeX needs at least two passes so the .aux file is written and then read. Citations also require a BibTeX/biber run between passes.
Why it happens
Cross-references (\ref, \cite) are resolved from auxiliary files generated on a previous run. On the first compile those files do not exist yet, so references show as ??.
Example
% Build order for citations:
% pdflatex main (writes .aux)
% bibtex main (reads .aux, writes .bbl)
% pdflatex main (pulls in references)
% pdflatex main (resolves all numbers)
% On LetX this full sequence runs automatically on Compile.Frequently asked questions
Why two compiles?
LaTeX writes label and page data to a .aux file on the first pass, then reads it on the second to fill in numbers. One pass cannot know a number it has not computed yet.
My \cite shows [?]
Run BibTeX/biber after the first pdflatex pass, then compile twice more. On LetX this happens automatically when you click Compile.
Related LaTeX fixes
Browse all LaTeX problems & fixes, or start with the LaTeX guide.
Try the fix in LetX
Open the editor, paste your code, and compile in seconds to see the error clear — free, in your browser.
Open LetX Free