Title: CountryLock
Author: topsyde
Published: <strong>November 10, 2025</strong>
Last modified: November 17, 2025

---

Search plugins

![](https://ps.w.org/countrylock/assets/icon-256x256.png?rev=3393258)

# CountryLock

 By [topsyde](https://profiles.wordpress.org/topsyde/)

[Download](https://downloads.wordpress.org/plugin/countrylock.1.0.8.zip)

 * [Details](https://pcd.wordpress.org/plugins/countrylock/#description)
 * [Reviews](https://pcd.wordpress.org/plugins/countrylock/#reviews)
 *  [Installation](https://pcd.wordpress.org/plugins/countrylock/#installation)
 * [Development](https://pcd.wordpress.org/plugins/countrylock/#developers)

 [Support](https://wordpress.org/support/plugin/countrylock/)

## Description

CountryLock provides a simple, lightweight way to allow or block countries from 
accessing your WordPress site.

It’s designed to be **“set it and forget it”** with no upsells, ads, or complex 
configurations.

### ✨ Key Features

 * **Master Toggle:** Enable or disable the firewall with a single click.
 * **Allowed Countries List:** Specify which two-letter country codes (e.g., `US`,`
   CA`) are allowed. Everyone else is blocked.
 * **Admin Bypass:** Logged-in administrators can always bypass the block (toggleable).
 * **IP Allowlist:** A simple list of IPs or CIDR ranges (like `123.45.67.89` or`
   10.0.0.0/8`) that are always allowed.
 * **Block Logging:** See which countries and IPs are being blocked (toggleable).
 * **Zero-Lookup Detection:** Automatically uses Cloudflare (`HTTP_CF_IPCOUNTRY`)
   and other common server-level GEO headers for instant decisions with zero performance
   impact.
 * **Remote Lookup:** As a fallback, it can query an external service (`ipapi.co`)
   if no headers are found.

### External Services

This plugin uses one external service as a fallback to determine a visitor’s country
if no local GEO headers (like those from Cloudflare or a server-level GeoIP module)
are present.

 * **Service:** `ipapi.co`
 * **What it’s used for:** To look up the country of origin for a visitor’s IP address.
 * **Data Sent:** The visitor’s IP address is sent to the service. This happens 
   _only_ if the “Use remote lookup if no geo headers” setting is enabled AND no
   local GeoIP headers are detected.
 * **Service Policies:**
    - [Terms of Service](https://ipapi.co/terms/)
    - [Privacy Policy](https://ipapi.co/privacy/)

## Installation

 1. Upload the `countrylock` folder to the `/wp-content/plugins/` directory.
 2. Activate the plugin through the ‘Plugins’ menu in WordPress.
 3. Go to the new ‘CountryLock’ menu in your admin sidebar.
 4. Configure your allowed countries and toggle the plugin to “Enabled”.

## Reviews

![](https://secure.gravatar.com/avatar/99621e4c444b170df07631796b5ea935643821db64b81a031de9580df4542585?
s=60&d=retro&r=g)

### 󠀁[Does what it says](https://wordpress.org/support/topic/does-what-it-says-1231/)󠁿

 [TamerDesigns](https://profiles.wordpress.org/dribgib/) November 17, 2025

SUPER lightweight — like very minimal code. And it blocks these visits at the edge
which has DRASTICALLY reduced the # of visits from spam countries like china/india/
russia/etc. that I’m receiving on my sites (that are all local US/CA/MX). It’s just
a perfect little addition to reduce hosting costs for my clients.Also — it seems
other plugins do the opposite where you block specific countries, this is arranged
to ALLOW the countries you want, which is way easier with hundreds of countries 
producing spam with AI now.

 [ Read all 1 review ](https://wordpress.org/support/plugin/countrylock/reviews/)

## Contributors & Developers

“CountryLock” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ topsyde ](https://profiles.wordpress.org/topsyde/)

[Translate “CountryLock” into your language.](https://translate.wordpress.org/projects/wp-plugins/countrylock)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/countrylock/), check
out the [SVN repository](https://plugins.svn.wordpress.org/countrylock/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/countrylock/) by
[RSS](https://plugins.trac.wordpress.org/log/countrylock/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.8

 * Fix: Corrected admin page structure to prevent other plugins’ notices from appearing
   inside the UI.

#### 1.0.7

 * Fatal Error fix

#### 1.0.6

 * Refactor: Move inline CSS and JS to external files (tscl-admin.css, tscl-admin.
   js) and enqueue them properly.
 * Refactor: Rename all internal prefixes from `cl_` to `tscl_` to meet WordPress.
   org prefixing standards.
 * Refactor: Remove custom 403 page in favor of the standard `wp_die()` screen for
   better compatibility.
 * Fix: Use `filemtime()` for asset versioning to automatically bust cache.
 * Docs: Add `readme.txt` with external service disclosure.

#### 1.0.5

 * Initial public release.

## Meta

 *  Version **1.0.8**
 *  Last updated **5 months ago**
 *  Active installations **40+**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **6.8.5**
 *  Language
 * [English (US)](https://wordpress.org/plugins/countrylock/)
 * Tags
 * [block](https://pcd.wordpress.org/plugins/tags/block/)[block country](https://pcd.wordpress.org/plugins/tags/block-country/)
   [country](https://pcd.wordpress.org/plugins/tags/country/)[geo](https://pcd.wordpress.org/plugins/tags/geo/)
   [GeoIP](https://pcd.wordpress.org/plugins/tags/geoip/)
 *  [Advanced View](https://pcd.wordpress.org/plugins/countrylock/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/countrylock/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/countrylock/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/countrylock/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/countrylock/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/countrylock/reviews/?filter=1)

[Add my review](https://wordpress.org/support/plugin/countrylock/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/countrylock/reviews/)

## Contributors

 *   [ topsyde ](https://profiles.wordpress.org/topsyde/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/countrylock/)