Suppose you need a single @article{...} block to paste into references.bib.
This article covers the shortest way to get one, and then the six things that
are usually wrong with whatever comes back.
If the paper has a DOI, one command is enough
curl -LH "Accept: application/x-bibtex" https://doi.org/10.1038/nphys1170
@article{Aspelmeyer_2009, title={Measured measurement}, volume={5},
ISSN={1745-2481}, url={http://dx.doi.org/10.1038/nphys1170},
DOI={10.1038/nphys1170}, number={1}, journal={Nature Physics},
publisher={Springer Science and Business Media LLC},
author={Aspelmeyer, Markus}, year={2009}, month=Jan, pages={11–12} }
(Wrapped here for reading; the response actually arrives as one long line.)
This is DOI content negotiation. doi.org hands the request to whichever
registration agency minted the DOI, and both Crossref and DataCite serve
application/x-bibtex — which covers most journal articles and, since arXiv
began minting DataCite DOIs, most preprints too. No account, no browser, and it
loops over a text file of DOIs with no extra tooling.
Four other places to get a .bib
| What you have | Where the BibTeX is |
|---|---|
| A Google Scholar result | The quote icon (“Cite”) under the result, then BibTeX at the bottom of the popup |
| An arXiv page | An “export BibTeX citation” button on any /abs/ page, under References & Citations |
| A record on ACL Anthology, DBLP, ACM DL or IEEE Xplore | The record page’s export or “Cite” control, with BibTeX among the formats — on ACL Anthology and DBLP the file is the record URL with the trailing slash (or .html) swapped for .bib |
| A paper already in a reference library | A copy button on the entry |
One thing worth knowing before you go looking: PubMed does not give you
BibTeX. Its Cite button offers AMA, MLA, APA and NLM as text. Its
citation-manager export is a different format, .nbib. Take the DOI off the
record and run the command above instead.
The same paper, three sources, three different entries
Below is the BERT paper, fetched three ways on the same day.
First, via the DOI, as above:
@inproceedings{Devlin_2019, title={}, url={http://dx.doi.org/10.18653/v1/N19-1423},
DOI={10.18653/v1/n19-1423}, booktitle={Proceedings of the 2019 Conference of the North},
publisher={Association for Computational Linguistics},
author={Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
year={2019}, pages={4171–4186} }
Second, from ACL Anthology (editor, address, publisher and url dropped
for length; the author list re-flowed onto one line):
@inproceedings{devlin-etal-2019-bert,
title = "{BERT}: Pre-training of Deep Bidirectional Transformers for Language Understanding",
author = "Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina",
booktitle = "Proceedings of the 2019 Conference of the North {A}merican Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers)",
month = jun,
year = "2019",
doi = "10.18653/v1/N19-1423",
pages = "4171--4186"
}
Third, from a library that already had the paper saved:
@inproceedings{devlin2019bert,
title = {BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding},
author = {Jacob Devlin and Ming-Wei Chang and Kenton Lee and Kristina Toutanova},
booktitle = {Conference of the North American Chapter of the Association for Computational Linguistics},
pages = {4171--4186},
year = {2019},
doi = {10.18653/v1/n19-1423},
}
Same paper, same day, three different records. The DOI route returned an
empty title — Crossref’s deposit for this DOI carries none — plus a
truncated booktitle and an en dash in pages. Nothing errors; you simply get
a reference with no title in your bibliography. The ACL Anthology entry is the
best of the three because a human at the venue built it: the acronyms are
already braced, the page range already uses --. Both of those, though, are
fixes an exporter can apply mechanically. So prefer the source closest
to the venue where the paper appeared, and read every entry you fetch: the
quickest route is also the one most likely to hand you an incomplete entry.
Six things to check before you paste it in
1. The capitals will not survive
plain, abbrv, unsrt and alpha — the classic styles most journal .bst
files descend from — lowercase every letter in a title except the first one, and
the first one after a colon and a space. The role of DNA methylation in Arabidopsis prints as The role of dna methylation in arabidopsis. Of the BERT
entries above, only the ACL Anthology one is safe, and that is because the
acronym is already braced as {BERT}. Sitting at the start of a title spares
just the first letter, so the unbraced BERT: in the library entry prints as
Bert:. Braces are the escape hatch — anything inside {} is left alone.
title = {{BERT}: Pre-training of Deep Bidirectional Transformers},
title = {The role of {DNA} methylation in {Arabidopsis}},
You will also see whole titles wrapped as {{...}}. That protects everything
at once and does work, but it also freezes capitalization the style may have
been changing on purpose — brace the token, not the sentence. On biblatex
with biber no case folding happens by default, but brace anyway: you rarely
control which style the venue will run your .bib through.
Part of this decision is mechanical, and an exporter can make it without you. A
word carrying a capital anywhere after its first letter — BERT, DNA,
arXiv, GPT — is one no style could have produced by rule, so it needs
protecting. Deep and The do not: a single leading capital is exactly what a
style puts at the start of a title or after a colon, and bracing it would
override a decision the style is entitled to make.
One case defeats any such rule. Arabidopsis, English, Bayesian, the C
in Vitamin C — a proper noun with one capital and nothing else is
indistinguishable, on the page, from an ordinary word opening a sentence. The
only rule that catches them all is bracing the entire title, which is the
{{...}} above. So in The role of {DNA} methylation in {Arabidopsis}, the
{DNA} can be worked out mechanically; the {Arabidopsis} is yours to add.
2. BibTeX will split names you did not want split
BibTeX reads author = {World Health Organization} as the first name “World
Health” and the surname “Organization”, so a style that abbreviates given names
prints it as W. H. Organization. Wrap the name in its own braces so it stays
one unit:
author = {{World Health Organization}},
The same rule saves any name containing the word and, which BibTeX otherwise
reads as a separator between two authors. And when a surname has more than one
part, use the Last, First form so nothing has to be guessed:
author = {van der Waals, Johannes Diderik},
3. @misc is not a synonym for “not sure”
Here are two entries for one paper, both real, both fetched the same day. The
first comes from arXiv’s DataCite DOI (author list trimmed; keywords and
copyright dropped):
@misc{https://doi.org/10.48550/arxiv.1706.03762,
doi = {10.48550/ARXIV.1706.03762},
url = {https://arxiv.org/abs/1706.03762},
author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and ...},
title = {Attention Is All You Need},
publisher = {arXiv},
year = {2017}
}
The second comes from a library holding the published version:
@inproceedings{vaswani2017attention,
title = {Attention Is All You Need},
author = {Ashish Vaswani and Noam Shazeer and Niki Parmar and ...},
booktitle = {Conference on Neural Information Processing Systems},
volume = {30},
pages = {5998--6008},
year = {2017},
}
@misc has no required fields, so nothing warns you that the venue, volume and
pages are gone — it just prints as an author, a title and a year. Cite the
version a reader should go to: if a published version exists, use @article or
@inproceedings for it and keep the preprint link in url (or in eprint
under biblatex). Reach for @misc only when the preprint genuinely is the only
version.
4. Dashes and months
pages={11–12} in the first entry is a literal en dash. The BibTeX convention
is two hyphens — pages = {11--12} — which LaTeX renders as an en dash, and
which styles that reformat ranges can actually parse. Months are the same class
of problem: the standard styles define jan through dec and nothing else, so
an unbraced month=July is an undefined string that BibTeX drops, with the
warning string name "july" is undefined. Write month = jul, or
month = {July} to force the literal. The month=Jan in the first entry is
fine, incidentally: BibTeX matches macro names without regard to case, so it
resolves to jan.
5. Unicode, and the four characters you have to escape
A bare &, _ or # in a title (“Design & Analysis”) will halt the LaTeX run.
A bare % is quieter and worse: it starts a comment, so it raises no error at
all and simply swallows the rest of the line. Escape all four — \&, \_,
\#, \%. Accented characters are subtler.
Schölkopf is fine on biblatex with biber, which is UTF-8 native. Classic
bibtex is byte-oriented, so its sorting and case folding across multibyte
characters are unreliable — and any encoding mismatch between the .bib file
and whatever reads it turns Schölkopf into Schölkopf. If you have to stay
on bibtex, write Sch{\"o}lkopf.
6. Rename the key to one you can actually type
The arXiv DOI above returns the key
https://doi.org/10.48550/arxiv.1706.03762. DBLP returns
DBLP:conf/naacl/DevlinCLT19. Rename it to something you will still recognise
in six months — vaswani2017attention — and do it before the key spreads
through a draft and every \cite{} has to be hunted down.
What to do when you need forty entries, not one
Running those six checks forty times is the point at which people give up and paste whatever the first generator returned. The fix is structural: collect papers as you meet them, and take the bibliography out once, at the end, from one place.
Litlas is built around that order of work. You add papers
from search results, from the browser extension while you are reading, or by
dragging a PDF into the library, and an existing .bib imports without
overwriting notes you have already written. On any paper, View BibTeX opens
the entry inline and copies it in the same press; the Cite panel beside it
renders the reference in APA, Chicago author-date, IEEE, MLA or Vancouver and
exports .bib, .ris or CSL-JSON. A whole board — or the whole filtered
library — comes out as a single .bib. The per-paper export also lets you
choose whether venues come out in full (“Conference of the North American
Chapter of the Association for Computational Linguistics”) or short (“NAACL”),
which is the difference between an entry you submit and one you rewrite.
Trying it is cheap. Reading one paper’s BibTeX needs no account — the
per-paper export is public. An account is only needed to build a library, and
the free plan needs no card and works right away. What you export comes out
with page ranges normalised to --, TeX’s special characters escaped, and
braces already around the title words that carry a capital after the first
letter, BERT and DNA among them. The single-capital proper nouns above, and
whatever sits inside doi and url, pass through untouched — those are the two
things to look over before you paste.
The short version
- Have a DOI? One
curland you are done. - Have a URL? Try the site’s own
.biblink first, Google Scholar second. - Whatever comes back, read it: capitals, name splitting, entry type,
--, escapes, key.
Every generator produces plausible BibTeX. None of them produces a flawless entry. The last pass is yours to do, but it takes about thirty seconds once you know the six places to look.
Bibliography
- ACL. “ACL Anthology.” https://aclanthology.org/. Accessed 20 August 2026.
- arXiv. “arXiv Help Contents.” https://info.arxiv.org/help/. Accessed 20 August 2026.
- Crossref. “Content Negotiation.” https://www.crossref.org/documentation/retrieve-metadata/content-negotiation/. Accessed 20 August 2026.
- Kime, P., P. Lehman, et al. The biblatex Package. CTAN, version 3.22, 2026. https://ctan.org/pkg/biblatex
- Patashnik, O. BibTeXing. CTAN, 1988. https://ctan.org/pkg/bibtex
- Schloss Dagstuhl. “What is dblp?” https://dblp.org/faq/What+is+dblp.html. Accessed 20 August 2026.
