Google Search produces excellent results, but using it directly means Google logs your query, your IP address, your browser fingerprint, and correlates it with your Google account if you are signed in. Over time, this builds a detailed profile of your interests, health concerns, political leanings, and habits.
Whoogle is an open-source, self-hosted meta-search proxy that fetches Google search results and strips out all the tracking before displaying them to you. You get Google’s index without Google’s surveillance. No ads, no tracking pixels, no personalization data collection.
How Whoogle Works
Whoogle acts as a middleman between your browser and Google. Your browser sends a search query to your Whoogle instance. Whoogle forwards the request to Google from your server’s IP address (not yours), receives the results, strips ads, tracking scripts, and fingerprinting elements, then returns clean HTML to your browser.
Google sees requests from your server IP — which may be shared among multiple users if you self-host for friends or family. Your personal IP and browser fingerprint are never sent to Google.
Option 1: Deploy with Docker (Recommended)
Docker is the fastest and cleanest way to run Whoogle.
Install Docker if you have not already:
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
Run Whoogle with a single command:
docker run --name whoogle-search \
-d \
-p 5000:5000 \
--restart unless-stopped \
benbusby/whoogle-search
Visit http://localhost:5000 and you have a working Whoogle instance. That is all it takes for local use.
Option 2: Docker Compose with Persistent Config
For a server deployment with persistent settings, use Docker Compose:
mkdir ~/whoogle && cd ~/whoogle
nano docker-compose.yml
version: "3"
services:
whoogle:
image: benbusby/whoogle-search:latest
container_name: whoogle-search
restart: unless-stopped
pids_limit: 50
mem_limit: 256mb
memswap_limit: 256mb
security_opt:
- no-new-privileges
environment:
WHOOGLE_URL_PREFIX: ""
WHOOGLE_RESULTS_PER_PAGE: 10
WHOOGLE_ALT_TW: nitter.net
WHOOGLE_ALT_YT: invidious.snopyta.org
WHOOGLE_ALT_IG: imginn.com
WHOOGLE_ALT_RD: libreddit.kavin.rocks
WHOOGLE_CONFIG_THEME: dark
WHOOGLE_CONFIG_SAFE: 0
WHOOGLE_CONFIG_COUNTRY: US
WHOOGLE_CONFIG_LANGUAGE: lang_en
WHOOGLE_CONFIG_SEARCH_LANGUAGE: en
volumes:
- ./whoogle-config:/config
ports:
- "5000:5000"
Start it:
docker compose up -d
Key Configuration Options
Whoogle is configured through environment variables or through the Settings page in the UI at http://your-server:5000/settings.
Privacy Redirects
One of Whoogle’s best features is automatic privacy redirect — when you click a link to Twitter/X, YouTube, Reddit, or Instagram from search results, Whoogle can redirect you to a privacy-respecting frontend instead:
| Original Site | Privacy Frontend | Env Variable |
|---|---|---|
| Twitter/X | Nitter | WHOOGLE_ALT_TW |
| YouTube | Invidious | WHOOGLE_ALT_YT |
| Libreddit/Redlib | WHOOGLE_ALT_RD | |
| Imginn | WHOOGLE_ALT_IG |
Set these to your preferred frontend instances in the Docker Compose file.
Dark Mode
Set WHOOGLE_CONFIG_THEME: dark in your compose file, or go to Settings → Theme in the UI and select Dark.
Custom CSS
Whoogle supports custom CSS for further UI customization. In Settings → Style:
body {
font-family: 'Source Sans Pro', sans-serif;
}
.result {
border-bottom: 1px solid #333;
padding: 12px 0;
}
Search Safety and Region
WHOOGLE_CONFIG_SAFE: 0 # 0 = off, 1 = moderate, 2 = strict
WHOOGLE_CONFIG_COUNTRY: US # Affects regional search results
WHOOGLE_CONFIG_LANGUAGE: lang_en
Securing Your Whoogle Instance
If you expose Whoogle publicly (so others can use it), add a password to prevent abuse:
environment:
WHOOGLE_CONFIG_DISABLE: false
WHOOGLE_PASS: your-secret-password
With a password set, users must enter it on first visit. The session is then stored in a browser cookie.
Better yet, put Whoogle behind an Nginx reverse proxy with HTTPS:
server {
listen 443 ssl;
server_name search.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/search.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/search.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Obtain the certificate with Certbot:
sudo certbot --nginx -d search.yourdomain.com
Setting Whoogle as Your Default Browser Search Engine
Firefox
- Navigate to your Whoogle instance (e.g.,
http://localhost:5000) - Click the address bar dropdown — Firefox may auto-detect the search engine
- If not: Preferences → Search → Add search engine
- Or install the Add custom search engine extension and add:
- Name: Whoogle
- URL:
http://localhost:5000/search?q=%s
Chrome / Brave / Edge
- Go to Settings → Search engine → Manage search engines
- Click Add
- Fill in:
- Search engine: Whoogle
- Keyword: w (or whatever you prefer)
- URL:
http://localhost:5000/search?q=%s
- Click Add and set as default
Now every search from your address bar goes to Whoogle instead of directly to Google.
Using a Keyboard Shortcut (Keyword Search)
In Chrome/Brave, once you set the keyword (w), you can type w in the address bar, press Tab, and then type your query to specifically invoke Whoogle when you have multiple search engines configured.
Handling Google Rate Limiting
Google occasionally rate-limits or blocks the IP addresses Whoogle uses. Signs of this include CAPTCHA pages or no results. Options to mitigate:
- Use a proxy or Tor — Whoogle supports
WHOOGLE_PROXY_USER,WHOOGLE_PROXY_PASS,WHOOGLE_PROXY_TYPE, andWHOOGLE_PROXY_LOCenvironment variables for proxying requests through a SOCKS5 or HTTP proxy
environment:
WHOOGLE_PROXY_TYPE: socks5
WHOOGLE_PROXY_LOC: 127.0.0.1:9050 # Tor SOCKS proxy
- Self-host on a residential IP — home servers are less likely to be rate-limited than VPS datacenter IPs
- Use a public Whoogle instance temporarily — a list of public instances is maintained at the Whoogle GitHub repository
Compared to Other Private Search Engines
| Search Engine | Self-Hostable | Results Source | Ads | Tracking |
|---|---|---|---|---|
| Whoogle | Yes | None | None | |
| SearXNG | Yes | Multiple | None | None |
| DuckDuckGo | No | Bing + own | Yes (minor) | Minimal |
| Brave Search | No | Own index | Yes (minor) | Minimal |
| Startpage | No | Yes | Minimal |
Whoogle’s advantage over hosted alternatives is that you control the entire stack. Your search queries never touch a third-party server — only your Whoogle instance and Google’s servers.
Self-hosting Whoogle takes about 5 minutes with Docker and gives you Google-quality results with zero behavioral tracking. For anyone who uses Google daily, it is one of the most impactful privacy improvements you can make with minimal effort.