Skip to content
This repository was archived by the owner on Mar 27, 2026. It is now read-only.

hamr0/polarized

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polarized

See who's selling your data, who owns what you're reading, and where the political money flows.

The internet looks like millions of independent sites. It's not. A handful of conglomerates own the platforms, a handful of data brokers sell your profile, and political campaigns pay those brokers to target you. Polarized makes this visible — one popup, per page, real data.

No AI, no cloud, no accounts — everything runs locally in your browser.

What it shows

What you see What it means
Owned by Who owns the site you're visiting — the conglomerate, billionaire, or state behind it
Seller A CA-registered data broker loading code on this page. Legally classified as selling consumer data
Tracker An ad/tracking company loading code on this page. Collects data but not confirmed selling it
Political $ (direct) Real FEC disbursement records — political campaigns paid this company directly. "Direct" means only what's traceable in federal filings; actual spending flows through middlemen and is likely much higher
Cross-site tracking At least one company on this page uses fingerprinting to follow you across websites
Company context What the company is known for — "Google Search, Gmail, YouTube" or "Retargeted ads that follow you across sites"
Opt out Direct link to the company's opt-out page

How it works

When you visit a page, Polarized intercepts third-party network requests and looks up each domain in a unified dataset built from 5 public sources. One lookup, one file, all name resolution done at build time.

Sellers vs trackers: Not every company that tracks you sells your data. "Seller" means the company is in the California Data Broker Registry — a legal admission. "Tracker" means DuckDuckGo identified their code as advertising/tracking. Both are shown; sellers are weighted more heavily.

Only intrusive trackers shown. CDN, fonts, analytics, consent tools — all filtered out. If it's not advertising, ad tracking, or fingerprinting, it doesn't appear.

Deduped by company. If Google has 15 tracker domains on a page, you see "Google" once.

The political money chain

A campaign wants to target "suburban women aged 35-50 in swing states." The money flows:

Campaign → Consultant → Ad agency → DSP (The Trade Desk) → Ad exchange (Magnite) → Publisher (CNN)

In FEC filings, the payment shows up under the consultant's name. Magnite, Zeta Global, The Trade Desk — they handled the money and data but don't appear in the filing.

The "$X direct" label in the popup means: this is what FEC records show as direct payments to this company from political committees. The real spending through middlemen is invisible and likely much higher.

When a company shows no political $, it doesn't mean they're not involved — it means there's no direct FEC paper trail under their name.

How scoring works

The exposure score (0–100) measures how aggressively this page profiles you.

Signal Weight Why
Data seller present 8 pts each (max 45) Registered data broker — sells your data
Tracker present 2 pts each (max 15) Collecting data, not confirmed selling
Political spending connection 7 pts each (max 20) Your data may feed political targeting
Cross-site tracking detected 10 pts They follow you across websites
All three combined +10 pts bonus Sellers + political + cross-site = worst case
Score Badge Meaning
0 No intrusive tracking detected
1–30 Green Low exposure. Few trackers, no sellers
31–60 Yellow Moderate exposure. Sellers or political connections present
61–100 Red High exposure. Multiple sellers, political money, cross-site tracking

Badge: Shows seller count on the page (red). If no sellers but trackers present, shows ! (yellow). No intrusive tracking = no badge.

Data sources

All sources are public. All merged into one unified lookup at build time.

Source What it provides Records How it's used
DuckDuckGo Tracker Radar Tracker domain → company, categories, fingerprinting score ~10K US domains Core detection — identifies which companies load code on the page
DDG Entities Company → all owned domains, parent relationships ~19K entities Groups tracker domains under parent companies
CA Data Broker Registry Companies registered as data brokers ~600 brokers "Seller" flag — fact, not inference
FEC API Schedule B disbursements — who paid whom 105 companies, real $ Political spending — queried all 600 brokers against FEC records
Big-Ass-Data-Broker-Opt-Out-List Opt-out URLs per broker ~60 entries Direct opt-out links
Wikidata Company → owner/parent relationships ~4K domains Site ownership — who owns the site you're visiting
Curated Major news/commerce/tech site ownership ~150 sites Fills gaps Wikidata misses (Al Arabiya, Haaretz, Iran Intl, etc.)

What's fact vs inference

Element Type Source
"This company is tracking you" Fact DDG detected their code loading on the page
"Seller" label Fact Company is in the CA Data Broker Registry
"Tracker" label Fact DDG categorizes them as advertising/tracking
Political spending amount Fact FEC Schedule B disbursement records (real API data)
"Owned by" Fact Wikidata + curated public records
Company role description Context Curated descriptions of what each company does
"Cross-site tracking detected" Inference At least one tracker has a DDG fingerprinting score >= 1
Profile value estimate Estimate Based on industry averages — labeled as estimate
"direct" on political $ Clarification Only FEC-traceable spending; real amount flows through middlemen

Unified lookup

All data is merged into one file at build time: chrome-extension/data/lookup.js. Each entry carries a sources array showing where each piece of data came from:

"doubleclick.net": {
  "company": "Google LLC",
  "displayName": "Google",
  "categories": ["Ad Motivated Tracking", "Advertising"],
  "fingerprinting": 3,
  "parent": "Alphabet",
  "knownFor": "Google Search, Gmail, YouTube, Android",
  "optout": "https://adssettings.google.com",
  "sources": ["ddg", "opt"]
}

Source codes: ddg (DuckDuckGo), ca (CA registry), fec (FEC API), opt (opt-out list), own (ownership data).

Try it now

Chrome

  1. Download this repo (Code → Download ZIP) and unzip
  2. Go to chrome://extensions and turn on Developer mode (top right)
  3. Click Load unpacked → select the chrome-extension folder
  4. Browse any site and click the extension icon

Project structure

polarized/
├── chrome-extension/          # Load this folder in Chrome
│   ├── manifest.json
│   ├── background.js          # Service worker — one importScripts, one resolve()
│   ├── data/
│   │   └── lookup.js          # Unified lookup (13K entries, 2MB, all sources merged)
│   ├── popup/
│   │   ├── popup.html
│   │   └── popup.js
│   └── icons/
├── scripts/                   # Build scripts (not part of extension)
│   ├── download-sources.js    # Download raw data from DDG, CA, GitHub
│   ├── build-domains.js       # Process DDG → data/domains.js
│   ├── build-brokers.js       # Process CA CSV → data/brokers.js
│   ├── build-political.js     # Query FEC API → data/political.js (real data)
│   ├── build-optout.js        # Process opt-out list → data/optout.js
│   └── build-lookup.js        # Merge all sources → data/lookup.js + extension copy
├── data/                      # Intermediate build outputs
├── raw/                       # Downloaded raw data (gitignored)
└── docs/                      # Design docs

Rebuilding data

# 1. Download raw sources (~5 min, clones DDG repo)
node scripts/download-sources.js

# 2. Build intermediate files
node scripts/build-domains.js
node scripts/build-brokers.js
node scripts/build-political.js    # Queries FEC API — needs api.data.gov key
node scripts/build-optout.js

# 3. Merge everything into one lookup
node scripts/build-lookup.js       # Outputs chrome-extension/data/lookup.js

FEC data uses api.data.gov key (free, instant signup). Falls back to DEMO_KEY (40 calls/hour) if no key configured.

Known limitations

  • CA registry only: "Seller" flag depends on California registration. Many companies that sell data aren't registered.
  • FEC is federal only: State-level political spending, dark money through 501(c)(4)s, and payments through intermediaries are not captured.
  • Political $ shows direct payments only: Most political ad spend flows through consultants and agencies — the broker's name rarely appears in FEC filings.
  • Site ownership is curated + Wikidata: Coverage is good for major sites (~4K domains) but won't cover every site.
  • US-centric political data: FEC is US federal elections only. Trackers are global but the political money story is US-specific.
  • DDG Tracker Radar is CC BY-NC-SA 4.0: Non-commercial use only.

Everything runs locally in your browser. No data leaves your device.

About

See who's selling your data, who owns what you're reading, and where the political money flows.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors