{"id":13512492,"url":"https://github.com/nsfw-filter/nsfw-filter","last_synced_at":"2025-05-15T11:09:29.079Z","repository":{"id":40456725,"uuid":"278011746","full_name":"nsfw-filter/nsfw-filter","owner":"nsfw-filter","description":"A free, open source, and privacy-focused browser extension to block “not safe for work” content built using TypeScript and TensorFlow.js.","archived":false,"fork":false,"pushed_at":"2024-08-07T04:44:06.000Z","size":51244,"stargazers_count":1717,"open_issues_count":58,"forks_count":179,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-05-08T01:01:59.082Z","etag":null,"topics":["chrome-extension","google-chrome-extension","hacktoberfest","nsfw-classifier","nsfw-detection","nsfw-filter","nsfw-recognition","tensorflow","tensorflowjs","typescript"],"latest_commit_sha":null,"homepage":"https://nsfw-filter.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nsfw-filter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"pottekkat","patreon":"nsfwfilter"}},"created_at":"2020-07-08T06:46:37.000Z","updated_at":"2025-05-07T17:55:17.000Z","dependencies_parsed_at":"2024-11-19T06:01:46.198Z","dependency_job_id":null,"html_url":"https://github.com/nsfw-filter/nsfw-filter","commit_stats":{"total_commits":290,"total_committers":16,"mean_commits":18.125,"dds":0.7862068965517242,"last_synced_commit":"231047bc8d11c7ba2daa2d055a94577975bb4edb"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsfw-filter%2Fnsfw-filter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsfw-filter%2Fnsfw-filter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsfw-filter%2Fnsfw-filter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsfw-filter%2Fnsfw-filter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nsfw-filter","download_url":"https://codeload.github.com/nsfw-filter/nsfw-filter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253754384,"owners_count":21958854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extension","google-chrome-extension","hacktoberfest","nsfw-classifier","nsfw-detection","nsfw-filter","nsfw-recognition","tensorflow","tensorflowjs","typescript"],"created_at":"2024-08-01T03:01:55.778Z","updated_at":"2025-05-15T11:09:29.044Z","avatar_url":"https://github.com/nsfw-filter.png","language":"TypeScript","funding_links":["https://github.com/sponsors/pottekkat","https://patreon.com/nsfwfilter"],"categories":["TypeScript"],"sub_categories":[],"readme":"# NSFW Filter\n\nA free, open source, and privacy-focused browser extension to block \"not safe for work\" content.\n\nBuilt using TypeScript, TensorFlow.js, and [NSFWJS](https://github.com/infinitered/nsfwjs).\n\n[Download now from chrome web store!](https://chrome.google.com/webstore/detail/nsfw-filter/kmgagnlkckiamnenbpigfaljmanlbbhh)\n\n![Demo of using NSFW Filter](demo/images/demo.gif)\n\n# Table of contents\n\n- [NSFW Filter](#nsfw-filter)\n- [Table of contents](#table-of-contents)\n- [Usage](#usage)\n- [Development](#development)\n- [Contribute](#contribute)\n\n# Usage\n\nYou can install the extension from the [chrome web store](https://chrome.google.com/webstore/detail/nsfw-filter/kmgagnlkckiamnenbpigfaljmanlbbhh) or [source](#development).\n\nWhen you load web pages, NSFW Filter will first hide all images and only show those classified as safe.\n\nTo customize the extension, click the icon in your extensions tab.\n\n![NSFW Filter popup](demo/images/popup-window.png)\n\n# Development\n\nInstall dependencies by running:\n\n```sh\nnpm install\n```\n\nThen build the project:\n\n```sh\nnpm run build\n```\n\nTo run the tests:\n\n```sh\nnpm run test\n```\n\nTo run a development version with live reload, run:\n\n```sh\nnpm run dev:chrome\n```\n\nOr open Google Chrome and open the Extension Management page by navigating to ```chrome://extensions``` or by opening Settings and clicking Extensions from the bottom left.\n\nEnable Developer Mode by clicking the toggle switch next to Developer mode.\n\nClick the \"Load Unpacked\" button and select the extension directory(```.../dist```).\n\n![Load extension to Chrome in developer mode](./demo/images/install-instructions.png)\n\n# Contribute\n\nPlease check the [**Contributing Guidelines**](https://github.com/navendu-pottekkat/nsfw-filter/blob/master/.github/markdown/CONTRIBUTING.md) before contributing.\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/YegorZaremba\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/31797554?v=4?s=100\" width=\"100px;\" alt=\"Yegor \u003c3\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYegor \u003c3\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=YegorZaremba\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-YegorZaremba\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-YegorZaremba\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://navendu.me\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/49474499?v=4?s=100\" width=\"100px;\" alt=\"Navendu Pottekkat\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNavendu Pottekkat\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=navendu-pottekkat\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#content-navendu-pottekkat\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=navendu-pottekkat\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#design-navendu-pottekkat\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-navendu-pottekkat\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/anonacc\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/64102225?v=4?s=100\" width=\"100px;\" alt=\"anonacc\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eanonacc\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Aanonacc\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/abhirammltr\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/32649851?v=4?s=100\" width=\"100px;\" alt=\"Abhiram V V\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAbhiram V V\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=abhirammltr\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Aabhirammltr\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-abhirammltr\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yxlin118\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/54916304?v=4?s=100\" width=\"100px;\" alt=\"yxlin118\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyxlin118\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Ayxlin118\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-yxlin118\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://clay.sh\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/16675291?v=4?s=100\" width=\"100px;\" alt=\"Clay McGinnis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eClay McGinnis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/pulls?q=is%3Apr+reviewed-by%3AClayMav\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.youtube.com/channel/UCPGv2tVqEt6iBFnnMTjnRBA\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/6668371?v=4?s=100\" width=\"100px;\" alt=\"Brady Dowling\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrady Dowling\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-bradydowling\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://littlebluelabs.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/32261?v=4?s=100\" width=\"100px;\" alt=\"Mike Crittenden\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMike Crittenden\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=mikecrittenden\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/garfieldbanks\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/12904270?v=4?s=100\" width=\"100px;\" alt=\"garfieldbanks\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003egarfieldbanks\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Agarfieldbanks\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TitusRobyK\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/32787952?v=4?s=100\" width=\"100px;\" alt=\"Titus Roby K\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTitus Roby K\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3ATitusRobyK\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/hsusanoo\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/35850056?v=4?s=100\" width=\"100px;\" alt=\"Haitam\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHaitam\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Ahsusanoo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/lizhendong128\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/24618122?v=4?s=100\" width=\"100px;\" alt=\"lizhendong128\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003elizhendong128\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Alizhendong128\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Woctor-Dho\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/25572322?v=4?s=100\" width=\"100px;\" alt=\"Woctor-Dho\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWoctor-Dho\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-Woctor-Dho\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/miaokun-normal\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/67724210?v=4?s=100\" width=\"100px;\" alt=\"miaokun-normal\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emiaokun-normal\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Amiaokun-normal\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://christopher-bradshaw.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1205871?v=4?s=100\" width=\"100px;\" alt=\"Christopher Bradshaw\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristopher Bradshaw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Akitsune7\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/wingman-jr-addon\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/55339824?v=4?s=100\" width=\"100px;\" alt=\"wingman-jr-addon\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ewingman-jr-addon\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-wingman-jr-addon\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Andrewrick1\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/31154843?v=4?s=100\" width=\"100px;\" alt=\"Sagar paul\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSagar paul\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=Andrewrick1\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/govza\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1425574?v=4?s=100\" width=\"100px;\" alt=\"Rasul\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRasul\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Agovza\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=govza\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Gother01\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/65875436?v=4?s=100\" width=\"100px;\" alt=\"Aldulkadir Beceri\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAldulkadir Beceri\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3AGother01\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://portfolio.silloi.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/38321101?v=4?s=100\" width=\"100px;\" alt=\"silloi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esilloi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-silloi\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/issues?q=author%3Asilloi\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nsfw-filter/nsfw-filter/commits?author=silloi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsfw-filter%2Fnsfw-filter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnsfw-filter%2Fnsfw-filter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsfw-filter%2Fnsfw-filter/lists"}