Files
url-launcher-chrome-plugin/README.md
T

5.3 KiB

URL Launcher

A Chrome extension for opening a list of URLs as tabs — ideal for workflows that involve opening the same set of pages repeatedly (dashboards, research sessions, daily reading lists, etc.).

Paste a raw list of URLs, or dump any arbitrary text and let the extension extract the links automatically. Tabs can be opened immediately or loaded lazily — only when you actually focus them — with optional staggered timers so your browser isn't hammered all at once.

Why this exists

Chrome Web Store extensions are a well-documented supply chain attack vector. Extensions can be silently updated after installation, sold to new owners, or compromised to inject malicious code into your browser — with full access to cookies, form data, and page content. Several popular tab-management extensions have been hijacked this way.

This extension was built as a self-hostable, auditable alternative to a Chrome Store extension I relied on. The entire codebase is four short files you can read in a few minutes. Because you load it as an unpacked extension, it never updates without you explicitly pulling changes — and you can review every diff before you do.


Features

  • Bulk open URLs — paste one URL per line and open them all as background tabs in one click
  • Extract URLs from text — paste any text (emails, docs, HTML, markdown, Slack messages) and extract every link automatically, deduplicated and cleaned of trailing punctuation
  • Wait for focus — tabs open as lightweight placeholder pages and only navigate to their target URL when you switch to them, keeping memory and network usage low
  • Delayed load — each tab gets a staggered auto-load countdown (1s, 2s, 3s…) so URLs load progressively even without you focusing them, preventing browser overload
  • Live URL counter with instant validation
  • "Load now" escape hatch on every placeholder page

Screenshots

URL Launcher


Installation

This extension is not on the Chrome Web Store. Install it in developer mode:

  1. Download or clone this repository
  2. Open Chrome and navigate to chrome://extensions
  3. Enable Developer mode (toggle in the top-right corner)
  4. Click Load unpacked
  5. Select the repository folder (the one containing manifest.json)
  6. The URL Launcher icon will appear in your Chrome toolbar

To update after pulling new changes, go back to chrome://extensions and click the ↺ refresh icon on the extension card.


Usage

Basic — open a list of URLs

  1. Click the extension icon in the toolbar
  2. Paste one URL per line into the text box
  3. Click Open URLs

All URLs open as background tabs. Invalid lines are silently skipped.

Extract URLs from arbitrary text

  1. Paste any text into the box — an email thread, a webpage, a markdown document, anything
  2. Click Extract URLs
  3. The text box is replaced with one clean URL per line, duplicates removed
  4. Click Open URLs

Wait for focus to load

When the Wait for focus to load checkbox is enabled (default), each tab opens as a minimal placeholder page instead of loading the real URL immediately. The target URL only loads when you click on that tab.

This is useful when opening many tabs at once — the browser stays responsive and pages don't all race to load in parallel.

Delayed load

When Delayed load is also enabled (default, requires Wait for focus), each placeholder page gets an automatic countdown timer:

Tab Auto-loads after
1st 1 second
2nd 2 seconds
3rd 3 seconds

The placeholder shows a live countdown with a shrinking progress bar. Clicking Load now → on any placeholder page bypasses the timer immediately.

This staggers network requests so your browser isn't hit by all pages at once, while still loading everything in the background without you having to manually focus each tab.


Options reference

Option Default Description
Wait for focus to load On Opens a placeholder page; navigates only on tab focus
Delayed load On Adds a staggered per-tab countdown (requires Wait for focus)

The mode badge in the popup header shows the current active mode: lazy, lazy + delay, or eager.


File structure

url-launcher/
├── manifest.json   # Extension manifest (Manifest V3)
├── popup.html      # Toolbar popup UI
├── popup.js        # Popup logic — URL parsing, extraction, tab creation
├── loader.html     # Lightweight placeholder page shown in lazy mode
└── loader.js       # Placeholder logic — focus detection and countdown timer

Permissions

Permission Why it's needed
tabs To open new tabs via chrome.tabs.create

No data is collected, sent anywhere, or stored. Everything runs locally.


Browser compatibility

Requires a Chromium-based browser with Manifest V3 support:

  • Google Chrome 88+
  • Microsoft Edge 88+
  • Brave, Opera, Vivaldi (recent versions)

Firefox is not supported (uses a different extension API).


Contributing

Bug reports and pull requests are welcome. When reporting an issue, please include:

  • Chrome version (chrome://version)
  • A description of the URLs or text you were working with
  • What you expected vs. what happened

License

MIT — do whatever you want with it.