Keep your browser sessions alive. Auto Refresh Browser is a cross-browser extension (Chrome & Firefox) that automatically reloads tabs at configurable intervals — preventing idle timeouts and session logouts on any website.
- ⚡ Quick presets — 30s, 1m, 5m, 10m with a single click
- 🕐 Custom interval — Enter any value in seconds or minutes
- 🗂️ Two refresh modes
- Current Tab — Refreshes only the tab you're viewing
- All Tabs — Refreshes every open tab across all windows (skips browser-internal pages)
- ⏸ Pause / Resume — Freeze the countdown without losing your place
- 🔄 Persistent state — Runs in the background via
chrome.alarms; survives popup close - 📊 Live countdown ring — Animated circular progress showing time until next refresh
- 🟢 Status indicator — Pulsing dot + toolbar badge (
ON/||) at a glance - 👁 Skip active tab — Don't refresh the tab you're currently reading
- 🦊 Cross-browser — Works on Chrome 102+ and Firefox 109+
The extension is not yet published to the Chrome Web Store or Firefox Add-ons. Follow the steps below to load it manually.
First, clone the repository:
git clone https://github.com/masrikky/auto-refresh-browser.git- Navigate to
chrome://extensions/ - Enable Developer mode (toggle in the top-right corner)
- Click Load unpacked → select the
auto-refresh-browserfolder - The 🔄 icon will appear in your toolbar — pin it for easy access
- Navigate to
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on…
- Select the
manifest.jsonfile inside theauto-refresh-browserfolder - The 🔄 icon appears in your toolbar
Note: Firefox temporary add-ons are removed on browser restart. For a permanent install, the extension must be signed via AMO or Firefox must be set to allow unsigned extensions (
xpinstall.signatures.required = falseinabout:config— developer builds only).
- Click the extension icon to open the popup.
- Choose a quick preset (30s / 1m / 5m / 10m) or enter a custom interval.
- Select Current Tab or All Tabs mode.
- Click ▶ Start Refresh.
The countdown ring starts animating and your tab(s) will refresh on each cycle.
Click ■ Stop Refresh in the popup at any time.
| Input | Unit | Effective Interval |
|---|---|---|
45 |
sec | Every 45 seconds |
2 |
min | Every 2 minutes |
90 |
sec | Every 90 seconds |
0.5 |
min | Every 30 seconds |
popup.js ──► chrome.runtime.sendMessage ──► background.js
│
▼
chrome.alarms.create()
│
[on alarm fire every N min]
│
chrome.tabs.reload()
│
chrome.storage.local
│
popup.js ◄── chrome.storage.local ◄──────────┘
(live countdown synced via startedAt timestamp)
background.js— Manifest V3 service worker. Uses one-shot alarms (re-scheduled after each fire) instead of periodic alarms — this ensures sub-minute intervals (30s, 60s) work reliably on both Chrome and Firefox. Firefox clampsperiodInMinutesto ≥ 1 min, but allows fractionaldelayInMinutesfor one-shot alarms.popup.js— Reads state from storage on open, renders the live countdown ring by computing elapsed time againststartedAt, and passes start/stop/pause/resume commands to the background worker.
| Permission | Reason |
|---|---|
alarms |
Reliable periodic execution independent of popup lifecycle |
tabs |
Read active tab and reload tabs |
storage |
Persist timer state across popup open/close |
No data is ever sent to external servers. Everything runs locally.
auto-refresh-browser/
├── manifest.json # Extension manifest (Manifest V3)
├── background.js # Service worker — alarm & refresh logic
├── popup.html # Extension popup markup
├── popup.css # Dark glassmorphism styles
├── popup.js # Popup UI controller & countdown
├── icons/
│ ├── icon16.png
│ ├── icon32.png
│ ├── icon48.png
│ └── icon128.png
├── README.md
└── CHANGELOG.md
Contributions, bug reports, and feature requests are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m "feat: add my feature" - Push and open a Pull Request
Please keep all code and documentation in English.
MIT — feel free to use, modify, and distribute.