A privacy-focused Chrome extension that removes tracking parameters from URLs with a single click. Built with WXT framework and TypeScript for a modern, type-safe development experience.
- Manual URL Cleaning: Click the extension icon to clean the current tab's URL
- Comprehensive Tracking Removal: Removes 25+ types of tracking parameters
- Visual Feedback: Shows badge with tracking parameter count
- Copy to Clipboard: Easily copy cleaned URLs
- Privacy First: All processing happens locally - no data collection
- Real-time Analysis: Instantly see what tracking parameters are found
- TypeScript: Fully type-safe codebase with excellent IDE support
- Modern Development: Hot Module Replacement (HMR) for instant feedback
utm_source,utm_medium,utm_campaign,utm_term,utm_content,utm_nooverride
fbclid(Facebook Click ID)igshid(Instagram Share ID)ttclid(TikTok Click ID)tiktok_r(TikTok Referral)li_fat_id(LinkedIn Fat ID)mkt_tok(LinkedIn/Marketo token)
gclid(Google Click ID)yclid(Yandex Click ID)dclid(DoubleClick Click ID)msclkid(Microsoft Click ID)gad_source,gad_campaignid,gbraid(Google Ads)utm_ad,matchtype,campaign_id,ad_id(Campaign tracking)
ck_subscriber_id(ConvertKit)mc_cid,mc_eid(MailChimp)_hsenc,_hsmi(HubSpot)
ref,referral,affiliate_id,click_id,subid,partner_id
- Download from the Chrome Web Store (coming soon)
- Click "Add to Chrome"
- Start cleaning URLs by clicking the extension icon!
-
Clone this repository:
git clone https://github.com/laststance/clean-url.git cd clean-url -
Install dependencies (using pnpm):
pnpm install
-
Start development server:
pnpm dev
-
Load the extension in Chrome:
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select
.output/chrome-mv3directory
- Open Chrome and go to
-
The extension icon should appear in your toolbar with live reloading!
- Navigate to any URL with tracking parameters
- Click the Clean URL extension icon
- Review the tracking parameters found
- Click "Apply Cleaned URL" to navigate to the clean version
- Use the copy button next to the cleaned URL
- Share clean URLs without exposing tracking data
- Right-click on any link
- Select "Clean this link" to copy a cleaned version
- Local Processing Only: All URL cleaning happens in your browser
- No Data Collection: We don't collect, store, or transmit any user data
- No Analytics: No usage tracking or telemetry
- No Remote Requests: Fully offline functionality
- Content Security Policy compliance
- Minimal permissions (only
tabs,storage,contextMenus) - Input validation and sanitization
- Open source and auditable
pnpm testpnpm test:coveragepnpm install:playwright
pnpm test:e2epnpm test:watchpnpm validate # Runs lint, tests, and TypeScript checksclean-url/
βββ wxt.config.ts # WXT framework configuration
βββ tsconfig.json # TypeScript configuration
βββ vitest.config.ts # Vitest testing configuration
βββ entrypoints/ # Extension entrypoints (WXT convention)
β βββ background.ts # Service worker
β βββ popup/ # Popup interface
β βββ index.html # Popup HTML
β βββ main.ts # Popup logic
β βββ style.css # Popup styling
βββ utils/ # Shared utilities
β βββ clean-url-logic.ts # Core cleaning logic (TypeScript)
βββ public/ # Static assets
β βββ icon-*.png # Extension icons
β βββ privacy-policy.md # Privacy policy
βββ tests/ # Test suites
β βββ unit/ # Vitest unit tests
β βββ e2e/ # Playwright E2E tests
β βββ test-urls.json # Test fixtures
β βββ setup.ts # Test setup
βββ .output/ # Build output
βββ chrome-mv3/ # Built extension
TypeScript module containing URL cleaning algorithms and tracking parameter patterns with full type safety.
User interface built with TypeScript, including URL display, cleaning controls, and feedback.
Handles badge updates, context menus, and extension lifecycle using WXT's defineBackground pattern.
- Framework: WXT (Web Extension Tools)
- Language: TypeScript 5.9
- Testing: Vitest (unit) + Playwright (E2E)
- Build: Vite (via WXT)
- Manifest: V3 (auto-generated)
pnpm dev # Start dev server with HMR
pnpm build # Build production extension
pnpm zip # Create distribution ZIP
pnpm typecheck # TypeScript type checking
pnpm lint # ESLint code quality check
pnpm validate # Run all quality checks- Add the parameter to
TRACKING_PARAM_PATTERNSinutils/clean-url-logic.ts - Add test cases to
tests/test-urls.json - Update this README documentation
- Run tests to ensure compatibility:
pnpm test
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes with TypeScript
- Add tests for new functionality
- Run the test suite:
pnpm validate - Commit your changes:
git commit -am 'Add feature' - Push to the branch:
git push origin feature-name - Create a Pull Request
- Use the GitHub Issues page
- Provide detailed reproduction steps
- Include browser version and extension version
- Add example URLs that demonstrate the issue
This project is licensed under the ISC License - see the LICENSE file for details.
- Chrome Web Store (coming soon)
- Privacy Policy
- Bug Reports
- Feature Requests
- Language: TypeScript
- Framework: WXT
- Test Coverage: 93.78%
- Tracking Parameters: 25+ supported
- Build Size: ~40KB
- Tests: 163 passing
- TypeScript migration
- WXT framework integration
- 90%+ test coverage
- Safari extension support
- Custom tracking parameter rules
- Bulk URL cleaning
- URL cleaning history
- Whitelist/blacklist domains
- Inspired by the need for better online privacy
- Built with WXT - next-generation web extension framework
- Powered by Vite for blazing fast builds
- Thanks to the open source community for tools and libraries
Made with β€οΈ for privacy-conscious users
Clean URL helps you browse the web without leaving tracking breadcrumbs behind.