Skip to content

justinpbarnett/clipjar

Repository files navigation

Clipjar

Free clipboard manager for Chrome and Firefox. Saves everything you copy, searches in milliseconds, stays local.

Clipboard history Fuzzy search
Favorites Text snippets

Why

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.

Features

  • 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 :sig once, 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 clipboardRead permission needed; clips are captured via the native copy event

Install

Download the latest zip from the releases page.

Chrome / Edge / Brave: download clipjar-chrome-1.1.0.zip, unzip it, then:

  1. Open chrome://extensions/
  2. Enable Developer mode (top right)
  3. Click Load unpacked, select the unzipped folder

Firefox (128+): download clipjar-firefox-1.1.0.zip, unzip it, then:

  1. Open about:debugging#/runtime/this-firefox
  2. Click Load Temporary Add-on
  3. Select manifest.json inside 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.

Build from source

Prerequisites: Node.js 18+ and npm.

git clone https://github.com/justinpbarnett/clipjar.git
cd clipjar
npm install
npm run build:chrome   # or build:firefox

Then load the dist-chrome/ (or dist-firefox/) folder as an unpacked extension using the steps above.

Keyboard shortcuts

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.

Text snippets

Define shortcuts that auto-expand as you type:

  1. Open Clipjar, switch to the Snippets tab
  2. Click + New Snippet
  3. Set a shortcut (e.g. :sig) and the expansion text
  4. Type :sig in any text field on any page and it expands instantly

Settings

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

Architecture

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()

Browser differences

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.

Development

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 Store

Privacy

All 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.

License

MIT

About

Local clipboard manager for Chrome and Firefox. Private, keyboard-first, no account needed.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors