Firefox - Chrome - Edge - Vivaldi - Safari (build from source)
Browser extension for users of the bibliographic reference manager JabRef. It automatically identifies and extracts bibliographic information on websites and sends them to JabRef with one click.
When you find an interesting article through Google Scholar, the arXiv or journal websites, this browser extension allows you to add those references to JabRef. Even links to accompanying PDFs are sent to JabRef, where those documents can easily be downloaded, renamed and placed in the correct folder. A wide range of publisher sites, library catalogs and databases are supported.
Please post any issues or suggestions here on GitHub.
Normally, you simply install the extension from the browser store and are ready to go.
Firefox - Chrome - Edge - Vivaldi - Safari (build from source)
Sometimes, a manual installation is necessary (e.g. if you use the portable version of JabRef). In this case, please follow the steps described in the user manual.
If Chrome reports Specified native messaging host not found., its registered JabRef host manifest may refer to an old location for jabrefHost.py. Reinstall the manifest bundled with the currently installed JabRef application:
sudo cp "/Applications/JabRef.app/Contents/Resources/native-messaging-host/chromium/org.jabref.jabref.json" \
"/Library/Google/Chrome/NativeMessagingHosts/org.jabref.jabref.json"Quit Chrome completely and reopen it afterwards. This assumes JabRef is installed in /Applications; adjust the first path if it is installed elsewhere.
Safari builds are available for local development via WXT:
pnpm dev:safaribuilds the Safari development targetpnpm safari:xcodebuilds the Safari target and generates the Xcode project indist/safari/throughwxt-module-safari-xcode
For the Apple packaging step:
pnpm safari:build-appbuilds the Safari target, generates the Xcode project, and producesdist/safari/JabRef Browser Extension.apppnpm sign:safari-local IDENTITY="Developer ID Application: Your Name (TEAMID)"signs the generated apppnpm notarize:safari-local PROFILE="profile-name"notarizes and zips the signed app
WXT builds the extension bundle, and wxt-module-safari-xcode converts that bundle into the Xcode project and macOS app structure Apple expects.
To test the Safari build locally:
- Run
pnpm safari:build-app - Open
dist/safari/JabRef Browser Extension.xcodeproj - Run the
JabRef Browser Extensionscheme in Xcode - Enable the extension in Safari Settings
The generated macOS app bundle is placed at dist/safari/JabRef Browser Extension.app.
Safari CI is split into two parts:
Testsworkflow:safari-buildruns onmacos-latest- it executes
pnpm safari:build-app - this validates the WXT build, Xcode packaging, and Safari app bundle path on pull requests and on
main
releaseworkflow:packagebuilds Safari, uploads the unsigned Safari app artifact, and on release pushes also signs and notarizes a direct-distribution zippublish (safari)rebuilds the Xcode project onmacos-26and publishes it to App Store Connect withrxliuli/safari-webext-publish-action
Safari Signing Testworkflow:- manual
workflow_dispatchworkflow with arun_safari_signing_testcheckbox - it builds the Safari project and runs the App Store signing/publish step without touching the release workflow
- manual
The Safari publish job expects these GitHub Actions secrets:
APPLE_TEAM_ID: Apple Developer team IDAPPLE_CERTIFICATE_BASE64: base64-encoded.p12certificate containing the App Store signing identitiesAPPLE_CERTIFICATE_PASSWORD: password for that.p12SAFARI_APP_SIGNING_IDENTITY: full app signing identity exactly as shown bysecurity find-identity -v -p basic, for example3rd Party Mac Developer Application: JabRef e.V. (TEAMID)SAFARI_INSTALLER_SIGNING_IDENTITY: full installer signing identity exactly as shown bysecurity find-identity -v -p basic, for example3rd Party Mac Developer Installer: JabRef e.V. (TEAMID)APPLE_MACOS_PROVISIONING_PROFILE_BASE64: base64-encoded macOS App Store provisioning profile for the app bundle IDAPPLE_MACOS_EXTENSION_PROVISIONING_PROFILE_BASE64: base64-encoded macOS App Store provisioning profile for the extension bundle IDAPPLE_API_KEY: base64-encoded App Store Connect API key (.p8)APPLE_API_KEY_ID: App Store Connect API key IDAPPLE_API_ISSUER: App Store Connect API issuer ID
The direct-distribution Safari artifact additionally expects:
APPLE_DEVELOPER_ID_CERTIFICATE_BASE64: base64-encoded.p12certificate containing the Developer ID Application identityAPPLE_DEVELOPER_ID_CERTIFICATE_PASSWORD: password for that.p12SAFARI_DEVELOPER_ID_SIGNING_IDENTITY: full Developer ID signing identity exactly as shown bysecurity find-identity -v -p basic, for exampleDeveloper ID Application: JabRef e.V. (TEAMID)
The newer Apple Developer portal may label these certificates as Apple Distribution, Mac App Distribution, or Mac Installer Distribution, but the secret values used by codesign and productbuild must match the installed Keychain identity strings exactly.
The local pnpm sign:safari-local and pnpm notarize:safari-local commands still exist for manual Developer ID packaging outside the App Store flow.
After the installation, you should be able to import bibliographic references into JabRef directly from your browser. Just visit a publisher site or some other website containing bibliographic information (for example, the arXiv) and click the JabRef symbol in the Firefox search bar (or press Alt+Shift+J). Once the JabRef browser extension has extracted the references and downloaded the associated PDF's, the import window of JabRef opens.
You might want to configure JabRef so that new entries are always imported in an already opened instance of JabRef. For this, activate "Remote operation" under the Network tab in the JabRef Preferences.
How JabRef and this extension interact is specified in JabRef's requirements docs:
- Browser-Extension Fulltext Protocol (
req~bxf.*) — JabRef fetches full-text PDFs through the browser. The provider half lives inbridge/, a small native-messaging companion process. - MathSciNet sync (
req~mathscinet.sync.*) — JabRef opens or focuses a MathSciNet browser tab for the current entry, via the same bridge.
Internally, this browser extension uses the magic of Zotero's site translators. Thus most of the credit has to go to the Zotero development team and to the many authors of the site translators collection. Note that this browser extension does not make any changes to the Zotero database and thus both plug-ins coexist happily with each other.