Library / SDK
yuchenlin/rebiber avatar
yuchenlin/rebiber

Rebiber rewrites arXiv BibTeX into official DBLP and ACL Anthology records

A simple tool to update bib entries with their official information (e.g., DBLP or the ACL anthology).

3,034 stars165 forksPythonMIT

At a glance

What is it?
Rebiber replaces preprint bibliography entries with published venue records while keeping your cite keys intact. The judgement: it is a narrow, well-documented fix for one recurring LaTeX problem, and the local dump is the real product.
Who is it for?
Adopt Rebiber if your .bib files are full of arXiv preprint entries for papers that have since appeared at ACL, NeurIPS, CVPR or another indexed venue, and if your cite keys must survive the rewrite. Do not adopt it if you cite venues outside the packaged dump list, if you need COLM or 2026 conference records, or if you expect it to run without network access while still resolving leftover preprints.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The bibliography problem Rebiber was built to fix

Machine learning and NLP papers usually circulate as arXiv preprints months before they appear at a conference. Authors cite the preprint because that is what existed when they wrote the related-work section, and the entry stays in the .bib file through review and camera-ready. The result is a bibliography where half the entries say "arXiv preprint arXiv:2005.00683" for papers that were later published at EMNLP, with no DOI, no anthology URL and no page numbers. Reviewers notice. Camera-ready deadlines make it painful to fix by hand.

Rebiber targets exactly that gap. It reads a .bib file, looks up each entry against packaged DBLP and ACL Anthology dumps, and rewrites the entry with the official record. The README is explicit that cite keys are kept, which is the constraint that makes the tool usable at all: if a rewrite changed the key from lin2020birds to something DBLP prefers, every \cite command in the paper would break. The intended user is a researcher or a small team preparing a submission, not a library cataloguing system.

Local dumps first, DBLP search as an opt-in second pass

The architecture is a lookup against shipped data, not a query against a live service by default. The repository carries JSON dumps under rebiber/data/, one per conference and year, and rebiber/bib_list.txt toggles which dumps are active. A normal run parses the input .bib, normalises each entry, and matches it against those dumps. Nothing leaves the machine unless you ask for it.

The matching rules are where the design decisions show. Authors are checked first: a title hit only converts if the first-author last names match, or if at least two last names overlap across the record. Empty or missing authors never match, and the README states this holds even when --no-check-authors is passed. Titles are keyed two ways, first by a digit-preserving key so that 16x16 and 32x32 are not treated as the same string, then by the letters-only key used by older dumps. That two-stage key ordering is a compatibility measure for data collected at different times, and it is the kind of detail that only appears when a project has been maintained across several dump generations.

--live-lookup is the escape hatch. On a local miss, the tool searches DBLP by title, capped at five hits, applying the same author and title guards. The README points at DBLP's documented rate limits for the search API, so a large bibliography with many misses will be slow and is expected to be polite about it. Live lookup prefers a published hit over an arXiv or CoRR one, and skips the entry entirely if several published hits remain ambiguous. That refusal to guess is the right default for a bibliography, where a wrong match is worse than no match.

Installing from GitHub and the flags that matter

The README is blunt about distribution: install from GitHub only, because the PyPI package is an unsupported 2021 release. Python 3.10 or newer is required, and Rebiber 1.4 moved to bibtexparser 2 with the constraint >=2,<3.

uv tool install git+https://github.com/yuchenlin/rebiber

or, with pip:

pip install "rebiber @ git+https://github.com/yuchenlin/rebiber"

For a development checkout, the README gives git clone followed by uv sync --extra dev (or pip install -e ".[dev]") and uv run pytest.

The usage pattern that matters most is the dry run, because omitting -o overwrites each -i file in place:

rebiber -i refs.bib --dry-run rebiber -i refs.bib --dry-run --report changes.txt rebiber -i refs.bib -o refs.official.bib rebiber -i *.bib -o ./normalized/

The --report flag writes the change report to a file, which is the practical way to diff a large bibliography before committing. --used-in paper.tex appendix.tex restricts replacement to keys actually cited in those files, though unused keys are still pretty-printed and still affected by -r, -s, -st and -d. --keep takes a field allowlist, with ID and ENTRYTYPE always retained. --protect-titles braces acronyms like BERT and GPT-2. --format-only pretty-prints without any database, DBLP or arXiv rewrite, and the README describes it as the way to get a fully offline run. Other switches: -r url,biburl,timestamp drops fields, -s True shortens venues using rebiber/abbr.tsv, -d False keeps duplicate cite keys, -st True sorts entries by cite key, -l and -a point at custom bib_list.txt and abbr.tsv files, -u refreshes the packaged dumps from GitHub main, and -v prints the version.

What the index covers, and the venues it does not

The packaged dumps are the product, and their coverage is uneven by design. ACL Anthology is current and includes both main conferences and workshops, split across acl_1.json, acl_2.json and acl_3.json. For everything else the README states plainly that dumps cover main tracks only, so CVPR and ICCV workshop papers are out. CVPR runs 2000 to 2025, ICCV covers odd years from 2003 to 2025, NeurIPS and ICML go back to 2000, and ICLR starts at 2013. Newer venues sit in shorter windows: MLSys 2019 to 2025, TMLR 2022 to 2026, WACV 2022 to 2026.

The gaps are listed as explicitly as the coverage. COLM is absent because the DBLP table of contents is empty. ICLR, ICML and CVPR 2026, RSS and CoRL 2025, and ECCV 2026 are not on DBLP yet. A separate group of venues is frozen at roughly 2020: ALENEX, ASONAM, BigData, CIDR, CIKM, COLT, MM, RecSys, SDM, SODA, STOC and WSDM, with SIGMOD running through 2022 before later years appear as PACMMOD instead. If you cite a 2024 CIKM paper, Rebiber will not find an official record for it.

A monthly Action opens a pull request with fresh DBLP and anthology data, so the repository's own numbers describe what is in the repo rather than what DBLP holds at any given moment. The README says so directly. You can extend coverage yourself:

uv run python -m rebiber.download_dblp --confs iclr --start-year 2026

That writes rebiber/data/{conf}{year}.bib.json and appends to bib_list.txt when needed. Building a dump from an existing .bib uses uv run python -m rebiber.bib2json -i path/to/conf.bib -o path/to/conf.json.

Where the rewrite model breaks down

The tool depends on a usable identity for each entry. If your preprint has no arXiv id, the fallback path that copies eprint fields onto the replacement has nothing to work with, and a local miss with --live-lookup off simply leaves the entry as it was. The README notes that leftover unofficial arXiv entries may still query the arXiv API for year and primaryClass, which means a run is not fully offline unless you pass --format-only, and that flag disables the rewriting you probably installed the tool for. There is a real tension between offline reproducibility and getting official records, and Rebiber resolves it by making you choose.

Ambiguity handling is conservative in a way that will frustrate some users. Live DBLP lookup skips an entry when several published hits remain, and digit keys must agree. A short or common title with several candidate papers will therefore stay unchanged, and you will not be told why beyond the change report. Author checking has the same character: empty authors never match, so entries generated by tools that omit author fields are effectively invisible to the matcher. The README also notes that already-published papers are not rewritten merely because an abstract mentions arXiv, which prevents a class of false positives but also means the tool will not correct an entry that is wrong for a different reason.

Broken input is handled by preservation rather than repair. Unparsed or unclosed records are kept, not dropped, so a malformed entry survives the run untouched. That is safer than silent deletion, but it also means a .bib file with structural problems will pass through Rebiber looking roughly the same, and you have to read the report to notice.

How Rebiber differs from a reference manager or a live API client

Zotero and similar reference managers also fetch metadata, but they operate on a library you maintain and they own the cite key generation. Rebiber operates on a .bib file in a repository, matches against a fixed set of conference dumps, and treats the cite key as immutable. The practical difference is that you can run Rebiber inside a LaTeX project without touching anyone's reference library, and the diff is limited to the fields of entries whose keys already appear in your .tex files.

A hand-rolled script calling the DBLP API directly is the other alternative, and it is not a trivial one. You would need to reproduce the two-stage title key, the author overlap rule, the published-over-arXiv preference, the eprint copying behaviour, the venue abbreviation table and the field removal list. Rebiber packages those decisions as data files you can edit: rebiber/bib_list.txt for which dumps are active and rebiber/abbr.tsv for venue shortening. The trade-off is that you inherit its choices. If your matching needs differ from the author overlap rule, the flags do not let you change it; you would be editing the source.

Maintenance cost, licensing and what to check before adopting

Rebiber is MIT licensed, which permits commercial and academic use, modification and redistribution provided the copyright notice and permission notice are retained. That is a permissive arrangement with no copyleft obligation on your own project. This is a description of the licence text, not legal advice; if licence compatibility matters to your organisation, have someone qualified review it.

The maintenance model is worth understanding before you depend on it. The packaged dumps go stale between monthly Action runs, and the README frames the repository's year ranges as what is in the repo rather than what DBLP holds. Rebiber 1.4 raised the minimum Python version from 3.8 to 3.10 and migrated to bibtexparser 2, which is a breaking change for anyone pinned to an older interpreter. If you install from GitHub main rather than a tag, you are tracking a moving target. Pinning to v1.3.0 trades freshness for reproducibility, since the packaged data is part of what you pin.

Before adopting, run rebiber -i refs.bib --dry-run --report changes.txt on a copy of your real bibliography and read the report. Confirm your target venues appear in rebiber/bib_list.txt with the years you need, and confirm your preprints carry arXiv ids or that --live-lookup against DBLP is acceptable for your network and rate budget. If most of your citations are outside the packaged list, or you need COLM, or you cannot tolerate a network call during a build, Rebiber is the wrong tool for that project and a manual pass over the .bib file is the cheaper answer.

Editorial conclusion

Adopt Rebiber if your .bib files are full of arXiv preprint entries for papers that have since appeared at ACL, NeurIPS, CVPR or another indexed venue, and if your cite keys must survive the rewrite. Do not adopt it if you cite venues outside the packaged dump list, if you need COLM or 2026 conference records, or if you expect it to run without network access while still resolving leftover preprints. Verify first that your target venue appears in rebiber/bib_list.txt, that your preprint carries a usable arXiv id, and that --dry-run on a copy of your real bibliography produces the replacements you expect before you let it write in place.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. yuchenlin/rebiber on GitHub
Community notes

Community notes