A Python script to import Arc browser history into Firefox's SQLite database, making your Arc browsing history available in Firefox's address bar autocomplete and history view.
- ✅ Imports Arc browser history to Firefox's
places.sqlitedatabase - ✅ Preserves visit counts and timestamps
- ✅ Enables address bar autocomplete for imported URLs
- ✅ Handles duplicate URLs gracefully
- ✅ Calculates proper frecency scores for Firefox's ranking algorithm
- ✅ Supports dry-run mode for testing
- ✅ Comprehensive error handling and validation
- Python 3.6 or higher
- Arc browser's
StorableArchiveItems.jsonfile - Firefox profile's
places.sqlitefile (Firefox must be closed during import)
- Clone or download this repository
- No additional dependencies required (uses only Python standard library)
python exporthistory.py <arc_json_path> <firefox_places_path>Import from default Arc location to Firefox:
python exporthistory.py ~/Library/Application\ Support/Arc/StorableArchiveItems.json \
~/Library/Application\ Support/Firefox/Profiles/xyz123.default/places.sqliteImport from custom locations:
python exporthistory.py /path/to/arc/data.json /path/to/firefox/places.sqliteDry run (test without importing):
python exporthistory.py --dry-run ~/Library/Application\ Support/Arc/StorableArchiveItems.json \
~/Library/Application\ Support/Firefox/Profiles/xyz123.default/places.sqlitemacOS:
~/Library/Application Support/Arc/StorableArchiveItems.json
Windows:
%APPDATA%\Arc\User Data\Default\StorableArchiveItems.json
macOS:
~/Library/Application Support/Firefox/Profiles/<profile-id>.default/places.sqlite
Windows:
%APPDATA%\Mozilla\Firefox\Profiles\<profile-id>.default\places.sqlite
Linux:
~/.mozilla/firefox/<profile-id>.default/places.sqlite
To find your Firefox profile ID:
- Open Firefox
- Go to
about:profilesin the address bar - Look for the "Root Directory" path of your default profile
- Parses Arc Data: Reads the
StorableArchiveItems.jsonfile and extracts URL, title, and timestamp information - Validates Files: Ensures both input and output files exist and are accessible
- Calculates Frecency: Computes Firefox's frecency score based on visit count and recency
- Updates Database: Inserts or updates records in Firefox's
moz_placesandmoz_historyvisitstables - Handles Duplicates: Avoids creating duplicate visit records
The script works with Firefox's Places database schema:
moz_places: Stores URL information, titles, visit counts, and frecency scoresmoz_historyvisits: Stores individual visit records with timestamps
Key fields populated:
frecency: Score used by Firefox for autocomplete rankingtyped: Indicates URL should appear in typed URL suggestionshidden: Set to 0 to ensure URLs appear in autocompleteurl_hash: Performance optimization hash
"Firefox places.sqlite file not found"
- Make sure Firefox is closed
- Verify the profile path is correct
- Check that the file is named
places.sqlite
"Arc JSON file not found"
- Verify the path to your Arc data file
- Check file permissions
"SQLite error"
- Ensure Firefox is completely closed
- Check if the database file is corrupted
- Try backing up and restoring your Firefox profile
"Import completed but no autocomplete"
- Restart Firefox completely
- Clear Firefox's autocomplete cache (about:config → browser.urlbar.autocomplete.enabled)
- Wait a few minutes for Firefox to rebuild its indexes
If you encounter issues:
- Run with
--dry-runfirst to validate your data - Check the error messages for specific issues
- Ensure Firefox is completely closed before running
- Try with a fresh Firefox profile to test
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
Pavel Galaton
This tool modifies Firefox's internal database. Use at your own risk and always backup your Firefox profile before running the script.