{"id":377120,"date":"2026-09-30T14:06:48","date_gmt":"2026-09-30T14:06:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/harvify-database-cleaner\/"},"modified":"2026-09-30T14:06:16","modified_gmt":"2026-09-30T14:06:16","slug":"harvify-database-cleaner","status":"publish","type":"plugin","link":"https:\/\/bcc.wordpress.org\/plugins\/harvify-database-cleaner\/","author":23508132,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.26","stable_tag":"1.0.26","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Harvify Database Cleaner","header_author":"harv","header_description":"Scan, preview, and safely clean your WordPress database: revisions, drafts, spam, expired transients and table overhead.","assets_banners_color":"60aac2","last_updated":"2026-09-30 14:06:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":77,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.26":{"tag":"1.0.26","author":"jethalal","date":"2026-09-30 14:06:16","revision":3721413}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3721413,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3721413,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3721413,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3721413,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3721413,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.26"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3721413,"resolution":"1","location":"assets","locale":"","width":1078,"height":1243},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3721413,"resolution":"2","location":"assets","locale":"","width":1078,"height":986},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3721413,"resolution":"3","location":"assets","locale":"","width":1078,"height":1012}},"screenshots":{"1":"Scan first: row counts and estimated sizes per category, before anything is\ndeleted.","2":"Insights: what is taking up room, and what a cleanup would reclaim.","3":"What the free tier cleans, and what a licence adds."}},"plugin_section":[],"plugin_tags":[3786,153,1452,6243,12113],"plugin_category":[52,59],"plugin_contributors":[280380],"plugin_business_model":[],"class_list":["post-377120","plugin","type-plugin","status-publish","hentry","plugin_tags-cleanup","plugin_tags-database","plugin_tags-optimize","plugin_tags-revisions","plugin_tags-transients","plugin_category-performance","plugin_category-utilities-and-tools","plugin_contributors-jethalal","plugin_committers-jethalal"],"banners":{"banner":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/banner-772x250.png?rev=3721413","banner_2x":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/banner-1544x500.png?rev=3721413","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/icon.svg?rev=3721413","icon":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/icon.svg?rev=3721413","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/screenshot-1.png?rev=3721413","caption":"Scan first: row counts and estimated sizes per category, before anything is\ndeleted."},{"src":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/screenshot-2.png?rev=3721413","caption":"Insights: what is taking up room, and what a cleanup would reclaim."},{"src":"https:\/\/ps.w.org\/harvify-database-cleaner\/assets\/screenshot-3.png?rev=3721413","caption":"What the free tier cleans, and what a licence adds."}],"raw_content":"<!--section=description-->\n<p>Harvify Database Cleaner helps you reclaim wasted database space from post revisions, auto drafts, trashed posts and comments, spam, pingbacks and expired transients, and shows you what is taking up room before anything is removed.<\/p>\n\n<p><strong>Free features:<\/strong><\/p>\n\n<ul>\n<li>Scan and report: row counts + estimated sizes for every category this download\ncan clean<\/li>\n<li><strong>Clean revisions, keeping the last N per post<\/strong> \u2014 you choose how many, and\nzero means delete them all<\/li>\n<li>Clean auto drafts, trashed posts, spam\/trashed comments<\/li>\n<li>Clean expired transients and pingbacks\/trackbacks<\/li>\n<li>Table optimization (reclaim freed space)<\/li>\n<li>Orphaned table &amp; option detection (read-only report + keep-list)<\/li>\n<li><strong>Autoloaded-options analysis<\/strong> \u2014 the total size of your autoloaded options\nagainst the point where it starts to hurt, and the largest offenders listed by\nsize.<\/li>\n<li>Basic scheduled cleanup (weekly\/monthly)<\/li>\n<\/ul>\n\n<p><strong>Pro features (Harvify Pro Bundle):<\/strong><\/p>\n\n<ul>\n<li>Orphaned metadata (post, user, term, comment meta)<\/li>\n<li>Duplicate meta detection<\/li>\n<li>oEmbed cache cleanup<\/li>\n<li>WooCommerce: orphaned order items, expired sessions<\/li>\n<li>Delete orphaned options (known removed-plugin signatures only)<\/li>\n<li><strong>Action Scheduler table cleanup<\/strong> \u2014 removes completed, failed and cancelled\nactions older than 30 days, with their log rows; pending work is never\ntouched.<\/li>\n<li><strong>Pre-cleanup snapshots<\/strong> with one-click rollback<\/li>\n<li>Advanced scheduling (daily) + email reports + cleanup history log<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Freemius, the licensing and update service Harvify uses to\nsell and deliver the Pro tier of its plugins.<\/p>\n\n<p>Nothing is sent to Freemius unless you choose to send it. On activation you are shown\nFreemius's standard opt-in screen. Until you answer it a fresh install makes no\noutbound request at all, and if you choose Skip the free tier stays fully usable\nand still sends nothing. Data is transmitted only when you take one of these\nactions:<\/p>\n\n<ul>\n<li><strong>You click \"Allow &amp; Continue\" on the Freemius opt-in screen.<\/strong> This sends your\nsite address, your administrator email address, and your WordPress, PHP and active\nplugin\/theme details, so Harvify can provide support and know which environments to\ntest against. Skipping that screen sends nothing and leaves the plugin working\nnormally.<\/li>\n<li><strong>You enter a Pro Bundle licence key.<\/strong> This sends the key together with your site\naddress so the licence can be activated for that site. While a licence is active the\nsite also re-checks periodically that it is still valid and whether a Pro update is\navailable.<\/li>\n<\/ul>\n\n<p>Service provided by Freemius, Inc. - https:\/\/freemius.com\/\nTerms of service: https:\/\/freemius.com\/terms\/\nPrivacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your dashboard go to Plugins \u2192 Add New, search for \"Harvify Database Cleaner\",\nthen install and activate it (or upload the ZIP under Plugins \u2192 Add New \u2192 Upload).<\/li>\n<li>Open <strong>Harvify \u2192 Database Cleaner<\/strong>. The first time, you are asked whether to\nshare usage data with Freemius; choose <strong>Skip<\/strong> to use every free feature without\nsending anything.<\/li>\n<\/ol>\n\n<h4>Cleaning your database<\/h4>\n\n<ol>\n<li>Back up your database first. Deleted rows cannot be brought back without a backup.<\/li>\n<li>On the <strong>Cleanup<\/strong> tab click <strong>Scan database<\/strong>. Each category shows how many rows\nit would remove and roughly how much space that frees. Nothing is deleted by a scan.<\/li>\n<li>Tick the categories you want to clean. For post revisions, enter how many to keep\nin <strong>Keep last \u2026 revisions per post<\/strong> and click <strong>Save<\/strong> (0 removes them all).<\/li>\n<li>Click <strong>Dry run (preview)<\/strong> to see exactly what would be removed, then\n<strong>Clean selected<\/strong>.<\/li>\n<\/ol>\n\n<h4>Other tabs<\/h4>\n\n<ul>\n<li><strong>Schedule<\/strong> \u2014 tick <strong>Enable scheduled cleanup<\/strong>, choose weekly or monthly, pick the\ncategories (scan first so they are listed) and click <strong>Save schedule<\/strong>.<\/li>\n<li><strong>Orphans<\/strong> \u2014 tables and options that look left behind by plugins you have\nremoved. It is a report: nothing here is deleted in the free version, and\n<strong>Keep selected (hide)<\/strong> removes an item from the list if you still need it.<\/li>\n<li><strong>Insights<\/strong> \u2014 after a scan, what takes up the most room, and how large your\nautoloaded options are.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20a%20scan%20delete%20anything%3F\"><h3>Does a scan delete anything?<\/h3><\/dt>\n<dd><p>No. A scan only counts. Nothing is removed until you click <strong>Clean selected<\/strong>, and\n<strong>Dry run (preview)<\/strong> shows exactly what would be removed first.<\/p><\/dd>\n<dt id=\"what%20does%20it%20remove%3F\"><h3>What does it remove?<\/h3><\/dt>\n<dd><p>Only the categories you tick: post revisions (beyond the number you keep), auto\ndrafts, posts and comments already in the trash, spam comments, pingbacks and\ntrackbacks, and expired transients. Published posts and pages, and approved\ncomments other than pingbacks and trackbacks, are not removed. Table optimization\nreclaims space without deleting rows.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20a%20cleanup%3F\"><h3>Can I undo a cleanup?<\/h3><\/dt>\n<dd><p>In the free version, only by restoring a backup, so back up before a large\ncleanup. Pro takes a snapshot before each cleanup and offers one-click rollback.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Pro adds WooCommerce cleanup for orphaned order items and expired sessions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Readme: step-by-step setup and usage instructions, a frequently asked questions\nsection, and a plainer description of what the free and Pro tiers include.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li><strong>Fixed: the \"Keep last N revisions per post\" control now appears on the\nCleanup screen in the free tier.<\/strong> 1.0.23 made the setting free and the cleaner\nhonoured it without a licence, but the box to change it was still drawn only for\nlicensed sites, so a free user had no way to set it. It now shows after a scan in\nevery licence state.<\/li>\n<li>Changed: the External services section now describes the Freemius opt-in screen\nshown on activation. Until you answer it a fresh install makes no outbound\nrequest, and choosing Skip keeps the free tier fully usable and sends nothing.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li><strong>\"Keep last N revisions per post\" is now free.<\/strong> The setting existed and the\ncleaner that honours it shipped in every download; only a licence check stopped\nit working, so a free user could not keep a single revision. Set it to 0 to\ndelete them all, as before.<\/li>\n<li>Changed: the twelve Pro cleaner categories \u2014 orphaned and duplicate metadata,\norphaned term relationships, oEmbed caches, pending comments, the WooCommerce\ncategories and Action Scheduler cleanup \u2014 are supplied by the separately\ndistributed Pro plugin rather than being present-but-inactive in this download.\nThis download scans and cleans the eight categories it owns.<\/li>\n<li>Changed: daily scheduling is likewise supplied by the Pro plugin. Weekly and\nmonthly scheduling are unchanged and remain free.<\/li>\n<li><strong>Changed: every identifier this plugin owns has been renamed<\/strong> off its old\nthree-character <code>hdc_<\/code> prefix, which is shorter than WordPress.org accepts.\nFunctions, options and the plugin's own actions and filters are now\n  harvify_dbclean_*; global constants are <code>HARVIFY_DBCLEAN_*<\/code>; classes are\n  Harvify_DBClean_*.<\/li>\n<li><strong>Developers: the REST namespace is now <code>harvify-dbclean\/v1<\/code>. The old <code>hdc\/v1<\/code>\nnamespace is GONE and there is no compatibility alias<\/strong> \u2014 any code calling it\nwill 404 until updated. The admin script and style handle <code>hdc-admin<\/code> is now\n  harvify-dbclean-admin, and the localized JavaScript object <code>hdcSettings<\/code> is\nnow <code>harvifyDbcleanSettings<\/code>.<\/li>\n<li><strong>Fixed (Pro): \"Duplicate post meta\" and \"Duplicate user meta\" no longer delete\nlegitimate values.<\/strong> A duplicate now means the same key AND the same value. The\ncleaner previously removed every additional value stored under one key \u2014 for\nexample all but one of the previous-slug records WordPress keeps so old links\nstill redirect.<\/li>\n<li><strong>Fixed (Pro): \"WooCommerce orphaned order items\" no longer matches real\norders.<\/strong> On stores using WooCommerce's high-performance order storage it\ncounted \u2014 and would have deleted \u2014 the line items of every order, and on older\nstorage it also matched refund and subscription line items. An item is now only\ntreated as orphaned when its order no longer exists anywhere.<\/li>\n<li>Fixed: asking for a cleanup frequency this installation cannot run is now\nrefused with a clear message naming the frequencies that are available. It\nused to answer \"saved\" and quietly store weekly instead.<\/li>\n<li>Fixed: the Schedule screen now shows your saved schedule on every site.\nWeekly and monthly scheduling are free, but the screen only read the saved\nschedule when Pro was active, so a free site always showed it as unset.<\/li>\n<li>Fixed: when the server refuses a request, the screen now shows the reason.\nEvery refusal used to be treated as a success, so a refused save said\n\"Schedule saved.\" and a refused cleanup reported \"Cleaned undefined rows\".<\/li>\n<li>Fixed: when the frequencies a site can run change, the scheduled cleanup is\nrescheduled to match on the next admin visit or cron run. Your saved\nfrequency is not changed.<\/li>\n<li><strong>Fixed (Pro): when the Pro licence is not active, the Pro plugin stops\nrunning Pro features<\/strong> \u2014 its twelve cleaner categories, daily scheduling,\npre-cleanup snapshots, cleanup history and email reports. Nothing you saved\nis removed: the twelve categories stay listed and are still counted by a\nscan, a daily schedule keeps running weekly, and re-activating the licence\nrestores everything. Asking to clean one of those categories now says why it\ncannot run instead of reporting zero rows.<\/li>\n<li>Fixed (Pro): a scheduled cleanup is recorded once in the cleanup history. It\nused to appear twice, once labelled as a manual cleanup.<\/li>\n<li>Fixed: Table Optimization reads the free space of the table it names. A\ntable name was matched as a pattern, so a table with nothing to reclaim could\nbe offered because a similarly named table had free space. The size shown for\na leftover table uses the same exact match.<\/li>\n<li>Changed: the plugin's loader no longer creates an unprefixed global variable.<\/li>\n<li>Fixed: the Schedule screen lists frequencies in order: Daily, Weekly, Monthly.<\/li>\n<li>Fixed: the upgrade card no longer lists \"keep last N revisions\" as a Pro\nfeature, and the Plan screen lists it under the free tier, where it is.<\/li>\n<li>Fixed: the Action Scheduler cleanup (Pro) is described accurately. It removes\ncompleted, failed and cancelled actions older than 30 days, with their log\nrows; it never empties the tables.<\/li>\n<li>Your settings, your schedule and your scheduled cleanup are migrated onto the\nnew names on the first page load after updating. Your cleanup history and\nsnapshot tables are untouched \u2014 those names never changed.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Added: a single <strong>Support<\/strong> entry in the Harvify menu, so you can reach us from\ninside WordPress. Until now no plugin offered a contact route at all. One entry for\nthe whole suite rather than one per plugin.<\/li>\n<li>No behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Added: an <strong>External services<\/strong> section to this readme, naming every third-party\nservice the plugin can contact, exactly what is sent, when, and each provider's terms\nand privacy policy. Required for WordPress.org submission.<\/li>\n<li>Changed: the <code>Contributors<\/code> field now names the correct WordPress.org account.<\/li>\n<li>No behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Fixed: deactivating or deleting the plugin now cancels the scheduled cleanup.\nThe cleanup is queued through Action Scheduler, but the cancellation used the\nWordPress cron function, which reads an entirely different store -- so it\nreported success and removed nothing.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Rebuild: the published 1.0.13 package was generated from an earlier tree. Documentation\nonly; no behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Added: a single <strong>Manage licence<\/strong> link on the Plan screen, so an active customer can\ndeactivate this site, change their licence key or re-check their licence without\nneeding a URL from support. No per-plugin Account tab is added.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Fixed: opting in to \"delete all data on uninstall\" now removes hdc_db_version.\nIt was written at runtime but never included in the cleanup, so a user who\nasked for their data to be deleted kept it.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li><strong>Fixed: updating the plugin did not update its database.<\/strong> WordPress only runs a plugin's\nsetup routine when you <em>activate<\/em> it, never when it updates \u2014 so a change to the plugin's own\ntables never reached sites that had simply updated. On those sites some features failed with a\ndatabase error. The update now applies itself on the next page load.<\/li>\n<li><strong>Fixed: a malformed API request returned a PHP error<\/strong> instead of a normal \"bad request\"\nresponse.<\/li>\n<li><strong>One upgrade link instead of one per plugin.<\/strong> With several Harvify plugins active the\nmenu showed a row called \"Upgrade\" for each of them, all identically labelled, and it kept\nsaying Upgrade to people who had already bought. They are replaced by a single <strong>Plan<\/strong>\nscreen that says what the bundle costs, what it covers, and whether your licence is active.<\/li>\n<li><strong>The dashboard is quiet again.<\/strong> Each plugin used to add its own \"opt in to make this\nbetter\" notice to the main WordPress dashboard, so five plugins meant five notices. Harvify\nplugins now share one queue: promotional notices appear only on Harvify's own screens, and\nonly one at a time. Licence and account messages are never held back.<\/li>\n<li><strong>Fixed: the \"Data &amp; uninstall\" box covered the page.<\/strong> It was being drawn into the admin\nfooter, which WordPress pins to the bottom of the screen, so it floated on top of whatever was\nunderneath it. It now sits in the page like any other card. Saving it also tells you what it\nsaved, instead of just reloading.<\/li>\n<li><strong>Fixed: the upgrade screen advertised the wrong number of sites.<\/strong> Several plugins listed\nthe Freelancer and Agency plans as covering 5 and 25 sites. They cover 3 and 10.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li><strong>Uninstall no longer destroys your data by default.<\/strong> Deleting the plugin used to remove\neverything it had stored, with no way to stop it -- so deleting it to troubleshoot took the lot\nwith it. Now the default is to KEEP your data, and a new <strong>Data &amp; uninstall<\/strong> control on the\nplugin's own screen lets you opt in to a full wipe if that is what you want. Scheduled jobs are\nalways tidied up either way, and the wipe works with no internet connection.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Two long-standing WPCS errors cleared (a <code>strlen()<\/code> in a loop condition in the orphan\nscanner, and a doubled blank line in the Pro scheduler). No behaviour change -- but they\nwere failing the build gate, so the plugin could not be packaged for Freemius at all.<\/li>\n<li><strong>Deleting the plugin left its database tables behind, on every site, since 1.0.0.<\/strong> The main\nplugin file used a variable named <code>$file<\/code> while loading its includes. WordPress runs\n  include_once on that file from INSIDE its own <code>uninstall_plugin()<\/code> function, so the\nassignment overwrote WordPress's <code>$file<\/code>; core then fired its uninstall action under a nonsense\nname, the cleanup callback was never reached, and the plugin's tables, options and scheduled\nevents survived deletion forever. The loader variable is now prefixed.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li><strong>Fixed: Undo could not always put everything back.<\/strong> The snapshot used to be built from a\nlist of the tables we expected each cleanup to touch. WordPress deletes more than that on our\nbehalf, so four cleanups removed rows the snapshot never saw: Post Revisions destroyed the\ntrash metadata of trashed posts (which is what lets WordPress restore them to their previous\nstatus), Trashed Posts destroyed those posts' revisions and their comments' metadata, and\nAction Scheduler cleanup destroyed the log entries of the tasks it removed. The snapshot is\nnow taken from the deletions themselves, as they happen, so it covers whatever the cleanup\nactually removes.<\/li>\n<li>Fixed: \"Undo last cleanup\" returned an error after a Table Optimization run. Optimising tables\ndeletes no rows, so there was nothing to undo -- it now says so instead of failing.<\/li>\n<li><strong>Fixed: orphan detection offered options belonging to live plugins for deletion.<\/strong> Plugins\nbundle each other's libraries, so an option can look abandoned while a plugin that is running\nright now depends on it. Detection now checks whether any installed plugin or the active theme\nactually references an option or table before calling it orphaned.<\/li>\n<li>Fixed: the orphaned-tables report listed tables created by plugins that were installed and\nrunning, because a table name rarely contains its plugin's name.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Your licence is now manageable from the plugin itself. The Account screen was previously\nhidden, which also hid <strong>Deactivate License<\/strong> \u2014 so a licence could not be released from one\nsite to move it to another without contacting support. It is visible again, along with the\nlicence key, plan, Sync and Change License.<\/li>\n<li><strong>Harvify \u2192 Tools<\/strong> now opens with a <strong>Your licences<\/strong> table: every installed Harvify plugin,\nthe plan it is on, whether Pro features are actually running, and a link to its Account screen.\nFreemius gives each product its own separate Account page, so this is the one place that\nanswers \"what am I on\" across the whole bundle.<\/li>\n<li>The repeated <em>\"Opt in to make \u2026 better!\"<\/em> admin notice no longer appears. Licence, plan and\nupdate notices are unaffected \u2014 only the opt-in prompt is suppressed.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Change: License activation now uses per-plugin key entry \u2014 enter your bundle license key on each Pro plugin to unlock Pro. Improves activation reliability.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>New: autoloaded-options analysis in Insights \u2014 total autoloaded size (vs the 800 KB Site Health threshold) and the largest autoloaded options with a likely-source guess (core \/ theme \/ widgets \/ transient \/ plugin, active or removed). Read-only: nothing is deleted from this view; option deletion remains the snapshotted, signature-matched Orphans path.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>New admin design system (Harvify Admin Kit): branded header, first-run onboarding, section navigation (Cleanup, Orphans, Schedule, Insights), skeleton loader, coaching empty states, an at-a-glance Insights panel (reclaimable rows &amp; space, categories with waste, biggest offenders, what-can-be-reclaimed breakdown), and a contextual, dismissible upgrade card. UI layer only \u2014 scanning, cleaning, dry-run, snapshots and free\/Pro gating are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fix: Pro features now unlock only on the premium build with a valid license (per-plugin gate). Previously a shared bundle flag could make the free build report Pro when another Harvify plugin was licensed.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Internal: uninstall cleanup now runs on Freemius's after_uninstall hook (removed uninstall.php) for Freemius Deployment compatibility. What gets removed on uninstall is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Keep-last-N-revisions is now correctly Pro-gated server-side (free deletes all revisions, matching the matrix).<\/li>\n<li>Clarified the free\/Pro split: orphan detection (tables + options) is free and read-only; deleting orphaned options is Pro.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Scan and clean your WordPress database, with a dry-run preview before anything is deleted. Pro adds daily scheduling and one-click rollback.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=377120"}],"author":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jethalal"}],"wp:attachment":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377120"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377120"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377120"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377120"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377120"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}