Cross-platform desktop application for merging and deduplicating browser bookmarks with intelligent URL canonicalization and fuzzy title matching.
- Multi-Format Support: Import Netscape HTML and Chrome/Chromium JSON bookmark files
- Intelligent Deduplication: URL canonicalization removes tracking parameters and normalizes URLs
- Fuzzy Matching: Optional fuzzy title matching within same domain using RapidFuzz
- Cross-Platform: Runs on Windows, macOS, and Linux
- Dual Interface: Modern PyQt6 GUI with drag & drop, plus full-featured CLI
- Multi-Language: i18n support for 11 languages
- Privacy-First: Fully offline, no telemetry, no network calls
# 1) Install
pip install -r requirements.txt
# 2) Run GUI
python -m bookmark_checker
# 3) Or use CLI
python -m bookmark_checker --input bookmarks.html --out merged.htmlSee docs/installation.md for platform-specific steps.
Prerequisites: Python 3.11 or higher
# Clone the repository
git clone https://github.com/VoxHash/BrowserBookmarkChecker.git
cd BrowserBookmarkChecker
# Install dependencies
pip install -r requirements.txt
# Optional: Install in development mode
pip install -e ".[dev]"Launch the graphical interface:
python -m bookmark_checkerWorkflow:
- Click Import Files or drag & drop bookmark files
- Adjust Similarity slider (0-100, default 85)
- Click Find & Merge to deduplicate
- Review results in the table
- Click Export Merged to save HTML and CSV reports
python -m bookmark_checker \
--input file1.html file2.json \
--out merged_bookmarks.html \
--similarity 85Options:
--input,-i: Input bookmark files (HTML or JSON), multiple files allowed--out,-o: Output HTML file path (default:merged_bookmarks.html)--similarity,-s: Similarity threshold for fuzzy matching (0-100, default: 85)--no-fuzzy: Disable fuzzy title matching
See docs/usage.md and docs/cli.md for detailed documentation.
| Setting | Description | Default |
|---|---|---|
| Similarity Threshold | Minimum similarity score (0-100) for fuzzy matching | 85 |
| Fuzzy Matching | Enable fuzzy title matching within same domain | Enabled |
| Export Format | Output format (HTML, CSV) | HTML + CSV |
Similarity Threshold Guide:
- 85 (default): Balanced between strict and lenient
- 100: Only exact title matches
- 0-50: Very lenient (may merge unrelated bookmarks)
See docs/configuration.md for full configuration reference.
- Basic Deduplication — Merge Chrome and Firefox bookmarks
- Programmatic Usage — Use the Python API
- More examples: docs/examples/
Browser-Bookmark Checker follows a modular architecture:
Input Files → Parsers → Normalization → Deduplication → Merge → Exporters → Output Files
Key Components:
- Parsers: Parse Netscape HTML and Chrome JSON formats
- URL Canonicalization: Remove tracking parameters, normalize URLs
- Deduplication: Canonical URL matching + optional fuzzy title matching
- Merging: Select representatives and organize by domain
- Exporters: Generate HTML and CSV outputs
See docs/architecture.md for detailed architecture documentation.
Planned milestones live in ROADMAP.md. For changes, see CHANGELOG.md.
Upcoming:
- Firefox
.jsonlz4format support - Safari
.plistformat support - Performance optimizations for large datasets
- Enhanced error messages and user experience
We welcome PRs! Please read CONTRIBUTING.md and follow the PR template.
Quick Start:
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint and format
ruff check bookmark_checker tests
black bookmark_checker testsPlease report vulnerabilities via SECURITY.md.
Privacy: This tool processes bookmark files locally and does not send data over the network or collect telemetry.
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later). See LICENSE and NOTICE for details.
The GUI depends on PyQt6 (GPL-3.0-only on PyPI, or Riverbank commercial). PyInstaller release binaries embed PyQt6; redistributors of those combined binaries must follow GPLv3 terms (including Corresponding Source). Third-party notices are in NOTICE.
- Documentation: docs/
- Issues: GitHub Issues
- Email: contact@voxhash.dev
- FAQ: docs/faq.md
See SUPPORT.md for more support options.
- BeautifulSoup4 for HTML parsing
- RapidFuzz for fuzzy string matching
- PyQt6 for the GUI framework
- VoxHash Technologies for development and maintenance
Version: 1.1.2
Maintained by: VoxHash Technologies