{"id":369318,"date":"2026-09-22T19:28:01","date_gmt":"2026-09-22T19:28:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/publisherkits-plugintidy\/"},"modified":"2026-09-22T20:54:19","modified_gmt":"2026-09-22T20:54:19","slug":"publisherkits-plugintidy","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/publisherkits-plugintidy\/","author":23505962,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.17.0","stable_tag":"0.17.0","tested":"7.1.2","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"PublisherKits PluginTidy","header_author":"Black and White Digital","header_description":"Audits your installed plugins by real-world usage and risk, records every plugin change, and makes removal safe.","assets_banners_color":"6d798a","last_updated":"2026-09-22 20:54:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/publisherkits.com\/plugintidy","header_author_uri":"https:\/\/publisherkits.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.16.5":{"tag":"0.16.5","author":"publisherkits","date":"2026-09-22 19:27:38","revision":3708000},"0.17.0":{"tag":"0.17.0","author":"publisherkits","date":"2026-09-22 20:54:19","revision":3708091}},"upgrade_notice":{"0.17.0":"<p>Adds the Support Copilot, a Help button that answers PluginTidy questions in place. Read-only, consent first, and it never sends your plugin list or audit results.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3707999,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3707999,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3708056,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3708056,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3708056,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.16.5","0.17.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[49508,247327,23888,18932,255756],"plugin_category":[],"plugin_contributors":[273231],"plugin_business_model":[],"class_list":["post-369318","plugin","type-plugin","status-publish","hentry","plugin_tags-plugin-audit","plugin_tags-plugin-cleanup","plugin_tags-plugin-manager","plugin_tags-site-maintenance","plugin_tags-unused-plugins","plugin_contributors-publisherkits","plugin_committers-publisherkits"],"banners":{"banner":"https:\/\/ps.w.org\/publisherkits-plugintidy\/assets\/banner-772x250.png?rev=3708056","banner_2x":"https:\/\/ps.w.org\/publisherkits-plugintidy\/assets\/banner-1544x500.png?rev=3708056","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/publisherkits-plugintidy\/assets\/icon.svg?rev=3708056","icon":"https:\/\/ps.w.org\/publisherkits-plugintidy\/assets\/icon.svg?rev=3708056","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Most WordPress sites accumulate plugins. A developer installs one for a job that ended three years ago, someone else solves the same problem a different way, and nobody dares turn anything off in case it breaks the site.<\/p>\n\n<p>WordPress can only tell you what is <strong>active<\/strong>. It has no idea what is <strong>used<\/strong>. PluginTidy closes that gap.<\/p>\n\n<p>It looks at each plugin and gathers evidence: whether its shortcodes and blocks appear in your content, whether it has scheduled work, whether the data it stores is still written to, whether anyone opens its settings, whether it is still maintained, and whether several plugins do the same job.<\/p>\n\n<p>Then it tells you what it found \u2014 and shows you every reading behind it, so you can disagree.<\/p>\n\n<h4>It gives you evidence, not verdicts<\/h4>\n\n<p>Every assessment expands into the checks that produced it. Nothing is a recommendation on its own.<\/p>\n\n<ul>\n<li><strong>Confidence is reported separately from the score.<\/strong> A check that could not run lowers confidence rather than counting against a plugin.<\/li>\n<li><strong>It says \"not enough evidence yet\" when that is the truth.<\/strong> Evidence builds up from the day you install it, so a plugin that runs once a quarter is not called idle just because it has been quiet for a fortnight.<\/li>\n<li><strong>Security, backup and shop plugins are handled carefully<\/strong> and are never put forward for removal automatically.<\/li>\n<li><strong>Leave a note on any plugin<\/strong> \u2014 \"powers the jobs board, do not remove\" \u2014 and it appears everywhere that plugin is listed.<\/li>\n<\/ul>\n\n<h4>It knows when it cannot tell<\/h4>\n\n<p>If scheduled tasks are not running on your site, every plugin looks idle. PluginTidy detects that and <strong>excludes<\/strong> scheduled activity from the assessment rather than holding it against everything. The same applies when WordPress.org cannot be reached: it says so, and the confidence figures show it.<\/p>\n\n<h4>It keeps a record<\/h4>\n\n<p>From the moment you install it, PluginTidy records every plugin installed, activated, updated, deactivated or removed \u2014 who did it, when, and why, if you tell it. The history survives the plugin being deleted, so a problem that shows up later can be traced back to the change that caused it.<\/p>\n\n<h4>What is free<\/h4>\n\n<p>Everything above. The full audit, all the evidence, the redundancy findings, the notes, and the complete change log. <strong>Nothing is capped<\/strong> \u2014 an audit that stopped at ten plugins would be absurd for a tool whose whole purpose is having too many.<\/p>\n\n<p><strong>The free version never changes another plugin.<\/strong> It does not delete one, and it does not switch one on or off. It reads, it scores, and it records. When you decide to act, it links you to WordPress's own Plugins screen.<\/p>\n\n<h4>What PluginTidy Pro adds<\/h4>\n\n<p>Pro does two things the free audit deliberately will not: it acts on what was found, and it keeps looking after you stop.<\/p>\n\n<p><strong>Acting on it safely<\/strong><\/p>\n\n<ul>\n<li><strong>Quarantine<\/strong> \u2014 switch a plugin off for an observation window while PluginTidy watches for anything that breaks, with everything reversible.<\/li>\n<li><strong>A complete copy first<\/strong> \u2014 files, database tables and settings are saved before anything is switched off, and restored on request.<\/li>\n<li><strong>Deletion with the leftovers cleaned up<\/strong>, only offering to remove what was actually saved in that copy.<\/li>\n<li><strong>A pre-flight check<\/strong> that reads everything still running on your site for code calling into the plugin you are about to switch off, and says what it found \u2014 including whether it finished looking.<\/li>\n<\/ul>\n\n<p><strong>Keeping it that way<\/strong><\/p>\n\n<ul>\n<li><strong>Scheduled re-audits.<\/strong> Sprawl comes back. Somebody adds three plugins for a project, the project ends, and the plugins stay. The re-audit catches the next wave while it is still small.<\/li>\n<li><strong>Alerts when something changes<\/strong> \u2014 a plugin stops being maintained, or is pulled from the directory. That happens on somebody else's schedule, not yours.<\/li>\n<li><strong>The record gets more useful with age.<\/strong> The change log is free and starts the day you install it. In month eighteen it is the only thing connecting a change to what broke afterwards.<\/li>\n<li><strong>Plugin Audit Reports<\/strong> as PDF and CSV, to hand to a client or an auditor.<\/li>\n<\/ul>\n\n<h4>More from PublisherKits<\/h4>\n\n<p>PluginTidy is one of a small range of tools built for people who actually run publications. Each works on its own, and all are free on WordPress.org:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-biobuilder\/\">PublisherKits BioBuilder<\/a> - stop leaving author profiles blank. When a post is published, BioBuilder finds the author's professional profile and fills in their bio, social handles, job title and employer.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-socialpromoter\/\">PublisherKits SocialPromoter<\/a> - write, post and schedule social promotions from inside the WordPress editor, straight to X, LinkedIn, Facebook Pages and Bluesky.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publisherkits-excerptbuilder\/\">PublisherKits ExcerptBuilder<\/a> - AI-powered excerpt generation using the WordPress AI Client. Write, rewrite or tidy excerpts on demand, or auto-draft them on publish for review.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin contacts <strong>WordPress.org<\/strong> (api.wordpress.org) to find out whether each installed plugin is still maintained and whether it has been removed from the plugin directory.<\/p>\n\n<p>What is sent: the folder name of each installed plugin. Nothing else \u2014 no site address, no email address, no content, no personal data. Answers are cached for twelve hours.<\/p>\n\n<p>This happens when you run an audit. If WordPress.org cannot be reached, the audit still completes and says that this check was skipped.<\/p>\n\n<p>WordPress.org privacy policy: https:\/\/wordpress.org\/about\/privacy\/<\/p>\n\n<p>This plugin also uses <strong>Freemius<\/strong> (freemius.com) to handle licensing, and to offer an optional diagnostic opt-in.<\/p>\n\n<p>What is sent, and only if you accept the opt-in when you activate the plugin: your site address, your WordPress administrator email address, and version information about WordPress, PHP and your site. You can decline this and the plugin works exactly the same. Nothing about your content, your visitors or your audit results is ever sent.<\/p>\n\n<p>If you buy a licence, your licence key is checked with Freemius so the paid features can be switched on. That check happens whether or not you accepted the diagnostic opt-in, because it is what the licence is.<\/p>\n\n<p>Freemius terms of service: https:\/\/freemius.com\/terms\/\nFreemius privacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<p>This plugin also includes the <strong>PublisherKits Support Copilot<\/strong> (bwtlsupport.com, operated by Black and White Trading Ltd) - the Help button on PluginTidy's screens. Nothing is sent until someone with plugin permissions reads the privacy notice in the chat and agrees.<\/p>\n\n<p>What is sent when you ask a question: your question and the recent chat; your site address and, where available, your licence installation identifier, used to authorise the request and apply fair-use limits; the PluginTidy version; the admin screen you are on; and a few non-sensitive diagnostics - how many plugins are active and inactive, whether an audit has run, whether scheduled tasks work, and whether WordPress.org could be reached. <strong>The names of the plugins on your site, your audit results, your notes and your change log are never sent.<\/strong> Choosing \"Send to support\" keeps the conversation as a ticket, with the email you give and your WordPress first and last name.<\/p>\n\n<p>Terms of service: https:\/\/publisherkits.com\/terms\/\nPrivacy policy: https:\/\/publisherkits.com\/privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install through Plugins \u2192 Add New, or upload the folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it.<\/li>\n<li>Open <strong>PluginTidy<\/strong> in your admin menu and run the audit.<\/li>\n<\/ol>\n\n<p>The audit is done in small batches, so it cannot time out on a site with a lot of plugins.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20break%20my%20site%3F\"><h3>Will it break my site?<\/h3><\/dt>\n<dd><p>The free version cannot: it never changes anything. It reads your plugins, your content and your database, and writes only its own records.<\/p><\/dd>\n<dt id=\"why%20does%20it%20say%20%22not%20enough%20evidence%20yet%22%20about%20so%20much%3F\"><h3>Why does it say \"not enough evidence yet\" about so much?<\/h3><\/dt>\n<dd><p>Because it is being honest. Some of what it measures \u2014 whether anyone opens a plugin's settings, whether anything changes \u2014 can only be observed from the day it is installed. Leave it running and the picture fills in. Facts it can establish immediately, such as a plugin having been removed from the WordPress.org directory, are reported straight away.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20data%20anywhere%3F\"><h3>Does it send my data anywhere?<\/h3><\/dt>\n<dd><p>The free version contacts WordPress.org to ask whether your plugins are still maintained, sending only the plugin's folder name. Nothing else leaves your site.<\/p><\/dd>\n<dt id=\"it%20says%20three%20plugins%20do%20the%20same%20job.%20which%20should%20i%20remove%3F\"><h3>It says three plugins do the same job. Which should I remove?<\/h3><\/dt>\n<dd><p>That is deliberately your decision. PluginTidy has no way of knowing which one your content is actually built with, so it names them all and does not guess.<\/p><\/dd>\n<dt id=\"does%20it%20work%20if%20wp-cron%20is%20broken%20on%20my%20site%3F\"><h3>Does it work if WP-Cron is broken on my site?<\/h3><\/dt>\n<dd><p>Yes, and it will tell you that it is. The audit never relies on WP-Cron, precisely because a broken scheduler is one of the things it detects.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.17.0<\/h4>\n\n<ul>\n<li>Added the Support Copilot: a Help button on every PluginTidy screen that answers usage and setup questions in a popup, grounded in documentation matched to your installed version. It is read-only and can never change anything on your site, and it does not send the names of the plugins on your site, your audit results, your notes or your change log. It asks for consent before sending anything, and can pass a conversation to the support desk as a ticket. Ships in both the free and Pro builds.<\/li>\n<li>PluginTidy still uses no AI to audit your plugins. Every reading in the audit is a measurement. The assistant is a separate support service, and it says so in the chat.<\/li>\n<\/ul>\n\n<h4>0.16.5<\/h4>\n\n<ul>\n<li>Plugin information is now read from WordPress.org as JSON rather than as serialised PHP data. What is sent is unchanged: only each plugin's folder name.<\/li>\n<li>Readme: the WordPress.org link in the external services section now points only at the privacy policy it actually is.<\/li>\n<\/ul>\n\n<h4>Earlier versions<\/h4>\n\n<p>Versions before 0.16.5 were distributed directly by PublisherKits and were never listed on WordPress.org.<\/p>","raw_excerpt":"WordPress tells you which plugins are active. It never tells you which are used. PluginTidy works that out, and keeps working it out.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369318"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/publisherkits"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369318"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369318"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369318"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369318"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369318"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}