English | 简体中文
MarkSync (formerly Bookmark Sync) is a browser bookmark manager and bookmark sync extension for Chrome, Edge, and Firefox. It supports GitHub Gist bookmark sync, bookmark tree view, drag-and-drop sorting, duplicate bookmark detection, bookmark backup, dark mode, left-icon navigation, and side panel bookmark management.
MarkSync bookmark sync bookmark manager browser bookmark manager chrome extension edge extension firefox extension github gist sync bookmark backup bookmark tree side panel dark mode bookmark duplicate bookmark finder cross-browser bookmark sync 书签同步 书签管理 浏览器书签管理 GitHub Gist 同步 书签备份 深色模式书签 侧边栏插件
- Tree view for bookmarks with virtual scrolling for large datasets
- Drag-and-drop sorting and moving for bookmarks and folders
- Duplicate URL detection with confirmation dialog
- Three sync modes: merge sync, pull import, and push overwrite
- Two-way GitHub Gist sync with automatic debounced upload and manual sync
- Dark mode with light / dark / system preference
- Left icon navigation rail: Library, Top 10, Settings
- Confirmation for destructive operations
- Search and filtering
- Right-click context menu
- Support for Chrome, Firefox, and Edge
- WXT for cross-browser extension development
- React 18 + TypeScript
react-arboristfor virtualized tree rendering- Tailwind CSS
- GitHub Gist API
# Install dependencies
npm install
# Chrome development
npm run dev
# Firefox development
npm run dev:firefoxLoad .output/chrome-mv3 or .output/firefox-mv2 in your browser.
# Chrome
npm run build
# Firefox
npm run build:firefox
# Zip packages
npm run zip
npm run zip:firefox- Open the MarkSync side panel from the browser toolbar.
- Go to Settings and paste a GitHub Personal Access Token with the
gistscope. - Click
Merge Syncto synchronize bookmark data to GitHub Gist, or usePull Import/Push Overwriteto control sync direction.
entrypoints/
background.ts # Service Worker for messaging and sync
sidepanel/ # Side panel UI
App.tsx # Main app
components/ # UI components
lib/
types.ts # Type definitions
gist-client.ts # GitHub Gist API wrapper
bookmark-adapter.ts # Browser bookmarks API adapter
sync-engine.ts # Two-way sync engine
dedup.ts # Duplicate detection logic
- Chrome Web Store: run
npm run zipand submit.output/chrome-mv3.zip - Firefox Add-ons: run
npm run zip:firefoxand submit.output/firefox-mv2.zip - Edge Add-ons: submit the Chrome build to Microsoft Partner Center
- Local development: load the unpacked extension from
.output/chrome-mv3or.output/firefox-mv2
The GitHub token is stored in browser.storage.local. It is only accessed by the background service worker and is not exposed to content scripts.