Open 10 Tabs that Always Refresh

Click the button below to open 10 tabs. Each tab will reload itself on a timer until you stop them.

Ready. Tip: Your browser may block pop-ups; allow them for this page.

Each tab is a self-contained page (served from a blob: URL) that reloads itself and listens for a “stop” message.

`; const blob = new Blob([html], { type: 'text/html' }); return URL.createObjectURL(blob); } function openRefreshingTabs(count, seconds, customTitle) { const ms = Math.max(1000, Math.floor(seconds * 1000)); let opened = 0, blocked = 0; for (let i = 0; i < count; i++) { const url = makeAutoRefreshURL(ms, customTitle, i); const w = window.open(url, '_blank'); if (w) { openedTabs.push({ win: w, url }); opened++; } else { blocked++; } } const status = document.getElementById('status'); if (blocked > 0) { status.textContent = `Opened ${opened} tab(s). ${blocked} blocked by the pop-up blocker — allow pop-ups and try again.`; } else { status.textContent = `Opened ${opened} tab(s). They will keep refreshing until you press “Stop All”.`; } } function stopAll() { let alive = 0; for (const ref of openedTabs) { if (ref.win && !ref.win.closed) { try { ref.win.postMessage('stop-refresh', '*'); alive++; } catch {} } } document.getElementById('status').textContent = `Sent STOP to ${alive} tab(s).`; } function closeAll() { let closed = 0; for (const ref of openedTabs) { if (ref.win && !ref.win.closed) { try { ref.win.close(); closed++; } catch {} } } document.getElementById('status').textContent = `Requested close on ${closed} tab(s).`; } // Wire up UI document.getElementById('openBtn').addEventListener('click', () => { const secs = Number(document.getElementById('interval').value) || 5; const count = Math.min(20, Math.max(1, Number(document.getElementById('count').value) || 10)); const title = document.getElementById('customTitle').value.trim(); openRefreshingTabs(count, secs, title); }); document.getElementById('stopBtn').addEventListener('click', stopAll); document.getElementById('closeBtn').addEventListener('click', closeAll);