Writing

How to Get a BibTeX Citation for Any Paper (No Software Install)

The fastest routes to a BibTeX entry — one curl command against the DOI, the export links on arXiv and ACL Anthology, or a one-press copy from your own library — plus the six things that are usually wrong with whatever you get back.

This article was drafted with AI assistance and checked by a human editor before publication.

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.

→ Try Litlas now

The short version

  • Have a DOI? One curl and you are done.
  • Have a URL? Try the site’s own .bib link 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