Browser Transitioning Tool. Migrate data between browsers with encrypted exports.
翻訳待ち
Loading the full README.
Read the full README ↗A universal browser data swap. Export your setup to a portable JSON bundle. Import it anywhere. Chrome to Firefox, Firefox to Chrome, or a fresh install of the same browser. No cloud, no lock-in.
Browsers intentionally make it harder to swap from their ecosystem, and often lack the proper built-in transferring support for third-party browsers built off of the same source (ex. Chromium, Firefox). Portage is a straightforward, open-source tool that reads what it's allowed to read, dumps it into a human-readable *.portage.json file, and rebuilds it on the other side. Because the export is just plain JSON, it bridges the gap between competing browsers or lets you easily migrate to a new machine.
Extensions are locked out of reading local profile files straight from your hard drive, so Portage routes everything through official WebExtension APIs.
| Data | Export | Import |
|---|---|---|
| Bookmarks | ✅ Full tree | ✅ Recreated in a Portage Import folder |
| History | ✅ URLs, titles, timestamps | ✅ Re-added (Firefox keeps full metadata; Chrome limits to URLs) |
| Cookies | ✅ Full export | ✅ Re-injected to keep you logged in |
| Open tabs | ✅ Active & recently closed | ✅ Reopened instantly |
| Reading list | ✅ Exported (Chrome only) | ✅ Chrome: Reading list · Firefox: Bookmarks folder |
| Extensions | ✅ Exported as a text checklist | ℹ️ Cannot auto-install (see below) |
.txt)There is no API for an extension to silently install another extension. To handle this, Portage generates a secondary portage-<browser>-extensions-<date>.txt file. This acts as a manual checklist, complete with direct links to the Chrome Web Store or Firefox Add-ons site. Click through the links to rebuild your lineup, or drop the list into an AI to track down the equivalents for your new browser.
Passwords and autofill data are completely walled off from extension APIs. You will need to export those manually from your browser's built-in settings (Chrome: Password Manager → Export; Firefox: Passwords → Import).
tools/ also run locally, but they launch a browser and cannot guarantee zero browser background traffic (see the caveat in tools/README.md).Check the releases tab of the repo, or go to the website for Portage at: https://portage.pvrz.lol/ for the latest Firefox and Chrome package.
chrome://extensions and toggle on Developer mode.chrome/ directory.about:debugging#/runtime/this-firefox.manifest.json inside the firefox/ directory..portage.json file, review the stats, and hit Import selected.Optional Python + Node helpers can migrate all compatible first-party origins, not just open tabs, to a closed Chrome/Brave profile. Export is encrypted by default; import uses intercepted inert responses rather than contacting websites. See the step-by-step CLI and privacy limitations. Login-session preservation is not guaranteed: partitioned/container data is skipped and some sites re-authenticate for unrelated reasons. The offline cookie companion skips session and already-expired cookies.
The Linux companion also supports first-party IndexedDB for Firefox → Chromium. It recreates database schemas, indexes, keys and supported Structured Clone data using Firefox/Chromium browser APIs, without loading live sites. Existing target IndexedDB databases are skipped to prevent accidental overwrites. Back up both profiles before using --apply. See tools/README.md for instructions, compatibility limits and tests.