8.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Browser History to Timesketch Converter
Converts browser history from the three major browser engines to Timesketch-compatible CSV format.
Supported Browser Engines
- Gecko - Firefox and derivatives (Waterfox, LibreWolf, etc.)
 - Chromium - All Chromium-based browsers (Chrome, Edge, Brave, Opera, Vivaldi, Arc, etc.)
 - WebKit - Safari
 
Why Only Three Types?
All Chromium-based browsers (Chrome, Edge, Brave, Opera, Vivaldi, etc.) use identical database schemas. There's no need to handle them differently - they all use the same History database format with the same table structures and timestamp formats. The only difference is the file location, which you provide as input.
Similarly, all Gecko-based browsers (Firefox forks) use the same places.sqlite format.
Usage
python browser2timesketch.py -b <browser_engine> -i <database_path> -o <output.csv>
Arguments
-b, --browser: Browser engine typefirefoxorgecko- For Firefox and Firefox-based browserschromium- For all Chromium-based browserssafariorwebkit- For Safari
-i, --input: Path to browser history database file-o, --output: Output CSV file path (optional, default: browser_history_timesketch.csv)--browser-name: Custom browser name for the data_type field (optional)
Database File Locations
How to Find Your Profile Path
Gecko / Firefox
- Open Firefox
 - Type 
about:supportin the address bar and press Enter - Look for Profile Folder or Profile Directory
 - Click "Open Folder" / "Open Directory" button, or note the path shown
 - The 
places.sqlitefile is in this directory 
Alternative: Type about:profiles to see all profiles and their locations.
Chromium (Chrome/Edge/Brave/Opera/Vivaldi/etc.)
- Open your Chromium-based browser
 - Type 
chrome://version/in the address bar and press Enter - Look for Profile Path - this shows the full path to your profile directory
 - The 
Historyfile (no extension) is in this directory 
Note: For browsers based on Chromium, use the same URL even if it's not Chrome:
- Edge: 
edge://version/ - Brave: 
brave://version/ - Opera: 
opera://about/ - Vivaldi: 
vivaldi://about/ 
WebKit / Safari
Safari's history database is always at the same location on macOS:
~/Library/Safari/History.db
To view in Finder:
- Open Finder
 - Press 
Cmd + Shift + G(Go to Folder) - Type 
~/Library/Safari/ - Press Enter
 
Standard Profile Locations
If you prefer to navigate directly to the standard locations:
Gecko / Firefox
Database file: places.sqlite
- Linux: 
~/.mozilla/firefox/<profile>/places.sqlite - macOS: 
~/Library/Application Support/Firefox/Profiles/<profile>/places.sqlite - Windows: 
%APPDATA%\Mozilla\Firefox\Profiles\<profile>\places.sqlite 
Chromium (Chrome/Edge/Brave/Opera/Vivaldi/etc.)
Database file: History (no file extension)
All Chromium browsers use the same database format. Only the location differs:
Google Chrome:
- Linux: 
~/.config/google-chrome/Default/History - macOS: 
~/Library/Application Support/Google/Chrome/Default/History - Windows: 
%LOCALAPPDATA%\Google\Chrome\User Data\Default\History 
Microsoft Edge:
- Linux: 
~/.config/microsoft-edge/Default/History - macOS: 
~/Library/Application Support/Microsoft Edge/Default/History - Windows: 
%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\History 
Brave:
- Linux: 
~/.config/BraveSoftware/Brave-Browser/Default/History - macOS: 
~/Library/Application Support/BraveSoftware/Brave-Browser/Default/History - Windows: 
%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\History 
Opera:
- Linux: 
~/.config/opera/Default/History - macOS: 
~/Library/Application Support/com.operasoftware.Opera/History - Windows: 
%APPDATA%\Opera Software\Opera Stable\History 
Vivaldi:
- Linux: 
~/.config/vivaldi/Default/History - macOS: 
~/Library/Application Support/Vivaldi/Default/History - Windows: 
%LOCALAPPDATA%\Vivaldi\User Data\Default\History 
WebKit / Safari
Database file: History.db
- macOS: 
~/Library/Safari/History.db 
Examples
Firefox (or any Gecko-based browser)
# Linux
python browser2timesketch.py -b firefox -i ~/.mozilla/firefox/xyz123.default/places.sqlite -o firefox_history.csv
# macOS
python browser2timesketch.py -b gecko -i "~/Library/Application Support/Firefox/Profiles/xyz123.default/places.sqlite" -o firefox_history.csv
# Windows
python browser2timesketch.py -b firefox -i "C:\Users\YourUser\AppData\Roaming\Mozilla\Firefox\Profiles\xyz123.default\places.sqlite" -o firefox_history.csv
Chrome (or any Chromium-based browser)
# Linux - Chrome
python browser2timesketch.py -b chromium -i ~/.config/google-chrome/Default/History -o chrome_history.csv
# macOS - Chrome
python browser2timesketch.py -b chromium -i "~/Library/Application Support/Google/Chrome/Default/History" -o chrome_history.csv
# Windows - Chrome
python browser2timesketch.py -b chromium -i "C:\Users\YourUser\AppData\Local\Google\Chrome\User Data\Default\History" -o chrome_history.csv
# Linux - Brave with custom label
python browser2timesketch.py -b chromium --browser-name "Brave" -i ~/.config/BraveSoftware/Brave-Browser/Default/History -o brave_history.csv
# Windows - Edge
python browser2timesketch.py -b chromium -i "C:\Users\YourUser\AppData\Local\Microsoft\Edge\User Data\Default\History" -o edge_history.csv
Safari
# macOS
python browser2timesketch.py -b safari -i ~/Library/Safari/History.db -o safari_history.csv
# Or using the webkit alias
python browser2timesketch.py -b webkit -i ~/Library/Safari/History.db -o safari_history.csv
Output Format
The script generates a CSV file with Timesketch-compatible fields:
| Field | Description | All Browsers | 
|---|---|---|
timestamp | 
Unix timestamp in microseconds | ✓ | 
datetime | 
ISO 8601 formatted datetime | ✓ | 
timestamp_desc | 
Description of timestamp | ✓ | 
message | 
Human-readable event description | ✓ | 
url | 
The visited URL | ✓ | 
title | 
Page title | ✓ | 
data_type | 
Source identifier | ✓ | 
visit_type | 
Type of visit | Gecko, Chromium | 
visit_duration_us | 
Visit duration in microseconds | Chromium only | 
total_visits | 
Total visits to this URL | Chromium only | 
typed_count | 
Times URL was typed | Chromium only | 
Browser Engine Details
Timestamp Formats
Each browser engine uses a different timestamp format:
- Gecko (Firefox): Microseconds since Unix epoch (1970-01-01 00:00:00 UTC)
 - Chromium: Microseconds since Windows epoch (1601-01-01 00:00:00 UTC)
 - WebKit (Safari): Seconds since Cocoa epoch (2001-01-01 00:00:00 UTC)
 
The script automatically converts all timestamps to Unix microseconds for Timesketch.
Database Schemas
- Gecko: Uses 
moz_historyvisitsandmoz_placestables inplaces.sqlite - Chromium: Uses 
visitsandurlstables inHistorydatabase - WebKit: Uses 
history_visitsandhistory_itemstables inHistory.db 
Important Notes
- Close the browser before running the script to avoid database lock errors
 - Copy the database file to a temporary location if you want to avoid potential issues
 - Handle output carefully - the CSV contains your complete browsing history
 - Different browsers may have multiple profiles - make sure you're pointing to the correct profile directory
 - On Windows, use quotes around paths that contain spaces
 
Troubleshooting
Database is locked
- Close the browser completely
 - Copy the database file to a temporary location and run the script on the copy
 
File not found
- Verify the profile directory name (the random string like 
xyz123.default) - Check that the browser has been used and has history
 - On macOS, use tab completion or check the exact path
 
Permission denied
- Run with appropriate permissions
 - On Linux/macOS, check file permissions with 
ls -l - On Windows, run as Administrator if needed
 
Requirements
- Python 3.6 or higher
 - No external dependencies (uses only standard library)
 
Privacy and Security
This tool exports your complete browsing history. The output file contains:
- All visited URLs
 - Page titles
 - Visit timestamps
 - Visit types and patterns
 
Handle the output files appropriately and delete them when no longer needed.