A simple cross-browser extension to ease the process of searching publications on dblp.org and copying, downloading their BibTeX entries, or saving them straight to Zotero.
- Search Papers: Enter the paper's title in the input field or highlight any text on the current web page, then click the search button. The extension will search dblp.org for matching publications and display the results.
- Copy BibTeX Entries: Next to each search result, there's a 'Copy BibTeX' button. Click this button to copy the BibTeX entry for the corresponding publication to your clipboard.
- Download BibTeX Entries: Next to the copy button, a 'Download BibTeX' button saves the entry as a
.bibfile named after its citation key. Not available in Safari, which does not let extensions save files (the button, theDkey, and the menu item are hidden there). - Save to Zotero: A 'Save to Zotero' button imports the entry directly into the Zotero desktop app through Zotero's local connector API. By default the entry goes to the library or collection currently selected in the Zotero window (the status message names it); in Options you can instead pin a fixed destination — any of your editable libraries (personal or group) or collections, listed live from Zotero. Zotero must be running; on first use, the browser asks for permission to connect to Zotero on your computer (127.0.0.1). The button can be hidden in Options. The imported entry honors your citation-key and field-removal settings, so add-ons like Better BibTeX pick up the same citation key you would have copied.
- Sort & Filter Results: Click the Authors, Year, or Venue column headers to sort, the Title header to restore the default order, and the Type header to filter results by publication type.
- Color-Coded Entries: Results are color-coded by publication type (proceedings, books, journals, etc.), matching the dblp.org scheme.
- Keyboard Navigation: Use ↑/↓ to move between results, and
Cto copy BibTeX,Dto download BibTeX,Zto save to Zotero,Bto open the dblp page, andOto open the DOI for the selected result. - Context Menu: Right-click selected text on any page to "Search highlighted text on dblp" or "Resolve DOI".
- Customizable BibTeX Citation Keys: Replace dblp default citation keys with a custom format. Use the drag-and-drop builder in Options to arrange fields (Author, Year, Venue, Title) and separators (dash, underscore) in any order. Additional formatting options include capitalizing the author's name and uppercasing the venue (e.g.,
Calefato2023ESEM,calefato_2023_esem). - Results Count: The extension shows the number of search results found. The extension automatically filters out useless CoRR Abs entries.
- Pagination: Navigate through search results using Previous/Next buttons. Page info shows the current page, total pages, and result count. Pagination state persists across browser sessions.
- Save Search State: The content of the input text field and results are saved in the local storage. This allows you to leave the page and come back later without losing your search results.
- Configurable Popup Width: Set the default popup width (500-800 px) in Options; narrower widths automatically hide some table columns.
- Configurable Result Limit: Set the maximum number of results per query in Options (default 30, capped at 1000).
- API: Versions 2+ are faster and more reliable as they rely on the official DBLP.org API to execute the queries.
- Remove duplicates: Useless, duplicated CoRR abs entries are filtered out.
- Remove BibTeX fields: When copying or downloading BibTeX entries, the extension can remove the
timestamp,bibsource,biburl, andurlfields.
- Install the extension to your Chromium browser (e.g., Chrome, Edge, ...), Firefox, or Safari.
- Click on the extension icon to open the pop-up.
- Enter the title of the paper you want to search for in the input field. Alternatively, highlight some text on the current web page.
- Click the 'Search' button to start the search.
- The search results will be displayed in the pop-up. Next to each result, click the 'Copy BibTeX' button to copy its BibTeX entry to your clipboard, the 'Download BibTeX' button to save it as a
.bibfile, or the 'Save to Zotero' button to import it into the running Zotero desktop app.
Contributions are welcome! Please submit a pull request or create an issue to contribute to this project.
make build # Build all extensions (alias for build/all)
make build/chrome # Build Chrome extension ZIP
make build/firefox # Build Firefox XPI addon and sources
make build/safari # Build Safari app-extension (macOS + Xcode required)
make build/edge # Build Edge extension (same as Chrome)
make build/all # Build all extensions (Safari is skipped outside macOS)
make build/clean # Clean build directory and stamps
make test # Run the unit-test suite
make test/live # Run the live tests against the dblp APINote
Safari can only be built on macOS with Xcode installed; elsewhere make build builds the other extensions and skips Safari.
Google Chrome
-
Open Google Chrome and navigate to
chrome://extensions. -
Enable Developer mode by clicking the toggle switch next to "Developer mode".
-
Click "Load unpacked" and select the project folder (the one containing
manifest.json), or a folder where you unzipped the archive frombuild/chrome.
Note
A single manifest.json serves every browser, so Chrome lists two expected manifest warnings under "Errors": the unrecognized browser_specific_settings key (Firefox-only) and the ignored background.scripts key (Firefox uses it instead of service_worker). Likewise, web-ext lint reports background.service_worker as unsupported in Firefox. Requires Chrome/Edge 121+ and Firefox 140+ (Firefox for Android 142+).
Edge
Same as above, the only difference is that you need to navigate to edge://extensions.
Firefox
-
Open Firefox and navigate to
about:debugging. -
Click "This Firefox" and "Load Temporary Add-on...".
-
Select the
.xpifile inbuild/firefox(ormanifest.jsoninbuild/firefox/src/<addon-folder>).
make run/chrome # Launch Chrome with the extension loaded (dev mode)
make run/firefox # Launch Firefox with the extension (via web-ext)
make run/safari # Launch Safari with the extension (macOS only)
make run/edge # Launch Edge with the extension
make info # Show development environment info, including the browsers foundThe run targets work on macOS and Linux. Each browser runs with a throwaway profile in build/profiles, so your own browser can stay open; make build/clean deletes the profiles. All run targets keep the terminal until the browser is closed; Ctrl-C closes it. Chrome and Edge load build/chromium-dev, a folder of symlinks to the sources, so reloading the extension in the browser picks up your changes. Firefox runs through web-ext with a fresh profile that is deleted when you close it with Ctrl-C, and reloads the add-on when make build/firefox updates it.
| Variable | Purpose |
|---|---|
DEFAULT_URL="https://example.com" |
Opening page |
CHROME_BIN, EDGE_BIN, FIREFOX_BIN |
Browser executable to launch (found automatically when unset) |
APPS_DIR |
macOS folder searched for the browser apps (default /Applications, e.g. APPS_DIR=~/Applications) |
BROWSER_ARGS="..." |
Extra flags passed to the browser |
Note
run/chromeandrun/edgealso run throughweb-ext(--target=chromium), which loads the extension with the DevTools protocol: Google Chrome ignores the--load-extensionflag since version 137. Any Chrome works: Google Chrome, Chrome for Testing, or Chromium.- On macOS, Firefox Developer Edition is preferred over Firefox.
web-extruns throughnpx, so it needs no global install. - Unlike Chrome, Edge does not run in development mode
To release a new version:
make release/check # 1. Check if commits exist since last tag
make bump/patch # 2. Bump version (or bump/minor, bump/major)
git add -A && git commit -m "Bump version to X.Y.Z" # 3. Commit changes
make release # 4. Push commits and tag (triggers CI/CD)Available commands:
make release/check # Check if a new release is needed
make bump/patch # Bump patch version (1.0.0 -> 1.0.1)
make bump/minor # Bump minor version (1.0.0 -> 1.1.0)
make bump/major # Bump major version (1.0.0 -> 2.0.0)
make tag/apply # Create local tag from manifest version
make release # Push commits and tag to origin (alias: tag/push)
make tag/delete # Delete the tag for the current versionVersion is stored in manifest.json and package.json (both are kept in sync by make bump/*).
The project has an automated unit-test suite (Vitest) covering the model, controller, and the BibTeX, DOI, and validation utilities:
make test # Run the unit tests once
make test/watch # Run the unit tests in watch modeTests live in tests/unit/. Dependencies are installed automatically on first run (npm ci).
The Firefox package is also checked with Mozilla's web-ext lint (run through npx, needs network); CI runs it next to the unit tests:
make test/lint # Build the Firefox addon and lint it (fails on errors)The unit tests mock every network request, so they cannot notice when dblp itself changes. A small live suite in tests/live/ runs the real search and BibTeX download against dblp.org (2 requests, spaced by the extension's rate limiter), and checks that the extension can parse the results and process the BibTeX entry:
make test/live # Run the live tests against the dblp API (needs network)The dblp Live Check workflow runs it every Monday and can be started by hand from the Actions tab. It is not part of make test or of the release workflows, so a dblp outage never blocks CI.
Manual testing in the browser is still recommended for UI changes:
- Run
make run/chrome(or firefox/safari/edge) - Test the modified functionality in the browser
- Check the browser console for errors (pop-up and background service worker)
Popup console: Right-click extension icon → Inspect popup
Background service worker:
- Chrome:
chrome://extensions→ Find extension → "Service worker" link - Firefox:
about:debugging→ This Firefox → Inspect
Storage inspection: In console, run browser.storage.local.get(null, console.log)
This project is licensed under the MIT license, see the LICENSE file.
Developed by Fabio Calefato (@bateman).


