Free clipboard manager for Chrome and Firefox. Saves everything you copy, searches in milliseconds, stays local.
![]() |
![]() |
![]() |
![]() |
Every clipboard extension on the Chrome Web Store has at least one of these problems: hidden paywalls, broad permissions that read all your data, cloud sync that stores your copies on someone else's server, or slow UI that makes you reach for the mouse.
Clipjar has none of them. Everything stays in your browser's local IndexedDB. No network requests. No accounts. No telemetry. No paywall, ever.
- Saves every copy across all tabs to local IndexedDB
- Fuzzy search across thousands of clips in under 10ms
- Auto-tags clips as URL, email, phone, code, JSON, or plain text
- Pin clips you use constantly to a Favorites tab
- Text snippets: define
:sigonce, type it anywhere, it expands - Shows which site each clip came from
- Skips password fields automatically
- Arrow keys, Enter, Tab, Escape, no mouse required
- Follows your system dark/light preference
- Full JSON export and import
- Adjustable text size, with a larger popup when you need it
- Side panel for a persistent view while you browse
- No
clipboardReadpermission needed; clips are captured via the native copy event
Download the latest zip from the releases page.
Chrome / Edge / Brave: download clipjar-chrome-1.1.0.zip, unzip it, then:
- Open
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked, select the unzipped folder
Firefox (128+): download clipjar-firefox-1.1.0.zip, unzip it, then:
- Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on
- Select
manifest.jsoninside the unzipped folder
Pin Clipjar to your toolbar and press Cmd+Shift+V (Mac) or Ctrl+Shift+V (Windows/Linux) to open it.
To update, remove the existing extension, download the new zip from the releases page, and repeat the install steps.
Prerequisites: Node.js 18+ and npm.
git clone https://github.com/justinpbarnett/clipjar.git
cd clipjar
npm install
npm run build:chrome # or build:firefoxThen load the dist-chrome/ (or dist-firefox/) folder as an unpacked extension using the steps above.
| Key | Action |
|---|---|
| Cmd+Shift+V | Open Clipjar |
| Arrow Up/Down | Navigate clips |
| Enter | Copy selected clip to clipboard |
| Escape | Close popup |
| Tab / Shift+Tab | Switch between All, Favorites, Snippets |
| Cmd+S | Pin/unpin selected clip |
| Cmd+Backspace | Delete selected clip |
| Cmd+Shift+1 | Copy most recent clip (without opening popup) |
Shortcuts can be customized at chrome://extensions/shortcuts.
Define shortcuts that auto-expand as you type:
- Open Clipjar, switch to the Snippets tab
- Click + New Snippet
- Set a shortcut (e.g.
:sig) and the expansion text - Type
:sigin any text field on any page and it expands instantly
Open the options page from chrome://extensions/ or right-click the Clipjar icon and select Options.
- Max clipboard history (default 1000)
- Theme (system, light, dark)
- Text size (default, large, extra large)
- Skip password fields (on by default)
- Enable snippet expansion
- Track source URLs
- Default tab
- Import/Export all data as JSON
Content Script (every page)
copies text via window.getSelection() on the copy event
skips password fields
sends to service worker
|
Service Worker
deduplicates via SHA-256 hash
detects content type (URL, email, code, JSON, phone, text)
stores to IndexedDB
prunes history to configured max
|
Popup UI (~380x500 at default text size; scales up for accessibility)
fuzzy search via fuzzysort
virtual-scrolled clip list
full keyboard navigation
writes to clipboard via navigator.clipboard.writeText()
| Feature | Chrome / Edge / Brave | Firefox |
|---|---|---|
| Side panel | chrome.sidePanel |
Not supported |
| Clipboard shortcut | Offscreen document API | Content script relay |
| Minimum version | Chrome 116+ | Firefox 128+ |
| Extension ID | Auto-assigned | clipjar@clipjar.dev |
Everything else (history, search, favorites, snippets, keyboard nav) works identically in both browsers.
npm run dev # Vite dev server with HMR
npm run build:chrome # Production build to dist-chrome/
npm run build:firefox # Production build to dist-firefox/
npm run typecheck # TypeScript type checking
npm run test # Run vitest unit tests
npm run zip # Package dist-chrome/ for Chrome Web StoreAll data is stored in IndexedDB locally. Nothing leaves your browser: no network requests, no analytics, no telemetry.
Text is captured via window.getSelection() inside the native copy event, so clipboardRead isn't needed.
Open source. Read every line.
MIT



