A Chrome Extension that filters LinkedIn job listings based on user-defined keywords in job titles and company names. This extension hides jobs you aren't interested in (e.g., "senior", "embedded") right on the LinkedIn Jobs page to help you focus on relevant opportunities.
- π§ Filters job cards by keywords in job titles
- π’ Filters job cards by company names
- β
Uses
chrome.storage.localto persist user filters - π Works with LinkedIn's dynamically loaded job cards (MutationObserver)
- π Automatically refreshes filtering logic when the user navigates between job pages (via URL changes)
- π Provides a simple popup interface to add/remove keywords and companies
- Injected into pages matching
https://www.linkedin.com/jobs/search/* - Listens for DOM mutations (via
MutationObserver) to detect new job cards - Hides job cards whose titles or companies match any of the user-defined filters
- Stores hidden job IDs (so they can be shown again when a keyword is removed)
- Resets visibility when filters are cleared or modified
- Listens for navigation changes (URL changes) and reapplies filters
- Allows users to:
- Add/remove filter keywords
- Add/remove company names
- Stores filters in
chrome.storage.local - Sends messages to the content script to reapply or undo filters
- Monitors tab closures
- When all LinkedIn job tabs are closed, clears
hiddenJobsandhiddenJobsByCompanyfrom storage
- Clone or download this repository.
- Open Chrome and go to:
chrome://extensions/ - Enable Developer mode (top-right corner)
- Click "Load unpacked"
- Select the folder containing this extensionβs files
- Navigate to linkedin job search page and click the extension icon to open the popup
- Allow users to enter regular expressions (e.g.,
/senior|lead/i) for more flexible matching
- Parse additional DOM elements
- Add new inputs in popup for locations or salary ranges
- Track how many jobs were filtered per keyword
- Displaying stats in the popup UI
- Add a global toggle switch to turn filtering on/off without deleting keywords
- Use
chrome.storage.syncinstead ofchrome.storage.local
- β Content script may not run if user navigates from home page to jobs without reloading (unless background injects it)(This is hit or miss sometimes)
- β Job IDs are DOM-based and can break if LinkedIn changes structure
- β Filters are stored in
localstorage and not synced across devices - β Only supports title and company filtering β no location, tags, or job type (yet)
- β Filtering may lag slightly due to LinkedInβs lazy loading
Pull requests are welcome! Please open an issue first to discuss major changes. Suggestions for new features, bug fixes, or UX improvements are highly appreciated.
Feel free to reach out or open an issue if you have questions, ideas, or need help extending the functionality!