Preview • Features • Installation • Usage • Architecture • Testing
Chromixer is a Chrome extension that provides comprehensive browser fingerprint protection by defending against various tracking techniques used across the internet. It adds session-based noise to fingerprinting vectors and blocks tracking APIs, helping maintain your online privacy without breaking website functionality.
⚠️ This project is under active development.
Popular fingerprinting library detecting each session as a new visitor - protection working as intended
Chromixer implements 12 fingerprint protection techniques with session-based randomization, ensuring your fingerprint changes with every page load.
Canvas & WebGL Rendering
Intercepts canvas methods (toDataURL, toBlob) and adds imperceptible noise to image data. WebGL rendering is protected by spoofing vendor/renderer strings with subtle buffer data variations, maintaining visual quality while preventing GPU-based fingerprinting.
Audio Context
Monitors Audio API calls and adds imperceptible noise to buffer data, disrupting fingerprinting without affecting legitimate audio processing.
Font Enumeration
Detects mass font enumeration attempts (300+ checks threshold) and adds subtle noise to element measurements, preventing font-based tracking.
Hardware & System Information
- Hardware Concurrency: Randomizes CPU core count (2, 4, or 8)
- Screen Dimensions: Subtle variations to screen properties
- Battery API: Completely blocked
- Plugins: Returns empty list
- Media Devices: Returns minimal information only
Network & APIs
- WebRTC: Monitors peer connections to prevent IP leaks
- Client Rects: Imperceptible noise to
getBoundingClientRect() - Gamepad API: Returns empty list
Extension Popup
- Toggle protection globally
- View blocked attempts and tracked sites
- Monitor fingerprinting techniques in real-time
- One-click whitelist management
Badge Indicators
- No badge → Protection active, no detections
- Red
!→ Fingerprinting blocked - Red
✕→ Site whitelisted - Grey
✕→ Protection disabled
git clone https://github.com/arman-bd/chromixer.git
cd chromixer
npm install # Optional, for testing onlyLoad in Chrome:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extensiondirectory
Toggle Protection Click the Chromixer icon and use the toggle switch.
Whitelist Sites If a site breaks, click "Add to Whitelist" in the popup. The page will reload without protection.
View Statistics Open the popup to see blocked attempts and fingerprinting activity.
Version 1.0.0
- 12 fingerprinting protection techniques
- Real-time statistics and detection reporting
- Extension popup with badge indicators
- Whitelist management system
- Comprehensive Playwright test suite
- Per-protection type toggles
- Advanced whitelist patterns (wildcards, regex)
- Settings export/import
- Detailed detection logs
- Timezone and language spoofing
- Custom noise intensity controls
- Fingerprint consistency profiles
- Enhanced statistics dashboard
Design tools with heavy canvas usage may require whitelisting. Canvas-intensive applications might show minor visual artifacts.
extension/
├── background/
│ └── service-worker.js # State management, storage, badges
├── content-scripts/
│ ├── injector.js # ISOLATED world - messaging
│ └── spoofing.js # MAIN world - protection
├── popup/ # UI
├── options/ # Settings
└── utils/config.js # Configuration
tests/
├── fingerprint-protection.test.js
├── extension-tracking-evasion.test.js
└── test-server/
Dual-World Injection
Content scripts use dual-world architecture: injector.js (ISOLATED world) handles messaging, while spoofing.js (MAIN world) applies protection before page scripts load.
Protection Mechanisms
- Early Injection - Executes at
document_start - Proxy Interception - JavaScript Proxy objects intercept APIs
- Native Appearance - Custom
toString()maintains function appearance - Session Randomization - Consistent per page, different per navigation
- Calibrated Noise - Imperceptible to users, disruptive to trackers
npm test # Run all tests
npm run test:headed # Visible browser
npm run test:ui # Playwright UI
npm run test:evasion # Tracking evasion testsCoverage: Extension injection • Canvas • WebGL • Hardware concurrency • Battery • Plugins • Media devices • Gamepad • Screen • Client rects • Fonts
Areas of Interest:
- New protection techniques
- Bug reports and fixes
- Documentation improvements
- Additional test cases
- UI/UX enhancements
Workflow:
- Fork and create feature branch
- Install dependencies:
npm install - Make changes and run tests
- Submit pull request
MIT License • Copyright (c) 2025 Arman Hossain
See LICENSE for details.
This extension is provided for educational and research purposes only. It demonstrates browser fingerprinting techniques and protection mechanisms.
The developer is not liable for any misuse or consequences arising from the use of this software.
By using Chromixer:
- You use this extension entirely at your own risk
- The developer assumes no responsibility for damage, loss, compatibility issues, terms of service violations, or legal implications
- This extension may break websites or interfere with functionality
You are responsible for:
- Understanding how the extension works
- Complying with laws and regulations
- Respecting website terms of service
- Accepting all consequences of use
Provided "AS IS" without warranty of any kind, express or implied.
⭐ Star this project if you find it useful
