Paulo Emanuel

GeoBlock

Last updated: June 2026

How to Use

  1. Install the extension from the Chrome Web Store.
  2. Click the extension icon to open settings.
  3. Add countries to block or allow.
  4. Optionally, add specific domains to your custom whitelist or blacklist.
  5. Reload the page you want filtered. 

Common Issues & Fixes

  1. GeoBlock isn’t filtering results as expected
 Make sure your extension is enabled for the search engine you're using. Check the Settings → Engines panel to confirm filtering hasn't been turned off for that specific site.

  2. I don’t see any filter controls
 Click the GeoBlock icon in your extensions bar to open the control panel. If you don't see it, pin it from the Extensions menu.

  3. My settings are gone after restarting Chrome
 Ensure you have not cleared your browser data. GeoBlock uses Chrome’s local storage to persist your settings.

Known Limitations

Supports Google (web, images, videos, shopping, news, books, forums, short videos), Bing (web, images, videos, news), DuckDuckGo (web, images), Yahoo Search, Brave Search, Ecosia, Kagi, Startpage, Mojeek, YouTube (home, search, watch sidebar, channel pages, Shorts, playlists), Twitch (directory, category, channel pages), Amazon (search), Reddit (feeds, search, comments), Google News, Flipboard, X (Twitter), TikTok, and LinkedIn (handles, channels, company and member pages). Other search engines are not currently supported.

Privacy Policy

GeoBlock filters search results on Google, Bing, DuckDuckGo, Yahoo, Brave, Ecosia, Kagi, Startpage, Mojeek, YouTube, Twitch, Amazon, Reddit, Google News, Flipboard, X, TikTok, and LinkedIn by country of origin and user-defined rules.

Data stored locally on your device (never transmitted):
  • Settings: enabled state, profiles (each containing blocked countries, filter strength global / per-engine / per-site, engine toggles, blocked languages, whitelist, blacklist, per-country notes, keyword rules, and blocked ASNs / hosting providers), active profile selection, block style, reputation-hint preferences (including per-category and per-engine toggles), per-site snooze timers, and profile schedule rules (day-of-week and time ranges for auto-switching).
  • Filter statistics: aggregate & daily counts of blocked results, broken down by country, domain, channel, and subreddit
  • A geo-IP cache and a YouTube channel-country cache (details below)
  • Temporary mutes (identifiers you "mute for 1 hour" via the per-result menu, auto-expiring)
  • An off-device transmission log: timestamp, destination hostname, and success flag for each Geo-IP request your device makes. Viewable any time from Settings → Off-device transmission log. Stays on this device.

Current site info - Disabled by default. When you turn it on in Settings, GeoBlock sends the active tab's domain name (for example example.com) to ip-api.com so the popup can show the site's country flag, country, city/region, and hosting provider. No URLs, paths, query strings, or page contents are sent. Results are cached locally for 24 hours, so repeat visits to the same domain do not generate repeat requests. The lookup is paused while GeoBlock is snoozed, and it is force-disabled whenever Local-only mode is on.

Chrome Sync — Off by default. Enabling "Sync settings via Chrome account" mirrors your preferences across signed-in devices via chrome.storage.sync, using Chrome's standard encryption model. Statistics and caches are never synced. If your block or allow lists ever exceed Chrome's 8 KB-per-key quota, GeoBlock automatically drops the largest list from the sync mirror and shows a banner in the popup, so partial-sync state is always visible.

Profiles — All profile data (countries, lists, per-site rules, per-country notes, ASN rules) is stored locally. If you turn Chrome Sync on, your profile array is mirrored alongside your other preferences.

Per-site filter strength — Host patterns and their assigned strength live entirely in local storage. No network call is made to evaluate them.
Profile schedule — Schedule rules (day-of-week + start/end time) and the active profile are stored locally. Every minute, GeoBlock checks the rules against your local clock and switches the active profile if a rule matches. No network call.

Per-site snooze — When you snooze a single site for 1 hour (via the right-click menu), the hostname and expiry timestamp are stored locally and dropped on read once expired. No network call.

Reveal mode — Pressing Alt+Shift+R on any supported page toggles a per-tab CSS class that re-surfaces blocked results as semi-transparent ghost cards. The toggle is in-memory only and is not stored anywhere.

Reputation hints — Disabled by default. A bundled, locally-shipped dataset of well-documented state-funded media domains is loaded at startup; when you turn the feature on, GeoBlock matches the source domain of results against that list and shows a small badge. No network call. The dataset is sourced from the Institute for Strategic Dialogue's state-media-profiles repository (MIT licence) and the Media and Journalism Research Center's State Media Monitor (CC BY 4.0); attribution and source URLs are included in the extension's reputation-seed.js.

Right-click menu and keyboard shortcuts — Both add identifiers (domain, channel, subreddit, streamer, @handle, company, member profile, or keyword via kw:term) to the active profile's local blacklist or whitelist, or toggle / snooze GeoBlock globally or just for the current site. Keyboard chords (Alt+Shift+G to open, +E to toggle, +S to snooze, +P to cycle profile, +R to reveal) are documented at chrome://extensions/shortcuts. No data leaves your device.

YouTube channels - Country of origin is read from page-embedded data (ytInitialData) or the channel's About section, then cached locally for 30 days. A bundled dataset of well-known channels ships with the extension for first-run filtering; it is never updated over the network. Nothing leaves your device.

YouTube audio language - Language tags are read from video player metadata and checked locally against your list. Nothing is sent off-device.

Reddit - Subreddit country is inferred from subreddit names and a bundled list. No Reddit API calls or external lookups are made.

Twitch - Streamer logins are read from the page DOM and matched locally against your blacklist. No Twitch API calls or external lookups are made. GeoBlock does not perform Twitch country detection.

Local-only mode - A one-click switch in Settings that disables Geo-IP detection and Chrome sync together. While it is on, no GeoBlock data leaves this device for any reason. Off by default.

Geo-IP Detection — Disabled by default. When enabled, only domain names (e.g. example.com) are sent to ip-api.com to determine country of origin. No URLs, queries, or personal identifiers. Results are cached locally for 24 hours. ip-api.com's privacy policy applies. The same lookup also returns the hosting provider and ASN, which power the optional "Block by hosting provider" feature; no additional network request is made for that.

No analytics or telemetry. GeoBlock does not collect browsing history, search queries, IP addresses, or personal identifiers. The extension includes a voluntary donation link that opens Stripe's website in a new tab; no data is transmitted to Stripe.



Questions or bug reports: pauloemanuel.ng@gmail.com







©2026 Paulo Emanuel