Manually typing a BibTeX entry from a paper PDF is busywork and a frequent source of citation errors — typos in author names, wrong year, mangled diacritics, miscategorized entry type. Every modern academic paper has a stable identifier you can use instead: a DOI (e.g., 10.1145/3292500.3330701) for published work, or an arXiv ID (e.g., 2103.00020) for preprints. Paste either one into the free BibTeX Builder and you'll get back a well-formed BibTeX entry in about a second. This guide walks through the workflow, what to verify after import, and the common edge cases.
Where the metadata comes from
Different identifiers route to different authoritative sources:
- DOI → CrossRef, the registry where publishers submit canonical metadata. CrossRef provides title, full author list, journal or proceedings name, volume, issue, page range, year, publisher, and the DOI itself.
- arXiv ID → arXiv's own API. Returns title, authors (cleanly formatted), abstract, category, and submission date. Note that an arXiv preprint often has a separately-registered DOI on the journal version — see "Preprint vs published" below.
Because the data comes from the publisher's own submission, it's typically accurate. The Builder doesn't store any of this — your identifier is sent to CrossRef or arXiv, the response is formatted as BibTeX, and the result is returned to your browser without touching durable storage.
Step-by-step
- Find the DOI. On the publisher's article page it's usually shown near the title (e.g., "doi.org/10.1145/3292500.3330701") or in the citation block. In a PDF, the DOI is often in the header or footer of the first page. Format:
10.{registrant}/{suffix}. You can include the leadinghttps://doi.org/or just the bare DOI — the Builder strips the prefix either way. - Or find the arXiv ID. In the URL:
arxiv.org/abs/2103.00020. In the PDF header: usuallyarXiv:2103.00020. Either format works. - Paste into the Builder. Open the BibTeX Builder and paste your identifier. Multiple identifiers separated by newlines also work for batch-importing a reading list.
- Click "Build." The tool queries CrossRef or arXiv with proper User-Agent attribution and formats the response as BibTeX.
- Copy into your
.bib. Paste the entry into your bibliography file and rename the auto-generated key if you have a project naming convention (see below).
What to verify after import
CrossRef and arXiv metadata is generally clean, but four things are worth a quick check:
Author names with diacritics
Names like "Müller", "Lévy", "Søndergaard" usually come back correctly encoded in UTF-8. If your build is using classic 8-bit BibTeX (not Biber), convert these to LaTeX accent macros ({\"u}, {\'e}, {\o}) — or switch to Biber, which handles UTF-8 natively. The validator accepts either form, but legacy BibTeX will mangle UTF-8 silently.
Title capitalization
BibTeX styles lowercase title words automatically unless you protect them with braces. If your paper title contains a proper noun, acronym, or programming language name, wrap it:
title = {Bert: pre-training of deep bidirectional transformers for language understanding}
title = {{BERT}: Pre-training of Deep Bidirectional Transformers for Language Understanding}
This is the single most common post-import edit. The Builder doesn't make this judgment automatically because what to protect depends on your bibliography style.
Entry type
For a preprint, CrossRef may return @misc or @article depending on the registrant. For a workshop paper, you may get @inproceedings or @article depending on venue classification. Adjust to match what your bibliography style expects — e.g., ACM's acmart style cares whether a paper is @inproceedings vs @article.
Citation key
The Builder generates a default key from the first author and year (e.g., vaswani2017). If you use a longer convention (vaswani2017attention, vaswani-attention-2017) rename it. Consistency across your .bib matters more than the exact format; the validator flags duplicate keys if you accidentally collide with an existing entry.
Edge case: preprint vs published version
Many papers exist as both an arXiv preprint and a peer-reviewed publication with a different DOI. The published version is canonical for citation (it's the version of record), but the arXiv preprint is often open-access where the publisher's PDF is paywalled.
Best-practice .bib entry:
- Use the published version's DOI as the primary identifier and the published venue as the source.
- Add an
eprintfield with the arXiv ID. BibLaTeX renders this as an additional eprint link in the reference list.
@article{vaswani2017,
author = {Vaswani, Ashish and Shazeer, Noam and others},
title = {Attention Is All You Need},
journal = {Advances in Neural Information Processing Systems},
volume = {30},
year = {2017},
doi = {10.48550/arXiv.1706.03762},
eprint = {1706.03762},
eprinttype = {arxiv},
}
What if the DOI doesn't resolve?
Most failures are typos: a missing character, a confused 0/O or 1/l. Paste the DOI into https://doi.org/ in your browser — if it doesn't redirect to a real page, the DOI is wrong. Check the original source again. If the DOI is correct but CrossRef has no record, it may be too new (CrossRef ingestion can lag a few days) or the publisher hasn't registered it (rare but happens with smaller venues).
For AI-generated or hallucinated DOIs, the BibTeX Validator's "Check DOI resolution" flag spots them — every DOI that returns a 404 against doi.org is reported with its HTTP status. Combine with the CrossRef title-match check and you'll catch a hallucinated citation before submission.
Batch import
For a reading-list export from your reference manager (Zotero, Mendeley, Paperpile, etc.), the manager itself usually produces clean BibTeX. But if you have a list of DOIs or arXiv IDs you've collected by hand, paste them as one-per-line into the Builder. It fetches all of them in parallel (with polite rate-limiting against CrossRef) and returns a single concatenated .bib you can save.
Once the entry is in your file, run the whole .bib through the validator to verify the new entry doesn't conflict with anything you already had — duplicate keys, missing required fields, dead DOIs. The validator returns an annotated .bib with one comment per entry summarizing its state, which is exactly what you want for a final pre-submission sanity check.