| name | browser-history |
| version | 1.0.0 |
| description | Query browser history across Chrome, Edge, and Firefox. Search by term, find visits around a time, list recent visits, or filter by domain. Cross-platform (Windows, macOS, Linux), multi-profile aware, read-only. |
| metadata | {"category":"productivity","requires":{"bins":["python3"]},"cliHelp":"python browser_history.py --help"} |
browser-history
Unified read-only CLI for querying local browser history from Chrome, Edge, and Firefox. Works across Windows, macOS, and Linux. Automatically detects installed browsers and enumerates profiles.
When to use this skill
Use browser-history when:
- The user references a site they visited ("the article I read yesterday", "that Substack post")
- A meeting transcript mentions a URL and you need to verify/find it
- You need to correlate what the user was researching around a specific time (e.g., during a meeting, before/after a decision)
- Context-gathering before drafting a proposal, email, or report that references something the user has researched
This skill is especially powerful when combined with meeting transcripts: if the user says in Fathom "I was looking at their homepage during minute 50", invoke browser-history around with the meeting start time + 50 minutes.
Usage
All invocations run the Python script directly:
python ~/.claude/skills/browser-history/browser_history.py <command> [args]
python "$env:USERPROFILE/.claude/skills/browser-history/browser_history.py" <command> [args]
search - find visits matching a term
python browser_history.py search "hidden forces"
python browser_history.py search "hidden forces" --days 7 --browser firefox --json
around - visits near a specific time
python browser_history.py around "2026-04-16 18:00" --mins 10
python browser_history.py around "2026-04-16 15:00" --mins 60 --browser all
recent - most recent N visits
python browser_history.py recent 50
python browser_history.py recent --browser edge
domain - all visits to a domain
python browser_history.py domain hiddenforces.io --days 30
since - visits since a time
python browser_history.py since "2026-04-15 00:00"
profiles - list detected browsers and profiles
python browser_history.py profiles
Flags
| Flag | Applies to | Default | Description |
|---|
--browser | all commands | all | chrome, edge, firefox, or all |
--limit | all query commands | 200 (search/domain/since), 500 (around), 30 (recent) | Maximum rows returned |
--json | all query commands | off | Output as JSON instead of human format |
--days N | search, domain | - | Restrict to last N days |
--mins N | around | 10 | Window size in minutes before/after anchor time |
Output format
Default (human-readable):
2026-04-16 17:42 [chr] Hidden Forces Podcast - Demetri Kofinas
https://hiddenforces.io/episodes/
--json emits an array of {browser, profile, visited_at, visit_count, title, url}.
How it works
Browser history databases are SQLite files:
- Chrome:
<UserData>/<Profile>/History - schema: urls(id, url, title, visit_count, last_visit_time) where last_visit_time is microseconds since 1601-01-01 UTC (WebKit epoch).
- Edge: same schema as Chrome (Edge is Chromium-based).
- Firefox:
<Profile>/places.sqlite - schema: moz_places + moz_historyvisits, time in microseconds since 1970-01-01 UTC (PRTime).
The script copies the target DB to a temporary directory before opening it read-only, so it works even while the browser is running (SQLite locks would otherwise prevent access).
Paths consulted
Windows
- Chrome:
%LOCALAPPDATA%\Google\Chrome\User Data\<Profile>\History
- Edge:
%LOCALAPPDATA%\Microsoft\Edge\User Data\<Profile>\History
- Firefox:
%APPDATA%\Mozilla\Firefox\Profiles\<profile>\places.sqlite
macOS
- Chrome:
~/Library/Application Support/Google/Chrome/<Profile>/History
- Edge:
~/Library/Application Support/Microsoft Edge/<Profile>/History
- Firefox:
~/Library/Application Support/Firefox/Profiles/<profile>/places.sqlite
Linux
- Chrome:
~/.config/google-chrome/<Profile>/History
- Edge:
~/.config/microsoft-edge/<Profile>/History
- Firefox:
~/.mozilla/firefox/<profile>/places.sqlite
Chrome/Edge profiles discovered: Default, Profile 1, Profile 2, etc.
Firefox profiles: all subdirectories of the Profiles root containing places.sqlite.
Privacy & safety
- Read-only. Opens DBs via
sqlite3.connect("file:...?mode=ro", uri=True).
- Never modifies the original files - copies to
tempfile.TemporaryDirectory(), which cleans up automatically.
- No network calls. No telemetry. Results stay on the user's machine.
- Does not access passwords, cookies, autofill, or any file other than the history DB.