PHPackages                             codemasher/terfblocker5000 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. codemasher/terfblocker5000

AbandonedArchivedLibrary[Authentication &amp; Authorization](/categories/authentication)

codemasher/terfblocker5000
==========================

Twitter TERF blocker. PHP 7.4+

471PHP

Since Aug 10Pushed 3y ago1 watchersCompare

[ Source](https://github.com/codemasher/TERFBLOCKER5000)[ Packagist](https://packagist.org/packages/codemasher/terfblocker5000)[ RSS](/packages/codemasher-terfblocker5000/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

TERFBLOCKER5000
===============

[](#terfblocker5000)

### Improve your twitter experience by mass blocking TERFs etc.

[](#improve-your-twitter-experience-by-mass-blocking-terfs-etc)

TERFs - Trans Exclusionary Radical "Feminists" - are a rather nasty, predominantly (but not limited to) british phenomenon, a [fascist](https://twitter.com/evan_greer/status/1435270525249626123) [trend](https://www.theguardian.com/us-news/commentisfree/2021/oct/23/judith-butler-gender-ideology-backlash) as Judith Butler called it. They pretend to "fight for the rights of woman and girls" but in reality they spread hate and misinformation about trans people. They come in different flavors from "concerned mother" to [outright terrorist](https://twitter.com/christapeterso/status/1455574098717913096) and - much like their [alt-right buddies](https://rationalwiki.org/wiki/Alt-right_glossary) - they use a lot of [dog whistles](https://rationalwiki.org/wiki/TERF_glossary), which is where *TERFBLOCKER5000* steps in.

*TERFBLOCKER5000* scans the user profiles (display name, bio and location) and filters them against a [word list](https://github.com/codemasher/TERFBLOCKER5000/blob/main/config/wordlist.php). Of course it's not perfect, but it catches the majority of the most hateful accounts (~2% of the 1,8 million scanned accounts in the test environment - [get a taste of the vogon poetry](https://gist.github.com/codemasher/8e15e8238bd9e18230ff031a1e87ec8b)).

[![PHP Version Support](https://camo.githubusercontent.com/af7bc9456248950ea55419b2dd033feea292ddf546388d6d1a56cab7c4d096cb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f636f64656d61736865722f54455246424c4f434b4552353030303f6c6f676f3d70687026636f6c6f723d383839324246)](https://www.php.net/supported-versions.php)[![version](https://camo.githubusercontent.com/3a90b5828f7a021f6dbad7d31554fa385dcbf45deb6922581e68d534c7593124/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f64656d61736865722f54455246424c4f434b4552353030302e7376673f6c6f676f3d7061636b6167697374)](https://packagist.org/packages/codemasher/TERFBLOCKER5000)[![license](https://camo.githubusercontent.com/7483d57272993784fc93c41ed3dffc352430be6229fae5231c60a1a7cb5fe371/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f636f64656d61736865722f54455246424c4f434b4552353030302e737667)](https://github.com/codemasher/TERFBLOCKER5000/blob/main/LICENSE)

Documentation (WIP)
-------------------

[](#documentation-wip)

```
// @see https://github.com/chillerlan/php-oauth-providers/blob/main/examples/get-token/Twitter.php
$token    = (new AccessToken)->fromJSON(file_get_contents($CFGDIR.'/Twitter.token.json'));
$wordlist = require $CFGDIR.'/wordlist.php';

$terfblocker
	// import a new twitter oauth token if needed
	->importUserToken($token)
	// set the list of terms to match against (required)
	->setWordlist($wordlist)
	// fetch from replies to a given tweet
	// the 2nd parameter toggles the API request limit enforcement
	->fromMentions('https://twitter.com/Nigella_Lawson/status/1441121776780464132', true)
	// or just the @-mentions of a user
	->fromMentions('https://twitter.com/Lenniesaurus', true)
	// from an advanced search
	// @see https://developer.twitter.com/en/docs/twitter-api/v1/tweets/search/guides/standard-operators
	->fromSearch('#IStandWithJKRowling', true)
	// from the followers of the given account
	->fromFollowers('https://twitter.com/HJoyceGender', true)
	// from the accounts the given account follows
	->fromFollowing('https://twitter.com/HJoyceGender', true)
	// from followers AND following from a list of screen names ()
	->fromFollowersAndFollowing(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'], true)
	// adds each of the given screen_names to the given block list (always, block, never)
	->fromScreenNames(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'], 'always')
	// fetches the retweeters of the given tweet - note that the results of this endpoint
	// may not return *all* but only the *recent* retweeters - whatever that means...
	->fromRetweets('https://twitter.com/fairplaywomen/status/1388442839969931264')
	// fetches all users of the given (private) list
	->fromList('TERFBLOCKER5000', 'always')
	// adds the user IDs from the block list of the currently authenticated user to the profile table
	->fromBlocklist()
	// add user IDs found in the given JSON file
	->fromJSON(__DIR__.'/users.json')
	// exports the block list from the database into a JSON file in the given path
	->exportBlocklist(__DIR__.'/../json/')
;

/**
 * cron methods
 */

$terfblocker
	// adds a list of screen names to the "scan jobs" table
	->cronAddScreenNames(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'])
	// scans followers/following for users in the scan jobs table, @see /cron/fetch_follow.php
	->cronScanFollow();

// the profile fetcher @see /cron/fetch_profiles.php
$terfblocker->cronFetchProfiles();

// rescans the profile table against the given wordlist
$terfblocker
	->setWordlist($wordlist)
	->cronScanByWordlist();

// performs blocks for the currently authenticated user, @see /cron/perform_block.php
$terfblocker->block();
```

 [![QR codes are awesome!](./.github/images/blocked.png)](./.github/images/blocked.png)

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/ada3d048807a11e536645fb87da881170b18f34c0c61fa09e34807c5d79e0b89?d=identicon)[codemasher](/maintainers/codemasher)

---

Top Contributors

[![codemasher](https://avatars.githubusercontent.com/u/592497?v=4)](https://github.com/codemasher "codemasher (41 commits)")

---

Tags

oauthphp-librarytwitter-api

### Embed Badge

![Health badge](/badges/codemasher-terfblocker5000/health.svg)

```
[![Health](https://phpackages.com/badges/codemasher-terfblocker5000/health.svg)](https://phpackages.com/packages/codemasher-terfblocker5000)
```

###  Alternatives

[namshi/jose

JSON Object Signing and Encryption library for PHP.

1.8k99.6M101](/packages/namshi-jose)[league/oauth1-client

OAuth 1.0 Client Library

99698.8M106](/packages/league-oauth1-client)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[league/oauth2-google

Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client

41721.2M118](/packages/league-oauth2-google)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
