bookmark 0.1.0

Export bookmarks and history from Chrome, Firefox, Safari, and Edge to YAML
bookmark-0.1.0 is not a library.
Visit the last successful build: bookmark-0.1.4

Bookmark Exporter

A cross-platform Rust CLI tool to export browser bookmarks, history, and passwords to structured formats.

Features

  • 🌐 Multi-Browser Support: Chrome, Firefox, Safari, Edge, and more
  • 📊 Comprehensive Data: Export bookmarks, history, and passwords
  • 💾 Multiple Formats: YAML (primary), JSON and CSV support planned
  • 🔍 Smart Scanning: Automatically detect available browsers and profiles
  • 🛡️ Security-Focused: Secure handling of sensitive data
  • 🚀 Cross-Platform: Windows, macOS, and Linux support
  • High Performance: Efficient handling of large browser databases

Quick Start

Installation

cargo build --release

Basic Usage

# Scan and export all browser data
cargo run -- scan --data-type bookmarks --output ./exports

# Export specific browser
cargo run -- export --browser chrome --data-type bookmarks --output chrome-bookmarks.yaml

# List available browsers
cargo run -- list

Commands

scan - Automatically detect and export all browsers

# Export bookmarks from all detected browsers
cargo run -- scan --data-type bookmarks --output ./exports

# Export history from all detected browsers
cargo run -- scan --data-type history --output ./exports

# Export all data types
cargo run -- scan --data-type all --output ./exports

export - Export from specific browser or all browsers

# Export from all browsers
cargo run -- export --browser all --data-type bookmarks --output ./exports

# Export from specific browser
cargo run -- export --browser chrome --data-type bookmarks --output chrome.yaml

# Export to stdout
cargo run -- export --browser firefox --data-type history

list - List available browsers and profiles

# List all browsers
cargo run -- list

# List profiles for specific browser
cargo run -- list --browser chrome

Options

  • --browser: Browser to export from (chrome, firefox, safari, edge, all)
  • --data-type: Type of data to export (bookmarks, history, passwords, all)
  • --output: Output directory or file path (defaults to current directory)
  • --profile-dir: Custom browser data directory

Supported Browsers

Browser Bookmarks History Passwords Status
Chrome 🔄 Basic support
Firefox 🔄 Basic support
Safari 🔄 Manual copy required
Edge 🔄 Basic support
Brave 🔄 🔄 🔄 Planned
Vivaldi 🔄 🔄 🔄 Planned
Opera 🔄 🔄 🔄 Planned

✅ Implemented | 🔄 In Progress | 📋 Planned

Safari Manual Export

On macOS, Safari bookmarks are protected. To export Safari bookmarks:

  1. Open Finder
  2. Press Shift+Command+G
  3. Enter: ~/Library/Safari/
  4. Copy Bookmarks.plist to your Desktop or Downloads
  5. Run: cargo run -- export --browser safari --profile-dir ~/Desktop/Bookmarks.plist --data-type bookmarks --output safari-bookmarks.yaml

Firefox Database Lock

If Firefox is running, close it first or copy the database manually:

# Copy Firefox database and export from copy
cp ~/Library/Application\ Support/Firefox/Profiles/*/places.sqlite ~/Desktop/places.sqlite
cargo run -- export --browser firefox --profile-dir ~/Desktop/places.sqlite --data-type bookmarks --output firefox-bookmarks.yaml

Output Format

The tool exports data in structured YAML format:

- browser: chrome
  profile: Default
  export_date: 2026-02-01T08:04:05.082245Z
  bookmarks:
    - id: "4316"
      title: CRM Analytics | Salesforce
      url: https://ibmsc.lightning.force.com/analytics/dashboard/0FK3h000000dENLGA2
      folder: bookmark_bar/ibm
      date_added: 2026-01-28T01:16:01Z
      children: null
  history:
    urls:
      - url: https://example.com
        title: Example Page
        visit_count: 42
        last_visit: 2026-01-30T15:30:00Z
  passwords: null

Performance

  • Memory Usage: < 512MB for typical browser databases
  • Export Speed: Complete browser export in < 30 seconds
  • Database Size: Handles databases up to 1GB efficiently
  • Concurrent Exports: Multiple browsers processed in parallel (planned)

Security

  • 🔒 Read-Only Access: Never modifies original browser data
  • 🛡️ Secure Handling: No plaintext passwords in logs or temporary files
  • 🔑 Platform Integration: Uses OS keychain APIs for password decryption
  • 🚫 No Telemetry: All data processing is local and private

Requirements

  • Rust 1.70+
  • Operating Systems:
    • macOS 10.15+
    • Windows 10+
    • Linux (Ubuntu 20.04+, Fedora 36+, Debian 11+)

Examples

Export all data from all browsers

cargo run -- scan --data-type all --output ./browser-exports

Export specific data types

# Bookmarks only
cargo run -- scan --data-type bookmarks --output ./bookmarks

# History only
cargo run -- scan --data-type history --output ./history

Export from custom profile directory

cargo run -- export --browser chrome --profile-dir "/custom/path/profile" --data-type bookmarks

Development

Build

cargo build --release

Test

cargo test

Run with debug logging

RUST_LOG=debug cargo run -- scan

Documentation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

License

This project is licensed under the MIT License.

Troubleshooting

Common Issues

  1. "database is locked": Close the target browser before exporting
  2. "Operation not permitted": Grant appropriate permissions (Safari on macOS)
  3. "No browsers found": Check if browsers are installed in standard locations

Getting Help

  • Check the TODO.md for known issues
  • Review the ARCHITECTURE.md for technical details
  • Open an issue for bugs or feature requests

Roadmap

v0.2.0 - Password Support & More Browsers

  • Password export from all browsers
  • Brave and Vivaldi browser support
  • Enhanced security features
  • Performance improvements

v0.3.0 - Advanced Features

  • JSON and CSV export formats
  • Bookmark deduplication
  • Web-based interface
  • CLI progress indicators

v1.0.0 - Production Release

  • Full browser ecosystem support
  • Comprehensive testing suite
  • Production-ready stability
  • Complete documentation