Filter HuggingFace models by positive/negative keywords with a floating, draggable, persistent UI. Supports infinite scroll, dark mode, auto-filter, multi-language (EN/ES/ZH + 30 Google Translate), and localStorage persistence.
🇬🇧 English · 🇪🇸 Español · 🇨🇳 中文
A powerful userscript to filter Hugging Face models by positive/negative keywords, featuring a floating draggable panel, multi-language support, and automatic infinite scroll detection. Built for ViolentMonkey / TamperMonkey / Greasemonkey.
Floating draggable filter panel — glassmorphism design with dark mode support. Green badge = positive match, red badge = negative match, dimmed = filtered out
localStorage| Browser | Recommended extension |
|---|---|
| Chrome / Edge / Brave | Violentmonkey or Tampermonkey |
| Firefox | Violentmonkey |
| Safari | Userscripts (App Store) |
Option A — GreasyFork (recommended):
Option B — Manual:
huggingface-model-filter.user.jsCtrl+S)Visit https://huggingface.co/models and the floating panel will appear in the top-left corner.
| Positive keywords | Negative keywords | Result |
|---|---|---|
uncensored, qwen |
beta, alpha |
Only uncensored Qwen models, no unstable versions |
gguf, 7b, 8b |
13b, 70b |
Small models in GGUF format |
llama, instruct |
deprecated |
Active LLaMA instruct models |
claude, thinking |
test, old |
Claude models with thinking mode |
mistral, mixtral |
sparse |
Dense Mistral/Mixtral models only |
− button to collapse to a compact barAll settings are automatically saved to localStorage under the key hf_model_filter_config.
{
"positiveKeywords": ["uncensored", "qwen"],
"negativeKeywords": ["beta", "deprecated"],
"hideOnNegative": true,
"dimOnNegative": false,
"highlightPositive": true,
"caseSensitive": false,
"matchFullWord": false,
"showStats": true,
"autoFilter": true,
"locale": "en",
"autoTranslate": false,
"autoTranslateLang": "",
"position": { "x": 20, "y": 100 }
}
| Option | Type | Description |
|---|---|---|
positiveKeywords |
string[] |
Only models containing at least one of these words are shown |
negativeKeywords |
string[] |
Models matching these words are hidden or dimmed |
hideOnNegative |
boolean |
true = hide completely; false = show with red badge |
dimOnNegative |
boolean |
true = dim to 15% instead of hiding |
highlightPositive |
boolean |
true = green border and badge on positive matches |
caseSensitive |
boolean |
Distinguish between uppercase and lowercase |
matchFullWord |
boolean |
Prevent partial matches: "test" won't match "testing" |
showStats |
boolean |
true = show the live stats counter |
autoFilter |
boolean |
true = apply filters automatically while typing |
locale |
`"en" \ | "es" \ |
autoTranslate |
boolean |
true = enable auto-translation via Google |
autoTranslateLang |
string |
ISO language code for the target language (e.g. fr, ja, de) |
position |
{x, y} |
Saved panel position in pixels |
| Code | Language |
|---|---|
en |
English |
es |
Español |
zh |
中文 (简体) |
The auto-translate selector includes 30 languages: English, Español, 中文, Français, Deutsch, Português, Italiano, 日本語, 한국어, Русский, العربية, हिन्दी, Nederlands, Polski, Türkçe, Tiếng Việt, ไทย, Svenska, Čeština, Ελληνικά, עברית, Українська, Română, Magyar, Dansk, Suomi, Norsk, Bahasa Indonesia, Bahasa Melayu, বাংলা.
Translations are cached in
localStorage(hf_filter_trans_cache) to avoid repeated API calls.
├── huggingface-model-filter.user.js # Main script (~1148 lines, vanilla JS)
├── README.md # This file (English documentation)
├── README_ES.md # Documentación en español
├── README_ZH.md # 中文文档
└── LICENSE # MIT License
GM_addStyle from Violentmonkey / Tampermonkey only for inline CSS.To debug the script in your browser:
F12 → Console tab)HF Filter:config and translationCache directly from the consoleapplyFilter() to inspect the model cards DOM| Problem | Solution |
|---|---|
| Panel doesn't appear | Verify the URL matches https://huggingface.co/models* |
| Filters don't apply | Click Apply Filters or wait ~800ms after typing |
| ALL models are hidden | Check that your positive keywords aren't too restrictive. Reload the page |
| Panel blocks content | Drag it to another corner; position is saved automatically |
| Language doesn't change | Force reload with Ctrl+Shift+R to clear the userscript cache |
| Google Translate doesn't work | May be blocked by your region or adblocker. The UI still works in the native language |
config.negativeKeywords)git checkout -b feature/my-new-feature)git commit -am 'Add some feature')git push origin feature/my-new-feature)Ctrl+Shift+F to focus the panel)This project is licensed under the MIT License.
🙏 Acknowledgments
Made with ❤️ for the open-source AI community