A powerful Chrome extension that intelligently filters out clickbait, negative, and crisis-related content from YouTube to improve your viewing experience. Features a modern dark-themed interface with real-time filtering statistics and dynamic icon switching.
- π― Smart Content Filtering: Automatically hides videos with clickbait words like "shocking", "unprecedented", "urgent"
- π£ Advanced Clickbait Detection: Filters common clickbait phrases like "You Won't Believe", "What Happens Next"
- π Uppercase Filter: Intelligently detects and hides titles with excessive capitalization (3+ uppercase words)
- ββ Punctuation Filter: Removes titles with excessive exclamation or question marks (3+ in a row)
- βοΈ Configurable Settings: Enable or disable each filter independently with persistent settings
- π Real-time Badge Counter: Extension icon displays live count of blocked videos on current page
- π Per-page Filtering: Counter resets automatically when navigating to new YouTube pages
- π¨ Dynamic Icon Switching: Icon changes color based on filter status (active/inactive)
- π Modern Dark UI: Beautiful dark-themed popup with orange accent colors
- π Performance Optimized: Efficient DOM monitoring with minimal impact on browsing experience
- π Privacy First: All filtering happens locally - no data collection or external servers
-
Clone the repository
git clone https://github.com/RoryGlenn/YoutubeClickBaitFilter.git cd YoutubeClickBaitFilter
-
Install dependencies and build
npm install npm run build
-
Load in Chrome
- Open Chrome and go to
chrome://extensions/
- Enable "Developer mode" (toggle in top-right)
- Click "Load unpacked" and select the
dist/
folder - Pin the extension to your toolbar
- Open Chrome and go to
Coming Soon! This extension will be available on the Chrome Web Store. See Chrome Web Store Preparation for current status.
- Enable/Disable: Click the extension icon to toggle filters
- Configure: Use the popup to enable/disable specific filter types
- Monitor: Badge shows count of blocked videos on current page
- Status: Icon color indicates filter status (colored = active, grey = inactive)
YoutubeClickBaitFilter/
βββ src/ # Source code
β βββ background/ # Background script for badge management
β β βββ background.js # Badge updates and extension lifecycle
β βββ popup/ # Extension popup interface
β β βββ popup.html # Popup interface
β β βββ popup.css # Dark theme styling
β β βββ popup.js # Settings management and icon switching
β βββ content/ # Content scripts for YouTube filtering
β β βββ filter.js # Main filtering logic for YouTube pages
β βββ shared/ # Shared utilities and constants
β β βββ constants.js # Clickbait words and phrases definitions
β βββ manifest.json # Chrome extension manifest (Manifest V3)
βββ assets/icons/ # Extension icons (active and inactive states)
β βββ icon*.png # Active state icons (colored)
β βββ grey/ # Inactive state icons (greyscale)
βββ test/ # Unit tests (48+ tests)
β βββ constants.test.js # Test clickbait definitions
β βββ edge-cases.test.js # Edge case scenarios
β βββ integration.test.js # Integration testing
β βββ performance.test.js # Performance benchmarks
β βββ video-hiding.test.js # Core filtering logic tests
βββ integration-tests/ # Browser-based integration tests
β βββ README.md # Integration testing guide
β βββ test-logic.js # Integration test utilities
β βββ youtube-html-test.html # Interactive testing interface
β βββ youtube-html-test.css # Test interface styling
β βββ youtube-html-test.js # Test interface JavaScript
β βββ complex-sample.html # Complex YouTube structure samples
βββ scripts/ # Build and utility scripts
β βββ build.js # esbuild-based build system
βββ store-assets/ # Chrome Web Store submission materials
β βββ privacy-policy.html # Web Store compliant privacy policy
β βββ store-description.md # Complete store listing content
β βββ screenshot-guidelines.md # Screenshot requirements
β βββ submission-checklist.md # Step-by-step submission guide
βββ docs/ # Comprehensive documentation
β βββ USER_GUIDE.md # Detailed user instructions
β βββ DEVELOPMENT.md # Development workflow guide
β βββ API.md # Complete API reference
β βββ INDEX.md # Documentation index
β βββ PRIVACY_POLICY.md # Privacy policy and data handling
βββ dist/ # Built extension (generated)
βββ manifest.json # Processed manifest for Chrome
βββ background.js # Background script
βββ popup.* # Popup files
βββ filter.bundle.js # Bundled content script
βββ icons/ # Icon assets
- 48+ tests covering all major functionality
- Performance benchmarks (160k+ titles/second processing)
- Edge case handling (empty strings, special characters, etc.)
- Integration testing with real YouTube HTML structures
- Memory usage monitoring and optimization validation
# Full test suite
npm test
# Individual test categories
npm run test:constants # Clickbait word/phrase definitions
npm run test:performance # Speed and memory benchmarks
npm run test:edge-cases # Boundary conditions and edge cases
npm run test:integration # End-to-end filtering scenarios
# Watch mode for development
npm run test:watch
Interactive browser-based tests for validating filter logic against real YouTube content:
# Start local server for integration tests
python3 -m http.server 8000
# Then open: http://localhost:8000/integration-tests/youtube-html-test.html
See Integration Tests README for detailed usage instructions.
- Processing Speed: 160,000+ titles per second
- Memory Usage: <3MB increase during operation
- DOM Query Time: <1ms for typical YouTube page
- Extension Load Time: <100ms startup
- Build Size: ~1.3MB packaged extension
This extension is ready for Chrome Web Store submission with:
- β Manifest V3: Full compliance with latest Chrome extension standards
- β Privacy Policy: Comprehensive privacy documentation
- β Store Assets: Professional descriptions, screenshots guidelines
- β Security: Minimal permissions, no external data transmission
- β Quality: Extensive testing suite with 48+ tests
Current Status: Prepared for submission. See store-assets/
directory for all submission materials.
- Local Processing: All filtering happens on your device
- No Data Collection: Zero user data transmission or tracking
- Minimal Permissions: Only YouTube access and local storage
- Open Source: Full source code available for security review
See Privacy Policy for complete details.
- User Guide - Detailed features and usage instructions
- Development Guide - Setup, workflow, and contribution guidelines
- API Documentation - Complete API reference for developers
- Changelog - Version history and updates
- Node.js (v16+)
- Chrome Browser
- Git
# Clone and setup
git clone https://github.com/RoryGlenn/YoutubeClickBaitFilter.git
cd YoutubeClickBaitFilter
# Install dependencies
npm install
# Build extension
npm run build
# Run tests
npm test
# Format code
npm run format
# Load extension in Chrome for testing
# (Point to dist/ folder in chrome://extensions/)
The extension uses a modern build pipeline:
- esbuild: Fast JavaScript bundling and minification
- Manifest processing: Automatic path resolution and validation
- Asset copying: Icons, HTML, and CSS file management
- ES Modules: Support for modern JavaScript features
# Build production version
npm run build
# Create submission package
cd dist && zip -r ../youtube-clickbait-filter-v1.0.0.zip . -x "*.DS_Store"
# Follow submission guide
# See store-assets/submission-checklist.md for complete instructions
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make changes and add tests
- Run the test suite:
npm test
- Format code:
npm run format
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
See Development Guide for detailed contribution guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- Bug Reports: GitHub Issues
- Feature Requests: GitHub Issues
- Questions: GitHub Discussions
If this extension improves your YouTube experience, please:
- β Star this repository
- π Report bugs or suggest features
- π€ Contribute code or documentation
- π’ Share with others who might benefit
Made with β€οΈ to improve your YouTube experience