browser-history

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.

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:

# macOS / Linux
python ~/.claude/skills/browser-history/browser_history.py <command> [args]

# Windows (PowerShell or Git Bash)
python "$env:USERPROFILE/.claude/skills/browser-history/browser_history.py" <command> [args]

search - find visits matching a term

# Find all visits mentioning "hidden forces"
python browser_history.py search "hidden forces"

# Limit to last 7 days, Firefox only, JSON output
python browser_history.py search "hidden forces" --days 7 --browser firefox --json

around - visits near a specific time

# What did I look at between 17:50 and 18:10 today?
python browser_history.py around "2026-04-16 18:00" --mins 10

# Wider window, all browsers
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

FlagApplies toDefaultDescription
--browserall commandsallchrome, edge, firefox, or all
--limitall query commands200 (search/domain/since), 500 (around), 30 (recent)Maximum rows returned
--jsonall query commandsoffOutput as JSON instead of human format
--days Nsearch, domain-Restrict to last N days
--mins Naround10Window 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.