A lightweight Chrome extension that saves your most-used information and lets you instantly copy or fill it anywhere with keyboard shortcuts.
- Save Frequently Used Info: Store email addresses, URLs, phone numbers, addresses, and more
- Instant Access: Copy entries with keyboard shortcuts (Ctrl+Shift+1-4 on Windows, Command+Shift+Y/Z/U/I on macOS)
- Organize by Categories: Group entries into custom categories
- One-Click Copy: Paste copied entries directly into any text field
- Cross-Platform: Works on Windows, macOS, and Linux
- Cloud Sync: Entries sync across devices via Chrome sync
Visit the QuickFill Chrome Web Store and click "Add to Chrome"
- Clone this repository
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode (toggle in top right)
- Click Load unpacked and select the
quickfillfolder - The extension will appear in your Chrome toolbar
- Click the QuickFill icon in your Chrome toolbar
- Click the + button
- Enter a label and value
- (Optional) Assign to a category
- Click Save
Use keyboard shortcuts to instantly copy entries:
| Shortcut (Windows) | Shortcut (macOS) | Action |
|---|---|---|
| Ctrl+Shift+1 | Command+Shift+Y | Copy entry #1 |
| Ctrl+Shift+2 | Command+Shift+Z | Copy entry #2 |
| Ctrl+Shift+3 | Command+Shift+U | Copy entry #3 |
| Ctrl+Shift+4 | Command+Shift+I | Copy entry #4 |
- Go to
chrome://extensions/shortcuts - Find QuickFill and customize keyboard shortcuts for each entry
- Changes apply immediately
- Filter entries by category using the category selector
- Create new categories when adding/editing entries
- Switch between "All" and specific categories
quickfill/
├── manifest.json # Extension configuration
├── background.js # Service worker for keyboard shortcuts
├── content.js # Content script for page injection
├── popup.html # Main popup UI
├── popup.js # Popup logic and event handlers
├── popup.css # Styling
├── icons/ # Extension icons
│ ├── icon16.png
│ ├── icon48.png
│ └── icon128.png
└── README.md # This file
- Chrome 88+
- Text editor or IDE
- manifest.json: Declares extension metadata, permissions, and keyboard commands
- background.js: Listens for keyboard shortcuts and triggers copy actions
- popup.js: Handles UI interactions, CRUD operations for entries
- content.js: Injects copy functionality into webpages
storage: Save/sync entries to Chrome StorageclipboardWrite: Copy entries to clipboardactiveTab: Identify the active tab for pastingscripting: Execute copy scripts on webpages
- Keyboard Shortcut Triggered: User presses Ctrl+Shift+1 (or Command+Shift+Y on Mac)
- Background Service Worker Listens:
background.jscatches the command - Entry Retrieved: Service worker fetches the entry from Chrome Storage
- Script Injected: A content script runs on the active tab
- Entry Copied: Content script copies the entry to the clipboard
- Toast Notification: A success message appears on the webpage
- Ensure manifest.json is valid JSON
- Check that all icon files exist (icons/icon16.png, icon48.png, icon128.png)
- Verify the manifest_version is 3
- Go to
chrome://extensions/shortcutsand verify shortcuts are assigned - On macOS, check System Preferences > Keyboard > Shortcuts
- Reload the extension at
chrome://extensions/
- Ensure the root-level
iconsfield exists in manifest.json - Verify icon files exist at the specified paths
- Clear browser cache and reload the extension
- Keyboard shortcuts use Command+Shift instead of Ctrl+Shift to avoid system conflicts
- Command+Shift+1, 2, 3, 4 are reserved for system screenshots, so letters are used instead (Y, Z, U, I)
- Standard Ctrl+Shift combination
- Number keys work directly (1, 2, 3, 4)
- Local Storage: All entries are stored locally in your browser
- Chrome Sync: With Chrome sync enabled, entries sync only to your own Google account
- No Server Upload: QuickFill does not send data to external servers
- Permissions: Only requests permissions necessary for core functionality
Contributions welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
MIT License - see LICENSE file for details
For issues, questions, or feature requests, please open an issue in the repository.