Comparison
X-Pat vs X-Posed, and the rest of the shelf.
About twenty extensions put a country flag next to an X handle. Three of them have meaningful numbers of users. Here is what each one actually does, what X-Pat does differently, and the three things X-Posed does better — which is the part most comparison pages leave out.
Feature by feature
Every cell comes from a public store listing or a public repository, read on 2 August 2026. A dash means the listing does not say — for the two closed-source extensions that is not the same as a no, and it would be unfair to draw it as one.
| Feature | X-Pat | X-Posed | Flags & Time | Region Blocker |
|---|---|---|---|---|
| Country shown inline, without opening a menuRead from X's own “About this account” data, not guessed from an IP address. | yes | yes | yes | not stated |
| Warning when X cannot verify the locationX marks some accounts as having a location it cannot verify. That is X declining to confirm the country — not proof of a VPN, and nobody here can prove one. | yes | yes | yes | not stated |
| Sign-up source — Apple, Google Play or web | yes | yes | not stated | not stated |
| Account age | yes | yes | not stated | not stated |
| Handle-change count | yes | yes | not stated | not stated |
| Hide or collapse by country and regionCollapse behind a “Show” button is the default here, because a timeline that silently drops posts is one you cannot audit. | yes | yes | yes | yes |
| Language filterX's per-post language field is unreliable enough that shipping a filter on top of it generates bug reports. Deliberately not built yet. | no | yes | not stated | not stated |
| Always-show allowlist and per-rule exceptions | yes | yes | not stated | not stated |
| Shared cache, so flags survive the rate limitX allows one browser about 50 profile lookups per 15 minutes. Without a shared cache that ceiling is the whole experience. | yes | yes | yes | no |
| Cache server source publishedThe server that receives contributions, not just the extension that sends them. Ours is in the same repo, with deploy docs — you can read it, or run your own. | yes | no | no | not applicable |
| Cached entries cross-checked between installsOurs keeps per-install votes and serves the consensus, with a confidence threshold you can raise. X-Posed documents storing the last accepted value for a handle. | yes | no | not stated | not applicable |
| Extension source published | yes | yes | no | no |
| Automated test suite in the repoUnit, end-to-end against recorded traffic, and visual regression. The number is what CI runs on every push. | 518 tests518 tests | nonenone | not applicable | not applicable |
| Firefox | no | yes | yes | no |
| iPhone / iPad companion app | no | yes | no | no |
Where X-Posed is ahead
X-Posed is the mature one
Roughly 7,000 Chrome installs against our handful, four years of releases, and a community cache holding millions of profiles where ours holds thousands. A bigger cache genuinely means more instant flags on day one. That is a real advantage and it is not close.
It ships on more surfaces
Firefox desktop, Firefox for Android, and a companion iPhone app. X-Pat is Chromium-only today — Chrome, Edge, Brave, and Lemur on Android. Firefox is planned, iOS is not.
It has a language filter
We do not, on purpose. X's per-post language field is wrong often enough that filtering on it produces posts vanishing for no visible reason. That is a defensible call rather than a missing feature — but if filtering by language is what you came for, X-Posed has it and we do not.
What actually differs
Everything in this category depends on a shared cache. X allows one browser roughly fifty profile lookups every fifteen minutes, and a busy thread has more accounts than that — so every extension here that keeps working past the limit does it by reading a cache other people filled. The question is not whether there is a server. It is what that server is allowed to do.
Ours is published, and you can run your own. The cache server is in the same repository as the extension, with deployment docs for both Cloudflare Workers and a plain VPS. X-Posed publishes its extension — genuinely, and under MIT — but not the Worker its contributions are sent to. That is the piece you cannot check by reading the code you installed.
A cached answer here needs corroboration. Contributions are stored as per-install votes and the consensus is what gets served, with a confidence threshold you can raise in the options page. X-Posed's own documentation describes storing the last accepted value for a handle, which means the most recent contributor decides. Both designs are honest about the same underlying problem: neither server can prove a contribution really came from X.
Lookups carry no identifier. Reads are an unsigned list of handles, so the server has nothing to join them against and cannot build "this install looked at these accounts". Counting readers would take one line and would end that property, which is why the published stats undercount on purpose.
And the rate limit is rationed rather than raced: background work stops at seventy percent of the window, so the last fifteen lookups are still there for accounts you actually hover. The mechanism is drawn out on the homepage.
Sources
Read on 2 August 2026. Install counts and features move; if something below is out of date, it is an error rather than a position, and the issue tracker is the fastest way to have it corrected.
- X-Posed: Account Location & Device Info — source: xaitax/x-account-location-device
- X/Twitter Location Flags, Time & Blocker — source not published
- X Region Blocker — source not published