☁️ Sync your bookmarks privately across browsers and devices
  • JavaScript 41.9%
  • TypeScript 36.8%
  • Vue 19.6%
  • Swift 1.2%
  • Ruby 0.2%
  • Other 0.2%
Find a file
Marcel Klehr 4e3dc50ed9 perf: Optimize yieldToEventLoop calls to reduce unnecessary wait times
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-04-24 10:43:51 +02:00
.github Merge pull request #2218 from floccusaddon/test/problematic-seeds 2026-03-28 19:24:35 +01:00
_locales Translate _locales/en/messages.json in es_ES 2026-04-04 13:47:24 +00:00
android v5.9.1 2026-04-10 14:01:57 +02:00
doc Docs: Fix typo 2022-04-22 23:08:29 +09:00
fastlane/metadata/android/en-US Dropbox Integration 2026-02-27 11:06:08 +01:00
html fix: Remove offscreen madness as it doesn't work 2025-12-20 10:51:31 +01:00
icons fix: make builds reproducible again 2024-08-19 09:44:48 +02:00
img Update promo images 2021-08-06 12:53:34 +02:00
ios [native] feat(notifications): Send 'sync in progress' and 'sync complete' notifications 2025-08-16 17:12:50 +02:00
lib First pass migrating to manifest v3 2023-05-30 15:03:34 +02:00
src perf: Optimize yieldToEventLoop calls to reduce unnecessary wait times 2026-04-24 10:43:51 +02:00
test Dropbox Integration 2026-02-27 11:06:08 +01:00
.all-contributorsrc update .all-contributorsrc [skip ci] 2026-04-04 13:59:51 +00:00
.eslintrc.json Eslint: Remove webextension env 2021-11-11 15:42:20 +01:00
.gitignore Add optional telemetry 2024-05-09 12:01:33 +02:00
.prettierrc New UI using Vue.js 2020-04-29 16:59:11 +02:00
AGENTS.md chore: Add AGENTS.md 2026-04-10 11:45:03 +02:00
capacitor.config.json [native] fix(status bar): Try to fix status bar 2025-08-06 11:02:50 +02:00
CHANGELOG.md v5.9.1 2026-04-10 14:01:57 +02:00
CONSIDERATIONS.md Update README for 3.0.0 2018-08-22 20:42:24 +02:00
doiuse-report.baseline.txt fix: Fix doiuse baseline 2026-01-19 17:18:32 +01:00
dropbox-api.credentials.json fix(ci): Put marcelklehr's app credentials and add dropbox to stringifyAccountData 2026-02-27 11:17:13 +01:00
google-api.credentials.json [ios] Add oauth credentials for Google Drive 2022-08-04 14:21:48 +02:00
gulpfile.js pref(build): Improve build time 2026-03-25 18:19:54 +01:00
LICENSE.txt Add License 2016-06-05 22:06:06 +02:00
manifest-firefox-override.sh Reset files that caused sync artifacts 2025-01-31 02:50:12 -08:00
manifest.chrome.json v5.9.1 2026-04-10 14:01:57 +02:00
manifest.firefox.json v5.9.1 2026-04-10 14:01:57 +02:00
manifest.json v5.4.4 2025-02-05 12:47:32 +01:00
package-lock.json fix(xml-parser): Use latest lib version and set limits to Infinity 2026-04-10 13:18:42 +02:00
package.json v5.9.1 2026-04-10 14:01:57 +02:00
PRIVACY_POLICY.md v3.5.2 2019-12-10 19:23:59 +01:00
README.md chore(README): Retire gitter chat room and point to new matrix room 2026-04-11 17:59:45 +02:00
supportedBrowsers.js chore(build): Update browserslist config and supportedBrowsers regex 2025-12-14 13:18:13 +01:00
transifex.yml Fix transifex.yml 2022-05-06 14:16:18 +02:00
tsconfig.json fix: Do not typecheck dependencies 2026-03-25 18:28:42 +01:00
webpack.common.js pref(build): Improve build time 2026-03-25 18:19:54 +01:00
webpack.dev.js chore(build): Add guard against native build containing reference to browser-api 2025-12-14 11:51:33 +01:00
webpack.prod.js pref(build): Improve build time 2026-03-25 18:19:54 +01:00

Floccus

Sync your bookmarks privately across browsers and devices

Tests

  • 🔖 Syncs your real, native browser bookmarks directly
  • ☸ Sync via Nextcloud Bookmarks, Linkwarden, KaraKeep, Google Drive, Dropbox, any Git server (like GitHub, Gitlab, Gitea, etc.) or any WebDAV-compatible service
  • ⚛ Use any browser that supports Web extensions (e.g. Firefox, Chrome, Edge, Opera, Brave, Vivaldi, ...; Safari not yet)
  • 📲 Install the floccus Android/iOS app to access your bookmarks on your phone (Most mobile browsers do not support floccus, sadly)
  • 💼 Create as many sync profiles as you need
  • 🚚 Control sync strategy (i.e. uni- or bidirectional), sync interval and 📂 synced folder
  • 📦 Easily export your configuration

Download now

This is the SHA-256 fingerprint of the certificate used to sign the floccus APKs:

ffed2778ff07371e6367b6dcf5d7c1327c57ff7158b8444029182a9aa2dd7085

If you'd like to support the creation and maintenance of this software, please consider donating. :)

Open Collective

🎬 Getting started

If you don't know how to start with Floccus, read these guides.

If you need help, talk to us via matrix (#floccus:matrix.org), in the official Nextcloud Bookmarks talk channel or on r/floccus on reddit 👋

Troubleshooting

If you need help sorting out problems, try the gitter chat room: https://gitter.im/marcelklehr/floccus

Considerations

Is this a good idea? I think so. If you'd like to know more, check out the considerations file

What's with the name?

Cirrus floccus is a type of cloud, that can sync your browser data looks very nice.

Contributors

This project exists thanks to all the people who contribute.

Bernd Wechner
Bernd Wechner

🐛 🤔 ⚠️
jlbprof
jlbprof

💻 🐛 ⚠️
TeutonJon78
TeutonJon78

🐛 🤔
Scott P.
Scott P.

🐛 🤔
Lantizia
Lantizia

🐛 🤔
TCB13
TCB13

💻 🤔 🔌 🌍
gohrner
gohrner

🐛
Tank-Missile
Tank-Missile

🐛
Torsten Kurbad
Torsten Kurbad

🐛
gerroon
gerroon

🐛
Matija Nalis
Matija Nalis

🤔 💬 🐛
Marcel Klehr
Marcel Klehr

💬 💻 🖋 🎨 📖 🚇 🚧 📆
binsee
binsee

💻
Marc Shapiro
Marc Shapiro

💻
Marllus Lustosa
Marllus Lustosa

💻
Izzy
Izzy

🐛 🤔 🚇
sunjam
sunjam

🤔 ⚠️
Danny Siminiuk
Danny Siminiuk

⚠️ 🤔
Seirade
Seirade

🤔 🐛
pinpontitit
pinpontitit

🤔 🐛 💻
Motte
Motte

💻 🐛
macrogreg
macrogreg

💻
Andy Balaam
Andy Balaam

💻 🐛
Balthanon
Balthanon

🤔 🐛
aaryanvangari
aaryanvangari

💻 🤔

This project follows the all-contributors specification.

Contribute

All contributions, code, feedback and strategic advice, are welcome. If you have a question you can open an issue on the repository, talk to us on gitter, matrix (#marcelklehr_floccus:gitter.im), in the official Nextcloud Bookmarks talk channel or on r/floccus on reddit. I'm also always happy for people helping me test new features -- see the issues for announcements of beta versions.

Translating

Translations can now be provided over at transifex.

Development

Setting up a dev environment

For building the android app you'll need Android Studio

  • Open the android/ folder in Android studio and build the App like any other Android app.
  • npm run build and npm run watch will push changes to android/ as necessary.

Building

  • npm run build

Run the following to automatically compile changes as you make them:

  • npm run watch

Releasing

  • npm run build-release

Windows-specific considerations

Follow the above general guidance on setting up a dev environment.
There are Windows-specific versions of some npm scripts:

  • build: npm run build-win
  • build-release: npm run build-release-win
  • watch: watch-win

When building for the first time you may get an error about gulp not being found.
You can install gulp globally on your system by executing npm install -g gulp from your repo root. It is recommended that you do this proactively after executing npm install in the repo root for the first time.

Running the browser extension and corresponding tests locally

  • Build the browser extension:
    npm run build-release
    (npm run build-release-win if you use Windows)

  • After a successful build, the extension package will be found in:
    RepoRoot/builds/

  • The following steps use Firefox as an example; other browsers work similarly.
    The Firefox extension package is a file with an .xpi-extension. It is a simple archive. To modify it, you can rename it to .zip, make the changes, and then rename it back to .xpi. Many archive-related tools know this and allow you to work with the .xpi-file directly (e.g. Total Commander).

  • Enable the extension package for local testing:
    By default, tests are not included into the release archive. To run tests in your local browser, copy the file
    RepoRoot/dist/js/test.js
    into the release package, so that it is located at
    FloccusPackage.xpi/dist/js/test.js

  • Open Firefox using a dedicated test-profile:
    If you use your main profile for testing, the test scripts will likely destroy your existing bookmarks and open tabs!
    To interact with profiles, go to this address:
    about:profiles

  • Load the extension:
    In the a dedicated Firefox profile window, go to
    about:debugging
    Select "This Firefox", and then under "Temporary Extensions", select "Load Temporary Add-on...". Then select the .xpi-file you prepared earlier.
    (Remember to unload the extension if you need to modify/rebuild the extension package.)

  • The extension is now loaded. You can access it via the browser's extensions menu.

  • Run tests:
    After loading the extension, click on "Manifest URL". It will open a new tab with the URL moz-extension://SomeGuid/manifest.json Modify the URL to read
    moz-extension://SomeGuid/dist/html/test.html
    , keeping the same GUID and press enter. The test run should start automatically.

  • Debug or pause tests:
    Press F12 to open developer tools.
    On the "Debugger" tab, you can pause the execution, set breakpoints and step through the code.

Happy developing and thank you for your contributions!

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

(c) Marcel Klehr MPL-2.0 (see LICENSE.txt)