A Python script that exports bookmarks from Arc Browser to HTML format that is compatible with all other major browsers like Chrome, Firefox, Safari, or Edge.
- ✅ Multi-Profile Support: Exports bookmarks from all Arc profiles/containers
- ✅ Complete Space Coverage: Handles both pinned and unpinned spaces
- ✅ Standard Format: Generates Netscape bookmark format compatible with all major browsers
- ✅ Hierarchical Structure: Preserves folder organization from Arc spaces
- ✅ Cross-Platform: Works on macOS and Windows
- ✅ Verbose Logging: Detailed output for troubleshooting
- ✅ Flexible Options: Choose what to export with command-line flags
# Export everything (recommended)
python3 main.py --all -v
# Export with custom filename
python3 main.py --all -o my_bookmarks.html
# Export only pinned spaces (default)
python3 main.py -v- Python 3.7 or higher
- Arc Browser with some bookmarks
- Clone or download this repository
- No additional dependencies required (uses Python standard library only)
python3 main.py [OPTIONS]| Option | Description |
|---|---|
--all |
Export from all containers and include unpinned spaces |
--include-unpinned |
Include unpinned spaces in export |
-o, --output FILE |
Specify output file path |
-v, --verbose |
Enable detailed logging |
-s, --silent |
Silence all output |
--version |
Show version information |
# Export everything with verbose output
python3 main.py --all -v
# Export only pinned spaces to specific file
python3 main.py -o bookmarks_pinned.html -v
# Silent export of everything
python3 main.py --all -s
# Include unpinned spaces only
python3 main.py --include-unpinnedArc Browser stores bookmarks in StorableSidebar.json with the following structure:
StorableSidebar.json
├── sidebar
│ └── containers (multiple profiles)
│ ├── Container 0: (may be empty)
│ └── Container 1: (actual bookmark data)
│ ├── spaces: [mixed list of strings and dicts]
│ └── items: [bookmark items]
└── version: 1
- Locate Arc Data: Finds
StorableSidebar.jsonin Arc's data directory - Parse Containers: Processes all containers with bookmark data
- Extract Spaces: Handles both pinned and unpinned space containers
- Build Hierarchy: Creates folder structure from Arc spaces
- Generate HTML: Converts to standard Netscape bookmark format
Bookmarks
├── Home Space
│ ├── Pinned Bookmarks (24 items)
│ └── Unpinned Bookmarks (4 items)
├── Work Space
├── Research Space
└── Other Spaces...
~/Library/Application Support/Arc/StorableSidebar.json
~\AppData\Local\Packages\TheBrowserCompany.Arc*\LocalCache\Local\Arc\StorableSidebar.json
- Cause: Arc Browser not installed or non-standard installation
- Solution: Ensure Arc is installed and has been run at least once
- Cause: Arc data file exists but contains no bookmarks
- Solution: Add some bookmarks in Arc Browser first
- Cause: Script looking in wrong container
- Solution: Use
--allflag to process all containers
- Cause: Only pinned spaces being exported
- Solution: Use
--allor--include-unpinnedflags
For detailed troubleshooting, run with verbose output:
python3 main.py --all -v12:19 INFO Reading Arc browser data...
12:19 DEBG Found StorableSidebar.json in Arc's data directory
12:19 INFO Parsing Arc browser data...
12:19 INFO Processing container 1...
12:19 INFO Parsing spaces...
12:19 DEBG Found 10 valid spaces
12:19 INFO Converting spaces to bookmark folders...
12:19 DEBG Space 'Work': 25 bookmarks
12:19 DEBG Space 'Personal': 15 bookmarks
12:19 DEBG Total bookmarks in this container: 40
12:19 INFO Converting bookmarks to HTML...
12:19 INFO Export completed successfully!
- Open Chrome
- Go to
chrome://bookmarks/ - Click ⋮ → "Import bookmarks"
- Select the exported HTML file
- Open Firefox
- Press
Ctrl+Shift+B(Bookmarks Manager) - Click "Import and Backup" → "Import Bookmarks from HTML"
- Select the exported HTML file
- Open Safari
- Go to File → "Import From" → "Bookmarks HTML File"
- Select the exported HTML file
- Open Edge
- Click ⋯ → "Favorites" → "Manage favorites"
- Click ⋯ → "Import favorites"
- Choose "Bookmarks HTML file"
ArcDataReader: Handles file location and JSON readingArcDataParser: Parses Arc's JSON structure into bookmark objectsHTMLExporter: Converts bookmarks to HTML formatBookmarkFolder/Bookmark: Data classes for bookmark structure
@dataclass
class Bookmark:
title: str
url: str
@dataclass
class BookmarkFolder:
title: str
children: List[Union[Bookmark, BookmarkFolder]]
@dataclass
class Space:
name: str
container_id: str
is_pinned: boolContributions are welcome! Please feel free to submit issues or pull requests.
If you encounter issues:
- Run with verbose output:
python3 main.py --all -v - Check the troubleshooting section above
- Ensure Arc Browser is properly installed
- Verify you have bookmarks in Arc Browser
For additional help, please create an issue with:
- Your operating system
- Python version
- Complete error message
- Verbose output (if possible)
git clone <repository-url>
cd arc-bookmarks
python3 main.py --version # Verify setup- ✅ Fixed space parsing to handle all pinned/unpinned containers
- ✅ Added null safety for bookmark titles and URLs
- ✅ Improved error handling and logging
- ✅ Added support for multiple containers/profiles
Thank you for using this project! If you find it helpful and would like to support my work, kindly consider buying me a coffee. Your support is greatly appreciated!
And do not forget to give the project a star if you like it! ⭐
This project is licensed under the MIT License.
