A powerful Chrome extension for automatically refreshing pages at customizable intervals.
Premium dark/light UI · 8 Languages · Advanced features
| Main (Dark) | Advanced (Dark) | Logs (Dark) | Main (Light) |
![]() |
![]() |
![]() |
![]() |
- ⏱ Configurable refresh interval — 1 second to 24 hours
- ⏸ Start / Pause toggle with a single click
- 🔢 Live countdown timer with animated progress bar
- 🔴 Badge countdown on the extension icon
- 🔗 URL list with 3 match modes:
- Domain only (e.g.
google.com) - Domain + Path (e.g.
google.com/search) - Full URL including query string
- Domain only (e.g.
- 🎲 Random interval — randomize between configurable min/max values
- 🧹 Hard refresh — clears origin cache and reloads (like
Ctrl+Shift+R) - 📑 All open tabs — refresh every tab at once (disables URL list)
- 🔄 Refresh limit — auto-stop after N refreshes
- 👁 Page change detection — detects when page content changes, with actions:
- Notify via browser notification
- Stop refreshing automatically
- 🔔 Notifications — browser notifications for events
- ⌨️ Keyboard shortcut — customizable hotkey (default:
Alt+Shift+R) - 📤 Export / Import — backup and restore all settings as JSON
- 🌙 Dark / Light / System theme with smooth transitions
- 🌐 8 Languages: English, Tiếng Việt, 中文, 日本語, 한국어, Français, Español, Deutsch
- 📋 Refresh log — timestamped history (100 entries, clears on browser close)
- 🎨 Premium design — neutral color palette, micro-animations, custom toggle switches
- Download or clone this repository
- Open Chrome and go to
chrome://extensions - Enable Developer mode (toggle in the top-right corner)
- Click Load unpacked
- Select the
Auto Refreshfolder - The extension icon appears in your toolbar — click it to get started!
- Click the Auto Refresh icon in your toolbar
- Set your desired refresh interval (default: 10 seconds)
- Click ▶ Start — the page will auto-refresh
- Click ⏸ Pause to stop
By default, only the active tab is refreshed. To target specific sites:
- Enter a domain or URL in the URL List input
- Click Add
- Choose the match mode:
| Mode | Example | Matches |
|---|---|---|
| Domain only | google.com |
All pages on google.com |
| Domain + Path | google.com/search |
Only google.com/search |
| Full URL | google.com/search?q=test |
Exact URL match |
- Default:
Alt + Shift + Rto toggle auto-refresh - Customize via Advanced → Keyboard Shortcut → Edit
- Export: Advanced tab → Export Settings → downloads a
.jsonfile - Import: Advanced tab → Import Settings → select your
.jsonfile
Auto Refresh/
├── manifest.json # Extension manifest (MV3)
├── background.js # Service worker — timer engine, refresh logic
├── content.js # Content script — page hash, keyboard shortcut
├── popup/
│ ├── popup.html # Popup UI (3 tabs)
│ ├── popup.css # Themed styles (dark/light)
│ └── popup.js # UI controller
├── utils/
│ ├── storage.js # chrome.storage wrapper
│ └── i18n.js # Runtime i18n module
├── locales/
│ ├── en.json # English
│ ├── vi.json # Vietnamese
│ ├── zh.json # Chinese (Simplified)
│ ├── ja.json # Japanese
│ ├── ko.json # Korean
│ ├── fr.json # French
│ ├── es.json # Spanish
│ └── de.json # German
├── icons/
│ ├── icon16.png
│ ├── icon32.png
│ ├── icon48.png
│ └── icon128.png
└── screenshots/ # README images
| Aspect | Implementation |
|---|---|
| Manifest | V3 (service worker, no background page) |
| Timer | setInterval (1s ticks) + chrome.alarms keep-alive |
| State Recovery | chrome.storage.session persists countdown across SW restarts |
| Settings | chrome.storage.local — survives browser restart |
| Logs | chrome.storage.session — cleared on browser close |
| Hard Refresh | chrome.browsingData.remove({origins}, {cache}) + bypassCache: true |
| Page Detection | Content script hashes document.body.innerText |
| i18n | Custom runtime module (not Chrome _locales) for instant switching |
| Permission | Purpose |
|---|---|
tabs |
Query and reload browser tabs |
storage |
Save settings and logs |
alarms |
Keep service worker alive |
browsingData |
Clear cache for hard refresh |
notifications |
Browser notifications |
activeTab |
Access current tab info |
scripting |
Inject content scripts on demand |
- Create a new file in
locales/(e.g.pt.json) based onen.json - Translate all string values
- Add the language option in
popup/popup.html:<option value="pt">PT</option>
- Reload the extension
This project is licensed under the MIT License.
Made with ❤️ for productivity



