
Bulk-open every URL hiding in a chunk of text — Slack threads, release notes, notes docs, share-sheet dumps — without clicking each one. Handles web URLs, local file paths, custom URI schemes (obsidian://, vscode://), mailto:, markdown links, and bare domains.
Extracts every URL from the currently-selected text and opens them in your default browser (or a browser of your choice, set in preferences).
Same as above, but reads from your clipboard instead of selected text — useful when text isn't selectable (PDF, image OCR, etc.).
Browse the last 100 batches you've opened. Each entry shows the source, count, type breakdown, and timestamp. Replay, copy as a list, pin to protect from FIFO eviction, or delete.
Paste URL-rich text into your clipboard, then run this command to see extracted links grouped by host (web) and type (local files, mailto:, custom schemes). Multi-select with ⌘T, then Open Selected — useful for previewing before opening, or opening only the GitHub links from a long thread.
When a batch hits the confirm threshold (default 10), a dialog shows the count, type breakdown, and first 5 items. Open All or Cancel.
Executables always confirm. If any extracted item is a local file that runs code on open — an app bundle, installer (.app, .dmg, .pkg, .xip), or shell/automation script (.sh, .command, .scpt, .workflow) — a warning dialog appears regardless of the threshold or the confirmation toggle, even for a single item. This guards against untrusted pasted text silently launching something.
Extraction is intentionally permissive so it catches links that aren't fully-qualified URLs. Two things worth knowing:
mailto:, and custom schemes (obsidian://, vscode://, …) are opened alongside web URLs — that's the point of the extension. Turn off Open all URI types to restrict opening to http(s)/www. only.word.tld is treated as a website. Because some file extensions double as top-level domains (index.app, notes.io, demo.dev), a bare token like index.app is opened as https://index.app. To have such a token treated as a file instead, give it a path (./index.app or /full/path/index.app).0 = parallel (chunked at 10). Higher values help cold-start apps like Obsidian accept URIs.www. URLs open. Other extracted types are silently skipped.Opens all the links from the selected text in the default browser
Opens all the links from the clipboard text in the default browser
Group extracted links by domain and type; open selected
Browse and replay past batches of links
www. bare hosts, bare domains with allowlisted TLDs, mailto: / tel: / sms:, file://, absolute paths with ~ expansion, markdown [text](url) syntax, arbitrary custom URI schemes (obsidian://, vscode://, etc.), and files with common extensions in plain text.app, .dmg, .pkg, .sh, .command, .scpt, …) always prompt a warning confirm before opening, regardless of threshold or the confirm toggle — untrusted pasted text can't silently launch codePromise.allSettled chunked at 10 when delay=0; sequential with setTimeout when delay>0LocalStorage (FIFO at 100 entries, per-entry items capped at 20)platforms: ["macOS"] to manifest@raycast/api to ^1.104.0, @raycast/utils to latest, @types/react to ^19extract-urls library with a more robust built-in URL regexFix parsing of URLs from some applications where it was not working properly.
Initial Release of the Multi Links extension.