AI-Created Software

The following AI-generated aka vibe-coded software. The software is specific to my needs and my system and may not work for you or your system. Support is limited, but if you report a bug I'll certainly look into it. All code is provided in a zip file for you to review should you choose.

Clipboard Tabber

A Chrome extension for handling link dumps. Copy a block of text, click the toolbar icon, see every link it contains, and decide what happens to them: open as tabs, save to a dated bookmarks folder, or push to the reading list. It also works in reverse — copy your open tabs back out to the clipboard.

Useful when someone sends you twenty links in a chat message, an email, or a spreadsheet column.


What it does

Preview before anything opens. The popup lists every link it found, with a checkbox on each. Untick the ones you don’t want.
Nothing opens until you say so.

Opens in batches. Tabs are created five at a time with a short pause between batches, so a long list doesn’t hit the network all at once. Both numbers are configurable.

Asks twice above a threshold. Past 15 selected links (adjustable), the open button needs a second click.

Three destinations. Open as tabs, save to a timestamped bookmarks folder under Other bookmarks, or add to Chrome’s reading list.

Copies your tabs out. One click puts every web URL in the current window on the clipboard, either as a plain list or as Markdown links with page titles.

Works without the popup. Keyboard shortcuts and a right-click menu item cover the cases where opening the popup is the slow part.

Cleans links up. Trailing punctuation is trimmed, so https://example.com, in a sentence doesn’t become a broken URL, and utm_source, fbclid, gclid and similar tracking parameters are stripped by default. Links that differ only by www., a trailing slash, or host capitalisation are treated as one.


Installation

  1. Put this folder somewhere permanent. Chrome reads the files from disk on every start, so don’t leave it in Downloads if you clear that out.
  2. Open chrome://extensions.
  3. Turn on Developer mode (top right).
  4. Click Load unpacked and pick the folder containing manifest.json.
  5. Pin the toolbar icon if you want it always visible.

Requires Chrome 127 or later. The reading list needs Chrome 120+, and chrome.action.openPopup() — used as a fallback when a shortcut can’t reach the clipboard — needs 127. On a Chromium browser without the reading list API, that button hides itself rather than failing.


Usage

From the popup

Copy some text, click the icon. The popup reads the clipboard as it opens and shows what it found. Tick and untick, then choose Open tabs, Bookmark, or Reading list.

If Chrome blocks the clipboard read, the popup says so and opens a textarea instead — paste there and click Scan this text. That panel is always available under Paste text instead, so you can also scan text you never copied.

Keyboard shortcuts

Shortcut Action
Alt+Shift+V Open the popup
Alt+Shift+O Open every link on the clipboard, no preview
Alt+Shift+C Copy this window’s tab URLs to the clipboard

The last two never show the popup. Since there’s nowhere to print a status line, they report through the toolbar badge: a count in blue for tabs opened, green for tabs copied, grey 0 when nothing was found, and amber ? if the clipboard couldn’t be read (which also opens the popup as a fallback).

Chrome reserves some combinations. Rebind anything that clashes at chrome://extensions/shortcuts, reachable from the options page.

Right-click menu

Select text on any page, right-click, and choose Open links in selection. Nothing has to be copied first.

The handler reads the live selection through chrome.scripting rather than trusting info.selectionText, which Chrome truncates on long selections. That’s legal without host permissions because a context-menu click grants activeTab for that tab.

Options

Open with the gear in the popup, or from chrome://extensions. Everything saves as you change it.

Setting Default Notes
Confirmation threshold 15 tabs Second click required above this
Keep current tab in focus on Off jumps to the first link after the batch finishes
Remove tracking parameters on Applies to opening and saving alike
Batch size 5 tabs
Delay between batches 400 ms 0 disables throttling
Copy tabs as one URL per line Or Markdown links with titles

Settings use storage.sync, so they follow your Chrome profile across machines.


File structure

clipboard-tabber/
├── manifest.json      Permissions, commands, popup and options registration
├── lib.js             Shared: settings, URL extraction, opening, saving
├── background.js      Service worker: context menu, shortcuts, badge
├── offscreen.html     Clipboard host for the service worker
├── offscreen.js       Clipboard read/write via execCommand
├── popup.html         Popup markup
├── popup.js           Popup logic: preview, actions, status
├── options.html       Options markup
├── options.js         Options logic: auto-save, clamping, reset
├── styles.css         Shared styles, including dark mode
└── icons/
    ├── icon16.png
    ├── icon48.png
    └── icon128.png

Implementation notes

A few things that aren’t obvious from reading the source.

Tabs are always created inactive. Creating an active tab closes the popup, which would kill the loop partway through and lose every remaining batch. When “keep current tab in focus” is off, the extension still creates everything in the background and activates the first tab only after the run completes.

The service worker borrows a clipboard. MV3 service workers have no DOM, so navigator.clipboard doesn’t exist there. The shortcut handlers spin up an offscreen document, ask it to read or write, and close it again. The offscreen document uses document.execCommand rather than the async clipboard API, because an offscreen document is never focused and the async API requires focus.

Bookmark folder lookup is defensive. It prefers the node with folderType === 'other', falls back to the well-known id '2', and then to the last root child, rather than hardcoding an id that varies across Chromium forks.

Reading list entries need a title before the page has ever loaded, so the extension synthesises one from the host and path. Adding a URL that’s already on the list throws; those are counted as skipped and reported rather than aborting the batch.

Deduplication is normalised, opening is not.
www. and trailing slashes are ignored when deciding whether two links are the same, but the URL that actually opens is the one that was on the clipboard, minus tracking parameters.


Permissions

Permission Why
clipboardRead Read the copied text
clipboardWrite Write the tab list back out
tabs Read tab URLs and titles for the copy-out feature
bookmarks Create the dated folder
readingList Add entries to the reading list
storage Save settings
contextMenus The right-click item
activeTab + scripting Read the live text selection on context-menu click
offscreen Give the service worker clipboard access

No host permissions are requested. The extension can’t read or modify any page you visit; the only page code it ever runs is a one-line selection read, on the tab you right-clicked, at the moment you right-click it.


Known limitations

  • Only explicit http:// and https:// links. Bare example.com and www.example.com are ignored, as are mailto: and ftp:.
  • Plain text only. Links that exist purely as HTML href attributes — copying styled links out of a document — aren’t seen unless the URL is also visible as text.
  • Redirect wrappers open as-is. Outlook SafeLinks and google.com/url?q= links aren’t unwrapped, so you land on the tracker’s redirect rather than going straight to the destination.
  • The badge can linger. It clears on a timer inside the service worker; if Chrome suspends the worker first, the badge stays until the next action.
  • Alt+Shift+O depends on the offscreen clipboard read. If Chrome refuses it, the extension opens the popup instead of failing silently, which costs you a click.

Version history

2.0 — Preview step with per-link checkboxes; batched opening; bookmarks and reading list destinations; copy window tabs to clipboard; keyboard shortcuts; selection context menu; manual paste fallback; options page; tracking-parameter stripping; dark mode.

1.0 — Read clipboard, open every link found.

(1 votes, average: 5.00 out of 5)

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail.