Seltzer User Guide
Seltzer (formerly WinClip) shows a bar of actions when you select text in any Windows app. This guide covers everything a user needs: how the bar appears, what it offers, every setting, installing extensions, privacy, troubleshooting and uninstalling. Extension authors should also read Writing Extensions.
Keys are written the Windows way (Ctrl, Alt, Shift, Win). Where an extension's own help mentions Mac keys, read ⌘ Command as Ctrl and ⌥ Option as Alt (see Holding a key while clicking).
Contents
- The first start
- Making the bar appear
- What the bar shows, and why
- Using the bar
- Built-in actions
- Bundled extensions
- Settings, pane by pane
- App and website rules, trigger modes
- How Seltzer reads the selection (clipboard modes)
- What actions do with your clipboard
- Installing and managing extensions
- The tray icon
- Automation: command line and seltzer:// links
- Privacy and where your data lives
- Troubleshooting
- Uninstalling
- The settings file
1. The first start
The first time Seltzer starts it shows a welcome page:
- How it notices your selection. Seltzer watches mouse clicks, drags and its keyboard shortcut (with Windows "low-level input hooks") to know when you select text. It reads the selected text only to offer actions; it never stores or sends it, and it needs no special permission.
- Apps running as administrator. Windows does not let a normal program read or control windows that run as administrator, so the bar stays hidden there (see Elevated windows).
- When should the bar appear? Choose Automatically (the default, like PopClip), When I hold Ctrl or Keyboard shortcut only. You can change this later in Settings → General → Trigger. If you choose Keyboard shortcut only, set a shortcut right away in Settings → General → Keyboard shortcut: no shortcut is set by default, so until you record one the bar has no way to appear.
- Starter extensions. Tick the ready-made actions you want (Uppercase, Word Count, Google Translate, Calculate …) and click Get Started. You can add or remove any of them later.
Seltzer then runs in the background with an icon in the notification area (the "tray"). Right-click or left-click the icon for its menu; double-click it to open Settings.
Coming from WinClip. Seltzer was called WinClip up to version 0.1.3. If you used WinClip, Seltzer's first start skips the welcome page and brings over your WinClip profile instead: settings, the action list (order, folders, separators, renamed actions, custom icons and options), the extensions you installed, saved API keys and sign-ins, and downloaded icons. A message says what was brought over. WinClip's files are copied, never moved or changed; only WinClip's Start at login entry is removed, so that the two apps do not both start with Windows. This happens once. Quit WinClip before you start Seltzer (both would show a bar), and uninstall it in Windows Settings → Apps → Installed apps when you no longer need it. Saved keys that Windows cannot decrypt for you (a profile copied from another PC) must be entered again; the message says so. A file saved with WinClip's Export Settings… also imports into Seltzer (Advanced → Import Settings…).
2. Making the bar appear
Selection gestures (trigger mode "Automatically")
| Gesture | What to do | Notes |
|---|---|---|
| Drag | Press the left button in text, drag across it, release. | The drag must start and end in the same window, move at least a few pixels (the Windows drag distance, scaled for the display) and last under 8 seconds. Dragging a window, a scroll bar or a title bar is ignored. |
| Double-click | Double-click a word. | The pointer must be the text (I-beam) cursor, or the target must be a document or text control. Seltzer waits a moment (at most 220 ms) to see whether a third click follows. |
| Triple-click | Triple-click a line or paragraph. | Shows the bar for whatever the app selected. (A classic Win32 edit box selects nothing on a triple-click, so no bar appears there.) |
| Shift-click | Click at one end of the text, then hold Shift and click at the other end. | Ctrl and Alt must not be held. |
| Click and hold | Press and hold the left button for half a second in a text field without selecting anything. | Shows a bar for actions that need no selection, typically Paste. Needs the I-beam cursor and an editable field. Can be turned off (Settings → Advanced → Activation → Click and hold). |
| Address-bar click | Single-click the address bar of Chrome, Edge, Vivaldi, Brave, Firefox and similar browsers. | Offered only when the click selects the whole address; the bar then acts on the page's full URL. Can be turned off (Advanced → Browser address bar). |
A double-click or Shift-click in an editable field that ends up selecting nothing shows the no-selection bar (Paste and similar), just as click-and-hold does.
Keyboard selections do not show the bar by default (as in PopClip): selecting with Shift+arrow keys or Ctrl+A is ignored. Either press the keyboard shortcut afterwards, or turn on Settings → Advanced → Appear after keyboard selection (experimental), which shows the bar about a third of a second after you release Shift (after Shift+arrows) or Ctrl (after Ctrl+A).
The keyboard shortcut
Set one in Settings → General → Keyboard shortcut: click the box, press the combination, done (Esc cancels, Backspace clears). Rules:
- Use Ctrl, Alt or Win with a key. F1–F11 and F13–F24 may be used alone. F12 is reserved by Windows for debuggers.
- Seltzer warns about combinations that clash with Windows (Win+…), with menu mnemonics (Alt+letter), or with characters that your installed keyboard layouts type with AltGr (Ctrl+Alt+…).
- "Already used by another app" means another program registered the same shortcut first; pick another one.
Pressing the shortcut shows the bar for the current selection in keyboard mode (see Keyboard mode) wherever you are, even in apps and sites excluded by your rules, while "Appear automatically" is off and while Seltzer is paused. With nothing selected in a text field it shows the no-selection bar (Paste …). It is ignored while an action is still running on screen (its spinner, result or feedback is showing); an action whose bar you dismissed no longer holds it off.
Trigger modes
Settings → General → Trigger:
| Mode | Behaviour |
|---|---|
| Automatically (default) | The gestures above show the bar. |
| When I hold Ctrl | Select text as usual, then, within 8 seconds, press and hold Ctrl on its own for a moment (325 ms by default; Advanced → Hold time) to show the bar. Selecting alone shows nothing. Any other key, a click or the wheel cancels. A Ctrl you were already holding when you finished selecting does not count: release it and press it again. |
| Keyboard shortcut only | Only the keyboard shortcut shows the bar. |
Excel and PowerPoint behave as When I hold Ctrl even in automatic mode (dragging there moves cells and shapes). You can change the trigger for any single app in Settings → General → Rules → Apps… → Trigger per app, for example to set Excel back to Automatically.
Keeping the bar from appearing
- Hold Ctrl while you finish a selection (at the moment you release the mouse button): the bar does not appear. Change the key in Settings → Advanced → Hold to prevent appearing (Ctrl, Alt, Ctrl+Shift or None).
- Appear automatically off (Settings → General, or the tray menu): only the keyboard shortcut works.
- Pause from the tray menu (15 minutes, 1 hour or until resumed) or from the bar's own menu (see The bar menu).
- Rules for apps and websites (section 8).
Where the bar never appears
Seltzer stays hidden, by design, even for the keyboard shortcut, when:
- the app in front runs as administrator (a one-time tip explains this the first time);
- the lock screen or a UAC prompt (secure desktop) is showing;
- a Windows surface is in front: Start, Search, Quick Settings, the notification centre, Task View;
- the selection is in one of Seltzer's own windows, or in a password field.
It does not appear automatically (the keyboard shortcut still works) when:
- a full-screen game or presentation is running (turn on Advanced → Appear in full-screen apps if a normal app is misdetected);
- the app is on the compatibility list (Explorer's file view, remote-desktop and virtual-machine windows, screenshot tools, image, video, 3D and CAD editors, password managers; section 8).
Settings → Advanced → Troubleshooting → Why didn't it appear? tells you which of these applied (section 15).
3. What the bar shows, and why
The bar lists the enabled actions of your action list (Settings → Actions) in that order, keeping only those that apply to the current selection:
- Requirements. Each action says what it needs: any text, a link, exactly one e-mail address, an existing file path, an editable field (Cut), something to paste (Paste), formatted text (Formatting) and so on. Open Link therefore only appears when the text contains a link, Show in Explorer only for a path, Cut only in editable text.
- Patterns. Many extensions only apply to text that matches a pattern (a number, a colour code, JSON, Chinese characters, a short enough phrase). For selections longer than 51,200 characters, actions that need a pattern, a link, an e-mail address or a path are left out.
- App filters. An extension may appear only in some apps, or never in some apps.
- Extension logic. Some extensions decide in code what to offer (Calculate offers its result, Spelling its suggestions, Open in Browser the browsers other than the current one). Such code gets 150 ms; if it is too slow or its extension is busy, its actions are left out of that bar.
How it looks and behaves:
- Placement. The bar appears above the pointer (or below, per Settings → General → Position) with the primary action centred under the pointer — the action that asked for that place, such as Copy or the first spelling guess. After a multi-line drag it follows the drag direction (dragging upwards puts it above) unless Advanced → Always use the position setting is on. Near a screen edge it flips and moves to stay on the screen. Advanced → Place the bar → Near the selection places it next to the selected text instead, when the app reports where that is.
- Icons or titles. Each action shows its icon, or its name when it has none, when its icon cannot be drawn, or when you chose Show As → Text for it. Cut, Copy and Paste show their names by default. Advanced → Compact bar: icons only shows icons wherever they exist.
- Folders from your action list, and extension buttons that group several actions (a submenu), open a sub-bar when you hover over them or click them. An action that does something when clicked can also have a submenu that opens on right-click. A few (Spelling) open their submenu straight away.
- Separators. A Section Break splits the bar into separate capsules; a Page Break starts a new page.
- More. When the actions do not fit the width of the screen (or the Actions per page limit), the bar gets pages and a More n of m button. The mouse wheel over the bar also turns its pages.
- Install "name". When the selected text is an extension snippet (text starting with a
#popclipheader), the first button installs it (section 11). - "… needs confirmation". An installed extension that can run programs or scripts waits for your approval before it runs; clicking this label opens Manage Extensions, where Review and Enable… shows what it can do.
- The selection must contain something other than white space and be shorter than about ten million characters.
If nothing applies, no bar appears ("No action applies to this text" in the diagnostics window).
4. Using the bar
Clicking
Click an action to run it. The bar never takes the keyboard focus away from your app, so a paste lands where your text cursor is.
While an action takes longer than a moment, a spinner replaces the bar; click the spinner to cancel (the action's network requests and programs are stopped, "Cancelled" is shown). When it finishes you see a tick, Copied, a shaking X (it failed; details are in the Debug Console when extension debug output is on), the result, or nothing (the bar just closes after a paste).
Some actions show their result in the bar instead of pasting it (a calculation, a word count, a converted value). A result shown as a button is a preview: click it to paste the full result, Shift-click to copy it. Large Type shows the text in a big overlay across the screen; any click or key closes it.
If an action needs settings first (an API key, a sign-in), it shows the X and opens its settings sheet.
Holding a key while clicking
Seltzer passes the keys you hold when you click (or press Return in keyboard mode) to the action. Extensions written for the Mac see them as Mac keys:
| You hold | The action sees | Typical effect in the built-ins |
|---|---|---|
| Shift | ⇧ Shift | Copy/Paste: plain text (or keep formatting, see below). Cut: leave plain text. Search and Open Link: open in a background tab. Dictionary: copy the definition. Actions that paste their result: copy it instead. Result previews: copy. |
| Alt | ⌥ Option | Search: search for the exact phrase (in quotes). Open Link: copy the links instead of opening them. Many extensions document an Option variant. |
| Ctrl | ⌘ Command | Whatever the extension documents for ⌘. |
| Win | nothing | Not passed to actions. |
Mac "Control" (⌃) is never reported for clicks on Windows. Scripts can also read the Windows keys, Win included (Writing Extensions).
If you hold Alt or Win while clicking, Seltzer makes sure releasing the key afterwards does not open the app's menu bar or the Start menu.
Keyboard mode
The keyboard shortcut opens the bar in keyboard mode, with the primary action highlighted:
| Key | Does |
|---|---|
| ← / → | Move the highlight; at the ends move to the previous or next page (wrapping around). Holding the key repeats. |
| ↓ | Open the highlighted folder or submenu. |
| ↑ | Leave the current sub-bar or submenu. |
| Return or Space | Run the highlighted action (Return on a folder opens it). Keys held with Return count as in the table above: Shift+Return is a Shift-click. |
| 1 – 9 | Run the first to ninth action of the page, when Advanced → Number keys run actions in keyboard mode is on. |
| Menu key (Apps) or Shift+F10 | Open the bar menu. |
| Esc | Close the bar. |
While the keyboard-mode bar is shown, these keys go to the bar, not to your app. Any other key closes the bar and reaches the app as usual.
Closing the bar
The bar closes when you click anywhere else, press a key (unless Advanced → Screenshot mode is on), move the pointer away from it (the distance is Advanced → Pointer-away distance; 0 means one bar height), turn the mouse wheel outside it, switch to another window, or lock the computer. It never closes on a timer unless you set Advanced → Hide after (seconds); hovering over it pauses that timer.
The bar menu
Right-click the bar's background (or an action without a submenu), or press the Menu key in keyboard mode, for:
- Don't show in <app> — adds the app to your excluded apps (or removes it from the allowed apps in "only in" mode).
- Pause in <app> until restart — until Seltzer restarts.
- Pause for 15 minutes / Pause for 1 hour / Pause until resumed — everywhere; resume from the tray menu.
- Exclude this site (example.com) — in a supported browser, adds a website rule for the page's domain (not offered in private windows).
- Settings…
The keyboard shortcut keeps working in excluded apps and sites.
5. Built-in actions
The default action list, in this order:
| Action | Appears when | Click | Shift-click | Alt-click |
|---|---|---|---|---|
| Spelling | One editable word of 3–400 letters is misspelled (no spaces, links, e-mail addresses, camelCase, : or _) |
Offers up to five suggestions per language; clicking one replaces the word and restores your clipboard afterwards | — | — |
| Search | Any text that is not itself a URL | Searches the web in the current browser (or the default browser) | Opens a background tab | Searches for the exact phrase |
| Open Link / Open Links | The text contains web links (or links with other known schemes) | Opens each link, at most 25 | Background tabs | Copies the links, one per line |
| Cut | Text is selected in an editable field | Cuts | Leaves only plain text on the clipboard | — |
| Copy | Text is selected | Copies | Copies plain text only (with Copy plain text on: keeps the formatting) | — |
| Paste | You are in an editable field and the clipboard has text | Pastes, replacing any selection | Pastes plain text only (with Paste plain text on: keeps the formatting) | — |
| Show in Explorer | The whole selection is an existing file or folder path on a local drive | Opens File Explorer with the file selected (a folder is opened) | — | — |
| Dictionary | The word or phrase (1–400 characters, punctuation at the ends ignored) is in the English dictionary | Shows a definition popup next to the pointer | Copies the definition | — |
Settings of the built-ins (the gear on their row in Settings → Actions):
- Search: the search engine — Google (default), Baidu, Bing, Brave, DuckDuckGo, Ecosia, Kagi, NAVER, Startpage, Yahoo,
Yahoo Japan, Yandex, or Other… with your own address in which
***stands for the searched text (for examplehttps://example.com/find?q=***). An address that cannot work shows "Bad search URL" and reopens the settings. - Spelling: up to two languages from the spell checkers installed in Windows (Settings → Time & language → Language & region). With Show spelling suggestions first (Advanced) on, the suggestions open at once when the word is misspelled in every language.
- Open Link recognises web links (
http/https, and addresses such asexample.com/page, which gethttps://) and links with the extra schemes listed in Advanced → Extra link schemes for Open Link (spotify,evernote,ftp… by default); web links win when both kinds are present. Links from a private browser window open in a private window; if that browser has no way to open one, the link is not opened at all. - Dictionary uses an offline English dictionary (Open English WordNet 2025). The popup has Copy and a Wiktionary button that looks the word up online, only when you click it.
Built-ins cannot be uninstalled, only disabled or deleted from the list; Settings → Actions → Tools → Restore Default Actions puts any missing ones back.
6. Bundled extensions
Seltzer comes with 79 starter extensions, offered on the welcome page, and 13 Windows-native ones. Add any of them at any time from Settings → Actions → Tools → Manage Extensions…: select it and click New Instance. Highlights:
- Text: Uppercase, Lowercase, Capitalize Words, Sentence Case, Title Case, Alternating Case, Coding Cases, Brackets, Quotes, Straighten Quotes, Remove Spaces, Join Lines, Underscore, Hyphenate, Slugify, Reverse, Sort, Shuffle, Comma List, SQL List (values to a quoted SQL list in parentheses, ready for an IN clause; Alt-click leaves out the parentheses; a list that is already quoted goes back to one value per line), Delete, Select All, Remove Accents, Traditional/Simplified Chinese, Pinyin, Cyrillic Transliteration.
- Encode and convert: Base64, URL Encode, HTML Encode, ROT13, Format JSON, Color Conversion, Unicode Lens, Unix Time, Timestamp, Convert (units), Calculate, Sum, Hash (MD5/SHA-1/SHA-256/SHA-512), QR Code, Password Generator.
- Count: Word Count, Character Count, Line Count.
- Markdown and formatting: Formatting (bold/italic/underline keys), Copy as Markdown, Markdown to HTML, Markdown to RTF, MDList, Code, Blockquote, Paste and Match Style, Paste and Enter.
- Clipboard and display: Append to Clipboard, Swap with Clipboard, Large Type (shows the text across the screen).
- Web: Google, Bing, DuckDuckGo, Brave Search, Kagi, Wikipedia, YouTube, Google Maps, OpenStreetMap, Google Translate, Wayback Machine, Shorten Link, Email, Call, Open in Browser, ChatGPT/Claude/Grok website launchers, Obsidian, Spotify, Zoom, DeepL Translator (needs the DeepL app).
- AI and translation (bring your own key): OpenAI Chat, Ollama (local models, plain
http://to your own machine or LAN is allowed), Claude API, Instant Translate (Azure AI Translator key). - Windows-native (not on the welcome page): Say (Windows voices; click again to stop), Print, Run in Terminal
(Windows Terminal; always asks first and shows the full command), Get IP, Hash, QR Code, Emoji Shortcodes, Remove
Accents, Claude API, Claude Chat and Claude Code (open the Claude desktop app with the selected text; Claude Code
also passes the folder of the File Explorer window you used last), Rewrite and Open in Outlook:
- Rewrite starts a new chat in the Claude desktop app with
rep:followed by the selected text (the linkclaude://claude.ai/new?q=rep%3A…), for a Claude setup that treatsrep:as "rewrite this". Change the trigger in its Prefix option (it is used exactly as typed, with no space added; leave it empty to send only the text). Like Claude Chat it needs Claude for Windows and takes up to 8,000 selected characters. - Open in Outlook opens the selected text as a new email in Outlook (Classic), ready to edit; it never sends,
saves or closes anything. When the first lines of the selection (before the first blank line) contain a line
Subject: …, that text becomes the subject and the line is left out of the email; otherwise the subject stays empty and the whole selection is the body. Line breaks and indents are kept, and the text goes one blank line above your default Outlook signature in your usual compose font (turn Keep my Outlook signature off for an email with only the text). The new email opens in front of the app you selected the text in. When it cannot be opened, the action shows an X and a message that says why: the new Outlook for Windows cannot be automated — use the Email extension to open your default mail app instead; if Outlook runs as administrator and Seltzer does not (or the other way round), Windows keeps them apart — start both normally; when Outlook is busy or shows a dialog, close the dialog and click again. When Outlook is only slow (it can take a while with many add-ins), a message says the email will appear when Outlook is ready: don't click again, or you get a second one.
- Rewrite starts a new chat in the Claude desktop app with
Extensions that need an account or key open their settings sheet the first time you use them.
7. Settings, pane by pane
Open Settings from the tray menu, by double-clicking the tray icon, or by starting Seltzer.exe again while it runs. Ctrl+W
closes the window. Changes take effect immediately.
Find a setting. Type in the Find a setting box above the panes, or press Ctrl+E (or Ctrl+F) to get there. While the Actions list itself has the focus, those two keys keep their own meaning there (Ctrl+F filters the list, Ctrl+E opens Manage Extensions); from the list's filter box, the navigation or any other pane they go to Find a setting. Results appear as you type, best match first, each with where it is (Advanced › Clipboard):
- every setting of the four panes, found by its name, its explanation, the choices of its menu, what its buttons and links say (check for updates, open debug console) and common other words (hotkey, startup, blacklist, theme, transparency …). Case and accents do not matter. Every word you type must match, except small words such as for, with and the (start with windows finds Start at login). An explanation that changes with a setting is searched as it is now;
- the windows behind the panes: Rules for apps…, Rules for websites…, Manage Extensions…, Install from File…/Folder…/Link… and Why didn't it appear?;
- your action list: extensions, their actions and folders (sql finds SQL List, also by the extension's keywords).
Use ↑/↓ and Enter, or click a result; screen readers announce the number of results and the result ↑/↓ moves to. A setting: Settings shows its pane, scrolls to it (with its section heading above it when both fit), puts the keyboard focus on it and highlights it briefly (the highlight does not fade when Windows' animation effects are off). The keyboard shortcut is highlighted but not focused, so the next key you press is not recorded as a new shortcut: click the field to record one. A window opens. An action-list entry is selected in the Actions list (its folder opens and a filter hiding it is cleared). Esc closes the results; a second Esc clears the box.
General
Activation
- Appear automatically — on/off (also in the tray menu).
- Trigger — Automatically / When I hold Ctrl / Keyboard shortcut only (section 2).
- Rules — Apps… and Websites… open the rule editors (section 8).
- Keyboard shortcut — the recorder described in section 2, with its status ("Not registered yet", "Already used by another app").
Appearance
- Size — four sizes.
- Colour — Auto (follows Windows), Auto (Inverse), Light, Dark.
- Position — Above Text (default) or Below Text.
- An Example bar previews the result.
Actions
Your action list, in bar order: extensions, folders and separators. Each row shows the icon, name and origin; the gear opens the action's settings; ⋯ (or right-click) opens the row menu.
| Task | How |
|---|---|
| Enable/disable | Space, or ⋯ → Enabled |
| Rename | Double-click the name or F2 (clear the name to go back to the default) |
| Change the icon | ⋯ → Icon → Change Icon… (Icon Picker) / Reset to Default Icon |
| Icon or name on the bar | ⋯ → Show As → Icon / Text |
| Action settings | Gear, Enter, or ⋯ → Settings… |
| Another copy with its own settings | ⋯ → Duplicate (only for extensions that allow several instances) |
| Delete | Delete key or ⋯ → Delete. Deleting the last copy of an installed extension also uninstalls it (you are asked first; Undo cannot bring the files back) |
| Reorder, move in/out of folders | Drag and drop; or Ctrl+X, select a row, Ctrl+V (the item goes after the selected row); Ctrl+Alt+V (Move Item Here) moves the item you cut or copied; Ctrl+C then Ctrl+V pastes a copy (not for extensions that allow only one copy) |
| New folder / separator | + menu → New Folder (Ctrl+N) / New Separator (Ctrl+Alt+N); folders nest at most five deep. A separator's ⋯ → Separator Style chooses Section Break or Page Break |
| Undo / redo | Ctrl+Z, Ctrl+Shift+Z or Ctrl+Y (100 steps) |
| Search the list | Ctrl+F (the list's own filter; Find a setting above the panes also finds actions) |
| Extension details | ⋯ → Extension → Extension Info (Ctrl+I) / View Source |
Multi-action extensions show their actions as sub-rows that can be enabled, renamed and re-iconed one by one.
Buttons above the list:
- Get Extensions opens the list of published extensions, with Install and Update buttons (section 11).
- Tools → Manage Extensions… (Ctrl+E), Install from File…, Install from Folder…, Install from Link… (a PopClip directory link; prefilled when one is on the clipboard), Restore Default Actions.
- Drop extension files, folders, snippet text or a directory link (dragged from the browser's address bar) anywhere on the Settings window to install them.
Action settings sheet. Generated from the extension's options: text fields, checkboxes, pop-up menus (with None and Other… where offered), concealed fields for API keys (with a reveal button; clearing one deletes it), headings and help text with links. Extensions with a sign-in show Sign In… / Sign Out and "Signed in as …". Typed text is saved a moment after you stop typing. The header's Extension menu leads to Extension Info and View Source.
Manage Extensions lists every installed extension (sort by name or install date) with its origin (Built-in, Included with Seltzer, Package, Snippet, Developer folder, PopClip Extensions Directory), a Directory (hash-verified) badge where it applies, and how many copies are in the action list. New Instance adds (another) copy to the action list and puts back deleted built-ins; Extension Info, View Source, View Web Page (for directory extensions) and Review and Enable… (for an extension waiting for your confirmation) are also here.
Extension Info shows the name, identifier, version, description, where and how it was installed and when, verification status, folder (with Show in Explorer), capabilities (entitlements such as network access, and whether it runs scripts), associated apps and whether they are installed, its copies in the action list, and load warnings.
View Source shows the extension's files read-only. Export… saves it as a .popclipextz package; Copy Snippet
copies a single-file extension as snippet text. To customise an extension, export or copy it, edit it, and install the
result under a new identifier.
Icon Picker (⋯ → Icon → Change Icon…): Text (up to three characters or one emoji, in a square, circle or magnifying glass, filled or outlined, optionally monospaced), Custom (any icon specifier, or an SVG/PNG file chosen or dropped on the window: SVG up to 64 KB, PNG up to 256 KB) and Search (icons from Iconify, downloaded when shown), with an Adjust panel for scale, rotation, position, flips and strike-through.
App
- The version, links to the website, help and privacy pages and the trademark notice.
- Software Update — current status, Check for Updates, Download, Restart to Update; Automatic updates: Off, Notify only (default) or Install automatically (downloads in the background and installs when you next quit); Include beta versions offers beta releases in addition to stable ones (whichever is newer). Seltzer checks by the calendar: 24 hours after the last check, also right after the computer wakes from sleep, and retries a failed check later. Updates are signed: Seltzer installs only what its publisher signed. A portable copy or a copy built from source says "Updates are not available for this build" and its controls are disabled.
- Start at login — off by default. If you disabled Seltzer in Task Manager's Startup apps, the setting says so and Seltzer does not override your choice; turn it on there.
- Show tray icon — when hidden, open Settings by starting Seltzer again.
- Debug Console — log messages of this session (see section 15).
Advanced
Troubleshooting — Why didn't it appear?, Debug Console, Restart Detection (reinstalls the input hooks).
Back up settings — Export Settings… writes your action list (its order, folders, separators, names, icons and each action's option values) to a JSON file; Import Settings… replaces your action list with the one in a file. API keys and sign-ins are never exported, and an import leaves them as they are. App-wide preferences (everything on the General, App and Advanced panes, and your rules) are not part of the export. Extensions themselves are not included either: install them on the other computer too.
Unpacked extensions — Load Unpacked Extension… loads an extension folder you are developing in place, without copying it (section 11).
Then, grouped:
| Setting | Default | Meaning |
|---|---|---|
| Activation | ||
| Hold to prevent appearing | Ctrl | Key that, held when you finish selecting, keeps the bar away (Ctrl, Alt, Ctrl+Shift, None) |
| Click and hold | On | Press and hold in an empty text field shows Paste and other no-selection actions |
| Browser address bar | On | A single click in a supported browser's address bar shows the bar |
| Hold time (ms) | 325 | How long to hold Ctrl with the "When I hold Ctrl" trigger (100–3000) |
| Require Shift in terminals | Off | In terminals the bar appears only when Shift is held while selecting |
| Appear in full-screen apps | Off | Normally the bar stays hidden in full-screen games and presentations |
| Appear after keyboard selection (experimental) | Off | Shift+arrow and Ctrl+A selections show the bar too |
| Number keys run actions in keyboard mode | Off | 1–9 run the first to ninth action of a keyboard-mode bar |
| Bar | ||
| Always use the position setting | Off | Ignore the drag direction when choosing above or below |
| Place the bar | Near the pointer | Or near the selected text, when the app reports where it is |
| Actions per page | 0 | 0 fits as many as the screen allows |
| Hide after (seconds) | 0 | 0 keeps the bar until you move away, click elsewhere or type |
| Pointer-away distance | 0 | How far (in pixels at 100 % scaling) the pointer may move away before the bar hides; 0 = one bar height |
| Use the accent colour | On | Off uses the classic blue highlight |
| Screenshot mode | Off | Key presses don't hide the bar |
| Compact bar: icons only | Off | Actions that have an icon show it instead of their name, even Cut, Copy and Paste |
| Icons | ||
| Download icons from Iconify | On | Off: only bundled and already downloaded icons are shown, and icon search is unavailable |
| Symbol icons | Close to macOS | How the macOS SF Symbols named by extensions are drawn (they are replaced by similar open-source icons): Close to macOS or Windows (Fluent) |
| Icon sets hidden from icon search | (none) | Iconify prefixes, for example mdi, fa |
| Icon search includes colour icon sets | Off | |
| Icon search shows each icon's name | Off | |
| Disable the icon cache | Off | For troubleshooting: every icon is drawn again each time |
| Clipboard | ||
| Read selections with the clipboard | When needed (recommended) | See section 9 |
| Copy plain text | Off | Copy drops formatting; hold Shift to keep it |
| Paste plain text | Off | Paste drops formatting; hold Shift to keep it |
| Keep pasted results on the clipboard | On | Off restores what was on the clipboard before an action pasted its result |
| Copy shown results | Off | Results that are only displayed are also copied |
| Copy the text when searching | Off | Search also copies the searched text |
| Copy the link when opening it | Off | Open Link also copies the links |
| Actions and scripts | ||
| Extra link schemes for Open Link | evernote, omnifocus, spotify, ftp, bluesky, hook, craftdocs, x-devonthink-item, kmtrigger, message, lt | Comma-separated schemes Open Link treats as links |
| Show spelling suggestions first | On | Spelling opens its suggestions straight away when the word is misspelled |
| Script time limit (seconds) | 60 | Shell, PowerShell and Command Prompt actions are stopped after this time; 0 = no limit |
| Allow sh and bash scripts | Off | Run Unix shell scripts through Git for Windows or WSL when installed |
| JavaScript time slice (ms) | 5000 | Longest time an extension's JavaScript may run without pausing (250–60000) |
| Developer | ||
| Extension debug output | Off | print() and script output go to the Debug Console |
| Reload developer extensions on change | Off | Unpacked extension folders (and installed extensions) reload when their files change |
| Don't ask before installing unverified extensions | Off | For extension developers only: unverified extensions can run code on your PC |
| Allow reserved identifiers | Off | For extension developers only |
| Skip the entitlement check | Off | Don't warn when an extension uses an API without declaring it |
| Privacy | ||
| Share private-window page addresses with extensions | Off | Off keeps the address and title of InPrivate and incognito windows away from extensions |
| Log selected text | Off | For troubleshooting only: selected text appears in the log |
A few expert settings exist only in the settings file (%APPDATA%\Seltzer\settings.json). Section 17 lists them, gives
the settings-file name of every PopClip hidden preference and explains how to edit the file safely.
8. App and website rules, trigger modes
Rules only stop the bar from appearing automatically. The keyboard shortcut works everywhere (except in elevated windows and on the secure desktop).
Apps (Settings → General → Rules → Apps…)
Appear in all apps except… (default) or Appear only in… — the list below applies to the chosen mode. Add an app by typing its executable name (
notepad.exe), with Add Frontmost App (the last app you used before Settings) or Browse…. The bar menu's Don't show in <app> edits the same list.Compatibility list — Don't appear in apps known to misbehave (on by default) keeps the bar away from apps where selection gestures are not text selections or where copying is unsafe:
- File Explorer's file view (renaming a file still works),
- remote desktop and virtual machine windows (mstsc, VMware, VirtualBox, Hyper-V, Windows Sandbox, AnyDesk, TeamViewer, Citrix …),
- screenshot tools (Snipping Tool, ShareX, Greenshot, Snipaste …),
- image, video and audio editors (Photoshop, GIMP, Krita, Inkscape, Paint.NET, DaVinci Resolve …),
- 3D and CAD tools (Blender, AutoCAD, SketchUp, Fusion 360 …),
- password managers (KeePass, KeePassXC, 1Password, Bitwarden …).
Tick an entry in the list to allow that app anyway, or use Allow Frontmost App.
Trigger per app — override the trigger mode for one app (Add Frontmost App or Add Typed App, then choose the mode). Excel and PowerPoint (and WPS Spreadsheets) default to When I hold Ctrl; add them here with Automatically to change that.
Websites (Settings → General → Rules → Websites…)
- Appear on all websites except… or Appear only on…, in supported browsers (Chromium-based browsers and Firefox).
- A domain (
example.com) also matches its subdomains (a leadingwww.is ignored); an address (example.com/docs) matches every page that starts with it. - The bar menu's Exclude this site adds the current domain.
- Seltzer reads the page address from the browser's accessibility information only when you have website rules. If it cannot tell the page in time, the bar appears (rules fail open).
9. How Seltzer reads the selection (clipboard modes)
Seltzer first asks the app for the selected text through Windows accessibility interfaces (the classic edit-box messages, UI Automation, MSAA, IAccessible2 for browsers, the Java Access Bridge for Java apps). This is invisible and touches nothing. Most apps work this way: Notepad, Word, Outlook, browsers, Windows Terminal, WPF, WinUI and UWP apps.
Some apps do not expose their selection that way — typically Electron apps whose accessibility is turned off (Slack, Teams, Discord, some editors), older Java apps and custom-drawn editors. For them Seltzer can ask the app to copy: it saves everything on your clipboard, sends Ctrl+Insert or Ctrl+C, reads the copied text and puts your clipboard back, all formats included. Settings → Advanced → Clipboard → Read selections with the clipboard controls this:
| Mode | Behaviour | Trade-off |
|---|---|---|
| When needed (recommended) (default) | Accessibility first; the copy is used only when accessibility finds nothing and the gesture really looks like a text selection. | The full bar in almost every app. The copy is briefly visible to clipboard tools: Seltzer marks its own temporary writes and restores so Windows clipboard history (Win+V), cloud clipboard and well-behaved clipboard managers skip them, but the app's own copy cannot be marked, so it may appear in Win+V history. |
| Only when an action is clicked | When the text cannot be read without copying, the bar shows only actions whose appearance does not depend on the text (Copy, Cut, Uppercase and other actions without conditions), and the copy happens when you click one. | No clipboard activity until you act; fewer actions offered in those apps (nothing that needs a pattern, a link, a path, a word count in its title or code that inspects the text). |
| Never | Accessibility only. | Nothing ever copies; apps without accessibility show no bar (the hotkey too). Actions that need rich text (HTML/RTF) fall back to plain text. |
| Always | Copy first, accessibility as the fallback (PopClip's "deep capture"). | The most reliable text in apps whose accessibility is wrong; the most clipboard activity. |
Whatever the mode, Seltzer never sends a copy shortcut:
- to terminals and consoles (Windows Terminal, conhost, PowerShell, cmd, mintty/Git Bash, PuTTY, WezTerm, Alacritty, MobaXterm …), where Ctrl+C would interrupt the running program;
- to password fields, or when the selection is an object rather than text;
- to Explorer's file view (Ctrl+C copies files there), Excel cell selections, remote-desktop and VM windows, screenshot tools and password managers;
- to administrator windows;
- when no evidence of a text selection exists (for example, you dragged with an arrow cursor on a canvas).
It also waits and gives up if you press Ctrl+C, Ctrl+X or Ctrl+V yourself while it works (your own copy wins), and it stops copying for five minutes in an app whose "copies" turn out not to be text twice in a row (an image viewer, a video player).
Per-app overrides. The settings file can set the mode and a few tuning switches for one app. Quit Seltzer, then edit
%APPDATA%\Seltzer\settings.json (section 17 explains how to edit it safely), for example:
"capture": {
"mode": "automatic",
"appOverrides": [
{ "executable": "slack.exe", "mode": "onClick" },
{ "executable": "code.exe", "preferClipboard": true },
{ "executable": "myeditor.exe", "skipCursorCheck": true, "clipboardDelayReadMs": 135, "skipCtrlInsert": true }
]
}
mode is automatic, onClick, never or always; preferClipboard tries the copy before accessibility;
skipCursorCheck accepts apps whose text cursor is not the standard I-beam; clipboardDelayReadMs waits longer for
apps that write the clipboard slowly; skipCtrlInsert sends only Ctrl+C. A global Never always wins over the
built-in app profiles. The same file accepts per-app paste settings under "paste": { "appOverrides": [...] } with
executable, shortcut (ctrlV, shiftInsert or wmPaste), prePasteDelayMs, keyEventDelayMs, strategy
(renderAck or fixedDelay), quietMs, timeoutMs and fallbackDelayMs; Seltzer already knows the terminals that
paste with Shift+Insert and the slow remote-desktop clients. An unknown key (the log names it) or a value Seltzer cannot
use is ignored and the rest of the file still loads; a delay out of range is used as the nearest valid value. A punctuation mistake is
different: it makes Seltzer ignore the whole file (section 17).
10. What actions do with your clipboard
- Copy-type actions (Copy, "Copied" feedback) leave their result on the clipboard as a normal item.
- Paste-type actions (Uppercase, Title Case, a translation that replaces the text …) paste their result; by default the result stays on the clipboard afterwards (Advanced → Keep pasted results on the clipboard). Turn that off to get your previous clipboard back after every paste; Seltzer then waits until the app has actually read the pasted text before restoring.
- Show-type actions display their result without copying it, unless Advanced → Copy shown results is on.
- When there is nowhere to paste (the selection is not editable), paste-type actions copy the result instead and say "Copied".
- Temporary clipboard use (reading a selection, a paste that is restored) is marked so that clipboard history and cloud clipboard ignore it; intentional results are ordinary clipboard items.
11. Installing and managing extensions
Ways to install
| From | How |
|---|---|
| The Seltzer catalogue | Settings → Actions → Get Extensions: the list of published extensions with an Install button, or the Install button on the web site (which asks first). See The extension catalogue. |
| Selected snippet text | Select the text of a snippet (it starts with a #popclip line, up to 5000 characters): the bar's first button is Install "name". |
| Snippet on the clipboard | Tray menu → Install from Clipboard. |
A .popclipextz package |
Double-click it, or drop it on the Settings window, or Settings → Actions → Tools → Install from File…. After a successful install the file is moved to the Recycle Bin. |
A .popcliptxt snippet file |
Double-click it, or drop it on Settings. |
A .js, .ts or .yaml snippet file |
Right-click → Open with → Seltzer, or drop it on Settings. |
A .popclipext folder |
Right-click the folder in Explorer → Install in Seltzer (on Windows 11 under Show more options), or drop it on Settings, or Tools → Install from Folder…. |
| Snippet text from anywhere | Drag the text onto the Settings window. |
| A PopClip Extensions Directory link | Copy the address of the extension's directory page, then tray menu → Install from Clipboard (or Settings → Actions → Tools → Install from Link…, drag the address onto the Settings window, Seltzer.exe install <link>, or a seltzer://install?link= link on a web page, which asks first). Seltzer downloads the package and checks every file against the directory's published hashes; a match is shown as Directory (hash-verified). |
| A folder you are developing | Settings → Advanced → Load Unpacked Extension… (loaded in place, never copied; see below). |
A new extension is added to the end of your action list and its row flashes in Settings. Installing an extension with the same identifier replaces the old version and keeps its place, copies and settings.
The extension catalogue
Get Extensions lists the extensions published for Seltzer, with what each can do beyond plain actions (for example "Can also use: Shell Script actions, network"). Install adds one to the end of your action list.
Before installing, Seltzer checks the package against a list signed by Seltzer's publisher, so the web site alone cannot change what you get. Because of that signature these extensions install without a trust prompt, even when they run scripts, and show as Seltzer catalogue (signed). If an extension's files change on your computer later, it stops counting as signed and asks for confirmation like any other.
About once a day Seltzer looks for new versions of what you installed from the catalogue. When there are some, the tray menu shows Extension Updates, and Get Extensions shows Update and Update All. Nothing is updated until you click. The whole list is downloaded and compared on your computer, so the site does not learn which extensions you have. Setting Updates to off also stops this check; the list still loads when you open Get Extensions.
Replace appears when you already have an extension with that identifier from somewhere else. Replacing a version verified by the PopClip directory asks first, because the keys and sign-ins saved for it are deleted. Updates keep them.
Trust prompts
Seltzer cannot verify PopClip's signatures, so it treats everything that is not built in, bundled, hash-verified from the directory or signed in the Seltzer catalogue as unverified. An unverified extension that can do more than open links and press keys asks for your confirmation before it installs or runs — when it has:
- shell-script, PowerShell, Command Prompt or AppleScript actions, or the Run in Terminal action;
- any entitlement (network access, code that decides what to offer, or running scripts from JavaScript);
- key presses that use the Windows key.
The prompt shows the extension's name, identifier and source, lists what it has and quotes the developer's own explanation if there is one. Install confirms it; Don't Install cancels. Your confirmation is tied to the exact files: if the extension's files change later, it waits again ("… needs confirmation" on the bar, Review and Enable… in Settings) and nothing of it runs until you confirm. Replacing a hash-verified extension with an unverified version deletes the API keys and sign-ins saved for the verified one (the prompt says so).
Only install extensions from sources you trust: an extension with scripts can do anything your user account can do.
Removing extensions
Delete the extension's last row in Settings → Actions (you are asked first); its files and saved secrets are removed. Built-in and bundled extensions are never uninstalled. For a developer folder, removing it only forgets the folder; the folder itself is never deleted.
Developer folders
Advanced → Load Unpacked Extension… loads a *.popclipext folder (or any folder with a Config.* file) in place.
With Reload developer extensions on change on, Seltzer reloads it about half a second after you save a file; an
extension with scripts or entitlements asks for confirmation again after each change. Extension debug output sends
print(), console.log and script errors to the Debug Console. See Writing Extensions for testing
extensions with Seltzer.exe run.
Extensions from macOS
Most extensions from the PopClip Extensions Directory and the PopClip-Extensions repository work unchanged. Actions that use macOS Services, Shortcuts or AppleScript cannot run on Windows: the extension installs, those actions are hidden from the bar and marked "macOS only" in Settings. Extensions that bridge to Mac-only apps (Bear, Things, OmniFocus …) have nothing to talk to on Windows.
12. The tray icon
Left- or right-click the icon for the menu; double-click opens Settings.
- Appear automatically (check mark), Pause → For 15 minutes / For 1 hour / Until resumed, or Resume (with the pause's end time) while paused.
- Settings…, Install from Clipboard.
- Stop Running Action (available while an action runs): stops every running action, also one whose bar you dismissed and that has no spinner left to click. An action on screen shows "Cancelled"; the others stop silently.
- Restart Detection, Why Didn't It Appear?…, Debug Console… (only while extension debug output is on).
- Download Update … / Restart to Update … when an update is available or ready.
- Quit Seltzer.
The icon is dimmed while Seltzer is off or paused. If Seltzer could not install its input hooks (security software can block them) the icon shows a red "!", the tooltip and a status line at the top of the menu say "Detection unavailable", and Restart Detection moves to the top; this stays until you restart detection.
13. Automation: command line and seltzer:// links
Seltzer.exe accepts commands. When Seltzer is already running they are passed to it and its answer is printed in the
console; otherwise Seltzer starts and runs them.
| Command | Does |
|---|---|
Seltzer.exe |
Starts Seltzer, or opens Settings when it is already running |
Seltzer.exe <file or folder> |
Installs an extension (.popclipextz, .popclipext, .popcliptxt, .js, .ts, .yaml) |
enable / disable / toggle |
Appear automatically on / off / toggle |
pause [minutes] / resume |
Pause (1–10080 minutes, or until resumed) / resume |
appear |
Shows the bar for the current selection, in keyboard mode, like the shortcut |
settings [general\|actions\|app\|advanced] |
Opens Settings at a pane |
run-action <reference> [--text <text>] |
Runs an action of your action list (see below) |
define <term> |
Shows the dictionary popup |
diagnostics / console |
Opens "Why Didn't It Appear?" / the Debug Console |
restart-detection |
Reinstalls the input hooks |
install <path or directory link> / install-clipboard |
Installs an extension |
run <file.js\|ts> [function] |
The JavaScript test harness for extension authors (Writing Extensions) |
unregister |
Removes this copy's file types, Open with entries, the folder verb, the seltzer: scheme and the Start at login entry (run it before deleting a portable copy; the next start registers again) |
quit |
Quits Seltzer |
--help |
Lists the commands |
<reference> is an extension identifier (its first enabled copy in the action list), optionally followed by / and an
action identifier, or the id of a specific copy. Examples: Seltzer.exe run-action app.seltzer.starter.uppercase,
Seltzer.exe run-action app.seltzer.builtin.search --text "weather tomorrow". With --text the action works on that
text instead of the selection, and a paste goes into the app in front.
Links. seltzer://enable, disable, toggle, appear, pause?minutes=30, resume, settings?pane=actions,
define?term=word, diagnostics, console, extensions (opens Get Extensions), run?action=<reference>&text=<text>,
install?extension=<identifier> and install?link=<directory link> can be opened from a browser, a document or a launcher such as a
Stream Deck or AutoHotkey. Because any web page can open such a link, run and install always ask you first (naming the action,
the extension or the directory link), install accepts only an extension of the signed catalogue or a PopClip directory link
(hash-verified), and links can never install anything else, run the test harness or quit Seltzer.
14. Privacy and where your data lives
- No telemetry, no account, no analytics. Seltzer sends nothing about you or your use anywhere.
- Selected text is never logged. Logs and the diagnostics window record lengths, methods and reasons, never the text, the clipboard, option values or keys (unless you turn on Advanced → Log selected text for troubleshooting).
- Network access happens only for: update checks, of the app and of extensions from the catalogue (per your update setting; plain
requests that send no identifier, your version only in the
User-Agent); opening Get Extensions; Iconify icon downloads for extensions that useiconify:icons (Advanced → Icons → Download icons from Iconify turns this off); icon search in the Icon Picker; the Dictionary popup's Wiktionary button when you click it; installing from the catalogue or a directory link you gave; and extensions that declare network access (OpenAI Chat, Shorten Link …) when you use them. Web links open in your browser. - Private browser windows: extensions do not get the page address or title of InPrivate/incognito windows unless you allow it, and links from them open privately. Chrome and other Chromium browsers do not reveal their incognito windows to other programs, though: links from such a window open in a normal window and the page address is shared with extensions like any other window's (Edge InPrivate and Firefox private windows are recognised).
- Secrets (API keys, sign-ins) are encrypted for your Windows account (DPAPI) in your local profile, never in the roaming profile, and never exported. An unverified extension that can run code gets its secrets only after you confirmed it.
| Data | Location |
|---|---|
| Settings | %APPDATA%\Seltzer\settings.json (a backup is kept when a damaged or older file is replaced) |
| Installed extensions | %APPDATA%\Seltzer\Extensions\ |
| API keys and sign-ins | %LOCALAPPDATA%\Seltzer\secrets.dat |
| Logs (7 days, at most 20 files) | %LOCALAPPDATA%\Seltzer\logs\ |
| Caches (icons, Iconify downloads, TypeScript output, dictionary index) | %LOCALAPPDATA%\Seltzer\cache\ |
| The last extension catalogue seen | %LOCALAPPDATA%\Seltzer\catalogue.json |
| The app (installer builds) | %LOCALAPPDATA%\SeltzerApp\ |
| Start at login | HKCU\Software\Microsoft\Windows\CurrentVersion\Run, value Seltzer |
| Record of the one-time WinClip import | %APPDATA%\Seltzer\imported-from-WinClip.json |
File types, "Open with", the folder verb and the seltzer: scheme |
HKCU\Software\Classes |
15. Troubleshooting
"Why didn't it appear?"
Open it from the tray menu, Settings → Advanced → Troubleshooting, or Seltzer.exe diagnostics. It lists the last 200
attempts, newest first: time, gesture, app, result (Shown, Suppressed, No selection, Failed, Superseded), the reason, how
the text was read (Win32Edit, Uia, Msaa, IAccessible2, JavaAccessBridge, ClipboardAlreadyChanged, ClipboardCopy,
AddressBar), capture and show times and the selection's length. Copy Report copies it (without any text) for a bug
report. The top line tells whether detection itself is working.
| Reason shown | What to do |
|---|---|
| "Appear automatically" is off / Paused | Turn it on or resume (tray menu). |
| The trigger mode does not allow this gesture here | You are in When I hold Ctrl or Keyboard shortcut only mode, or in Excel/PowerPoint. Hold Ctrl after selecting, use the shortcut, or change the trigger (per app in Rules → Apps). |
| The suppression key was held | You held Ctrl (or your chosen key) when releasing the mouse. |
| The app is excluded / on the built-in compatibility list / the website is excluded | Rules (section 8). |
| The app runs as administrator | See below. |
| A full-screen game, presentation or busy app was in front | Advanced → Appear in full-screen apps if this is wrong. |
| A Windows surface was in front / the session was locked | By design. |
| The pointer was not a text cursor | Double-click and click-and-hold need the I-beam cursor. Apps with a custom text cursor can be given skipCursorCheck (section 9). |
| The gesture did not look like a text selection | A window move, a scroll-bar drag, a title-bar click or a drag that ended in another window. |
| Nothing was selected / Only white space | Select again. |
| The text could only be read by copying, which is not allowed here | A terminal, an Explorer file view, a remote desktop, or the clipboard mode is Never. In terminals, check that the terminal supports accessibility (Windows Terminal and conhost do). |
| Reading the selection took too long | The app did not answer accessibility requests in time; try again, or give it preferClipboard (section 9). |
| No action applies to this text | None of your enabled actions matched. |
| Extensions were still loading | Only in the first seconds after start. |
| This app kept returning non-text content | Copying is paused for five minutes in that app. |
| The same selection was already shown | Seltzer avoids re-showing a stale selection; select again. |
| Terminals need Shift held | Require Shift in terminals is on. |
| The click in the address bar did not select the whole address | Click again, or select part of the address with a drag. |
Detection stopped working
If the bar stops appearing everywhere — typically after sleep, a remote-desktop session or when security software
interfered — choose Restart Detection (tray menu, Settings → Advanced, or Seltzer.exe restart-detection). Seltzer
also restarts its hooks by itself after resume, unlock and display changes, and when it notices that Windows removed
them. A red "!" on the tray icon means the hooks could not be installed at all; some antivirus or anti-cheat software
blocks low-level input hooks — allow Seltzer in it.
Elevated (administrator) windows
Windows blocks normal programs from reading, typing into or even seeing input in windows that run as administrator (Task Manager, Registry Editor, installers, an admin terminal). Seltzer therefore stays hidden there — the keyboard shortcut too — and shows a one-time tip. Use the app's own menus, or run the app without administrator rights. Running Seltzer itself as administrator is not recommended.
Games and full-screen apps
Seltzer hides in full-screen games (Direct3D exclusive mode), when Windows reports presentation mode or "busy", and in the compatibility-list apps. Games that take the mouse do not produce text selections anyway. If a normal full-screen app (a browser in F11 mode) is mistaken for a game, turn on Advanced → Appear in full-screen apps.
Terminals
Terminals are read through accessibility only — Seltzer never sends Ctrl+C there, because that would interrupt the program running in the terminal. Windows Terminal, PowerShell and cmd windows work; terminals that copy on selection (PuTTY, mintty/Git Bash with copy-on-select) work because the selection is already on the clipboard. Terminals with neither show nothing ("The text could only be read by copying …"). Pasting into terminals uses Shift+Insert where Ctrl+V does not paste. If you select a lot in terminals and find the bar distracting, turn on Require Shift in terminals and hold Shift while selecting when you want it. The terminal inside VS Code is part of VS Code and cannot be recognised as a terminal.
Electron apps (VS Code, Slack, Teams, Discord, Notion …)
Electron apps usually keep their accessibility information switched off, so Seltzer reads their selections with the
guarded copy (mode When needed). If you prefer no clipboard activity there, set the app to onClick in
capture.appOverrides (section 9). In VS Code, a keyboard shortcut with nothing selected may pick up the current line
(VS Code copies the whole line when nothing is selected); Seltzer discards such a copy when there is no mouse selection.
Browsers
Chrome and Edge (version 138 or later) and Firefox (version 145 or later) expose selections directly; older versions and other Chromium-based browsers are read through their accessibility bridge or the guarded copy. The first gesture in a browser that just started can take a little longer while the browser builds its accessibility tree. Search and Open Link open new tabs in the browser the selection came from. Shift asks for a background tab: Seltzer opens the tab and then selects your previous tab again, so the new tab may flash for a moment.
Office
Word and Outlook work through accessibility. In Excel and PowerPoint the bar needs Ctrl held after selecting (or the keyboard shortcut), also while you edit a cell's text, because drags there usually move cells and shapes; Seltzer also never copies an Excel cell selection to read it. Set Excel or PowerPoint to Automatically in Rules → Apps → Trigger per app if you prefer.
Extensions
- An action shows an X: turn on Advanced → Extension debug output and open the Debug Console (tray menu or
Seltzer.exe console) to see the extension's error. - An action that needs an API key opens its settings: enter the key there.
- "… is still running": an extension runs one action at a time; wait or click the spinner to cancel. An action whose bar is gone is stopped by the next click on its extension, by resuming from sleep, or by tray menu → Stop Running Action.
- Shell-script extensions for macOS may call Mac-only programs (
pbcopy,osascript,open); those fail on Windows. Scripts insh/bashneed Git for Windows or WSL and Advanced → Allow sh and bash scripts. - PowerShell actions run with the execution policy bypassed for that script only; a Group Policy that forbids scripts still wins, and the action then reports that.
Keyboard shortcut does nothing
Check its status line in Settings → General (another app may own it), that Seltzer is running (tray icon or Task Manager), that the app in front is not elevated, and that no action is still running on screen (click its spinner, or use tray menu → Stop Running Action).
Seltzer closed unexpectedly
Start it again (Start menu, or Seltzer.exe). After a crash, %LOCALAPPDATA%\Seltzer\logs\Seltzer-<date>-crash.log may hold
the reason when the regular log could not be completed in time; include it (it contains no selected text) in a bug report.
16. Uninstalling
Installer builds: Windows Settings → Apps → Installed apps → Seltzer → Uninstall. This removes the app folder
(%LOCALAPPDATA%\SeltzerApp), the file types, the Explorer folder verb, the seltzer: link scheme and the Start at login
entry.
Portable builds: quit Seltzer from the tray menu, run Seltzer.exe unregister from its folder, then delete the folder.
unregister removes the file types, the Open with entries, the folder verb, the seltzer: scheme and the Start at login entry
of this copy (entries that start another copy, such as an installed Seltzer, stay). By hand, the keys are under
HKEY_CURRENT_USER\Software\Classes — Seltzer.ExtensionPackage, Seltzer.ExtensionSnippet, Seltzer.ExtensionSource,
seltzer, Directory\shell\Seltzer.InstallExtension — and the Seltzer.* values under .popclipextz, .popcliptxt,
.js, .ts and .yaml → OpenWithProgids; Start at login is the Seltzer value under
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.
Your data stays in both cases, so a reinstall finds your settings and extensions. To remove it too, delete
%APPDATA%\Seltzer (settings and installed extensions) and %LOCALAPPDATA%\Seltzer (secrets, logs and caches).
17. The settings file
Everything you set in Settings, apart from API keys and sign-ins, is saved in %APPDATA%\Seltzer\settings.json. You
never need to edit it, but a few expert settings exist only there, and PopClip users may know PopClip's hidden
preferences (defaults write com.pilotmoon.popclip …). This section gives the Seltzer name of each.
Editing it safely
Quit Seltzer (tray menu → Quit). Seltzer does not watch the file and writes all of it again whenever a setting changes, so an edit made while it runs is lost.
Open the file in a text editor. Each key belongs to a section:
appearance.useAccentColormeans the keyuseAccentColorinside the"appearance": { … }block. Change the key there, or add it to that block if it is not in the file yet. To get the classic blue highlight and always paste plain text:"appearance": { "size": 2, "useAccentColor": false }, "clipboard": { "alwaysPastePlainText": true, "keepPastedTextOnClipboard": true }The file is JSON, which is strict about punctuation. One mistake in it makes the whole file unreadable, not just the value you changed (see If Seltzer cannot read the file below), so check that:
- text is in double quotes:
"always", neveralwaysor'always'; true,falseand numbers have no quotes, andtrueandfalseare lower case (Falseis a mistake);- the entries of a block are separated by commas: a key you add after the last entry needs a comma at the end of the line before it;
- a backslash in text is written twice:
"C:\\Tools"; - there is only one block of each name: never add a second
"appearance": { … }at the end of the file.
Comments (
// …) and a comma after the last entry of a block are allowed.- text is in double quotes:
Start Seltzer and check the result. Most keys have a row in Settings (the tables below say where), which shows the value Seltzer read.
As long as the file is valid JSON, Seltzer reads it value by value and never rejects all of it for one bad value:
- A key it does not know is ignored; the log names it. That includes a misspelt name and a key in the wrong
section: there is no
barsection, for example (bar settings are inappearance). The log (Debug Console, or%LOCALAPPDATA%\Seltzer\logs\) then says "settings.json: ignored unknown keys: bar" (names only, never values). The unknown key disappears from the file the next time Seltzer saves settings, so if your edit is gone after you changed something in Settings, compare the name and the section with the tables below. Upper or lower case does not matter. - A value it cannot use (text where a number belongs, a mode name that does not exist, a bar size other than 1–4,
a negative number in
appearanceor a negative delay inpaste.default) is replaced by that setting's default or the nearest valid value. The log (Debug Console, or%LOCALAPPDATA%\Seltzer\logs\) then says "Repaired settings.json", and your edited file is kept assettings.json.corrupt-<date>.bak. - Per-app delays (in
capture.appOverridesandpaste.appOverrides, section 9) are not repaired in the file. A delay out of range, such as a negative one, is used as the nearest valid value each time it is needed. The log says nothing, and the value stays in the file as you wrote it. - PopClip's own names (
ClassicBlue,DeepCapture…) are not read from this file. Use the Seltzer key.
If Seltzer cannot read the file
After a punctuation mistake or a repeated block, Seltzer does not use the file at all. It starts as on the first start,
with the welcome page and default settings, including the default action list. It keeps your file next to the new
one as settings.json.corrupt-<date>.bak (the date and time are in UTC, for example
settings.json.corrupt-20260927-143005.bak) and writes a new settings.json with the defaults. The log
(%LOCALAPPDATA%\Seltzer\logs\) says "settings.json is corrupt". API keys and sign-ins are stored separately and are
kept.
To get your settings back:
- Quit Seltzer.
- In
%APPDATA%\Seltzer, open the newestsettings.json.corrupt-<date>.bakin the text editor and correct the mistake (the list in Editing it safely above). - Save it as
settings.jsonin the same folder, replacing the file with the defaults. In Notepad, choose All files as the file type so that it does not add.txt. - Start Seltzer. If it starts with default settings again, a mistake is left: repeat from step 1 with the newest
.bak.
Seltzer keeps the five newest .corrupt- copies. Changes you made in Settings while the defaults were in use are
replaced by the restored file.
PopClip's hidden preferences
| PopClip preference | Key in settings.json | In Settings |
|---|---|---|
PopEnabled |
activation.appearAutomatically |
General → Appear automatically (also in the tray menu) |
BlockedApps |
rules.excludedApps, a list of { "executable": "notepad.exe" } entries, used while rules.appMode is "exclude" (the default; "include" uses rules.includedApps instead) |
General → Rules → Apps… |
AlwaysRespectPositionSetting |
appearance.alwaysRespectPosition |
Advanced → Bar → Always use the position setting |
MenuSizeLimit |
appearance.maxItemsPerPage (0 = as many as fit) |
Advanced → Bar → Actions per page |
SpellingShowFirst |
spelling.showFirst |
Advanced → Actions and scripts → Show spelling suggestions first |
AlwaysCopyPlainText / AlwaysPastePlainText |
clipboard.alwaysCopyPlainText / clipboard.alwaysPastePlainText |
Advanced → Clipboard → Copy plain text / Paste plain text |
CopyOnSearch / CopyOnOpenLink |
clipboard.copyOnSearch / clipboard.copyOnOpenLink |
Advanced → Clipboard → Copy the text when searching / Copy the link when opening it |
CopyOnShow |
clipboard.copyOnShow |
Advanced → Clipboard → Copy shown results |
KeepPastedTextOnClipboard |
clipboard.keepPastedTextOnClipboard |
Advanced → Clipboard → Keep pasted results on the clipboard |
OtherURLSchemes |
openLink.otherUrlSchemes |
Advanced → Actions and scripts → Extra link schemes for Open Link |
DeepCapture |
capture.mode set to "always"; for one app, the same value in capture.appOverrides[].mode (section 9) |
Advanced → Clipboard → Read selections with the clipboard: Always |
ScreenshotMode |
appearance.screenshotMode |
Advanced → Bar → Screenshot mode |
ClassicBlue |
appearance.useAccentColor set to false |
Advanced → Bar → Use the accent colour: Off |
LoadUnsignedExtensions |
developer.skipTrustPrompt |
Advanced → Developer → Don't ask before installing unverified extensions |
AllowUnsignedReservedPrefixes |
developer.allowReservedPrefixes |
Advanced → Developer → Allow reserved identifiers |
EnableExtensionDebug |
developer.enableExtensionDebug |
Advanced → Developer → Extension debug output |
DisableEntitlementSniff |
developer.disableEntitlementSniff |
Advanced → Developer → Skip the entitlement check |
DisableIconCache |
icons.disableIconCache |
Advanced → Icons → Disable the icon cache |
ExcludedIconSets |
icons.excludedIconSets |
Advanced → Icons → Icon sets hidden from icon search |
IconPickerIncludePalette / IconPickerShowSpecifier |
icons.iconPickerIncludePalette / icons.iconPickerShowSpecifier |
Advanced → Icons → Icon search includes colour icon sets / shows each icon's name |
PopClip's other hidden preferences have no Seltzer equivalent: they are obsolete (MaxNumberOfExtensions,
SearchForLinks, InceptionTextLimit, enable-action-<id>), have no meaning on Windows (NoLoginShell,
DisableBrowserTabScripts, EnableJSInspection) or are not implemented (EnableHttpIcons, IconPickerMonoPosterize,
IconServerOptimize).
Settings without a row in Settings
| Key in settings.json | Default | Meaning |
|---|---|---|
appearance.backdrop |
false |
true gives the bar a translucent (acrylic) background on Windows 11 version 22H2 and later, unless Transparency effects are off or a high-contrast theme is on |
general.uiLanguage |
none | Language for extensions' translated names and texts, for example "de" or "pt-BR"; none uses the Windows display language. Seltzer's own windows are in English only in this version |
scripting.jsMemoryLimitBytes |
0 (64 MB) |
How much memory one run of an extension's JavaScript may keep in use before it is stopped, in bytes (134217728 = 128 MB). Loading an extension may use four times as much, at least 256 MB |
capture.appOverrides |
none | Clipboard mode and reading tweaks for one app (section 9). The same entries hold the per-app trigger set in General → Rules → Apps… (triggerModeOverride); leave that key as it is |
paste.appOverrides |
none | Paste shortcut and timing for one app (section 9) |
paste.default |
built in | The paste fields of paste.appOverrides (without executable) for all apps. Seltzer's built-in entries (terminals, remote-desktop clients, JetBrains IDEs, Brave) and your paste.appOverrides take precedence for their apps, so prefer an override for the one app that loses pastes |
Every other key either belongs to a Settings row (sections 7 and 8), where it is best changed, or is kept by Seltzer
itself (schemaVersion, actions, general.firstRunCompleted, general.starterPackOffered, general.shownTips) and
should be left alone.
PopClip is a trademark of Nicholas Moore (Pilotmoon Software). Seltzer is an independent product and is not affiliated with, endorsed by, or sponsored by Pilotmoon Software.