WP Manifestindependent plugin directory
manifest / utilities / axle-leftovers

Axle Leftovers

Find what deleted plugins left behind and clean it up safely, with undo.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/aryanjasala/axle-leftovers/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Axle Leftovers

Try in WordPress Playground Latest release WordPress 6.6+ PHP 7.4+ License: GPL-2.0-or-later
PHPCS PHPStan Unit tests E2E tests Plugin Check

Find the tables, options, cron events, meta, roles and uploads folders deleted plugins left behind, see the evidence for each owner, and move them to a trash you can restore from.

A plugin is deleted on the Plugins screen, Leftovers lists what it left, everything goes to the trash, and the batch comes back with Restore


Deleting a plugin runs its uninstall.php, if it has one. Many plugins have none, or skip tables, cron events, roles, uploads folders and meta. Cleaners list these, but they guess the owner or charge for it, and every delete is permanent. Axle Leftovers records who creates what, reads each plugin's code once, ships the names used by about 500 popular plugins, and shows the evidence for every owner. Nothing is deleted on the first step: items are exported, moved to a trash, and restored exactly with one click.

[!NOTE] Free and open source under the GPL. No pro version, no upsells, no ads in wp-admin, no tracking. And it stays that way.

Part of Axle by AryanX, a family of plugins for running WordPress sites safely.

Features

  • Seven item types: tables, options and transients, cron events, post, user, term and comment meta keys, uploads folders, roles, and capabilities on roles
  • Evidence, not guesses: Certain (seen being created, around activation or at runtime), Likely (named in the plugin's code or the bundled dataset), Guess (name prefix), Unknown. Each item shows why
  • Nothing in use is listed: data of installed plugins (active or not), must-use plugins, themes and core never shows up
  • Reference check: a name that active code still uses blocks the trash and names the file
  • Trash with undo: SQL or JSON export first, then tables renamed, rows and folders moved. Restore a batch or one item exactly, with autoload values and cron schedules
  • Typed confirmation for Guess and Unknown items, on the screen, the CLI and the abilities
  • Cost: rows, size and autoloaded bytes per item and per plugin, so you see what a deleted plugin still adds to every page load
  • Plugins screen notice after a delete: "Leftover Maker left 1 table, 5 options and 2 cron events. Review."
  • Survives FTP deletes: code signatures stay in the ledger, and plugins removed outside WordPress are recorded
  • WP-CLI, REST, abilities for agents, Site Health, privacy export and erase, multisite, Axle Read-Only Mode aware
  • Attribute more Unknown items, opt-in: Look it up searches the code of every WordPress.org plugin for an item's name (through veloria.dev), and Download the full list adds about 10,000 plugins from GitHub. Both are off by default and documented as external services

Install

  1. Download axle-leftovers.zip from the latest release.
  2. In WordPress, go to Plugins > Add New Plugin > Upload Plugin, choose the zip and activate it.

Or with WP-CLI:

wp plugin install https://github.com/aryanjasala/axle-leftovers/releases/latest/download/axle-leftovers.zip --activate

Needs WordPress 6.6+ and PHP 7.4+. To try it first, the Try in WordPress Playground badge opens a throwaway WordPress in your browser with the plugin and some demo content.

Quick look

See what deleted plugins left, then clean one up:

wp axle-leftovers scan
wp axle-leftovers list --plugin=contact-form-7
wp axle-leftovers trash --plugin=contact-form-7 --yes
wp axle-leftovers restore 20261030-101500-k3xq   # if it was wrong
wp axle-leftovers trash purge --older-than=30 --yes

Or open Tools > Leftovers.

Screenshots

By plugin: what a deleted plugin left, with the evidence, sizes, the autoload cost and the reference check
By plugin: what a deleted plugin left, with the evidence, sizes, the autoload cost and the reference check
Moving an Unknown table to the trash needs its name typed
Moving an Unknown table to the trash needs its name typed
The trash: one batch, each item's export, and Restore
The trash: one batch, each item's export, and Restore
The ledger: every plugin seen, how it was removed, and the names its code uses
The ledger: every plugin seen, how it was removed, and the names its code uses
The notice on the Plugins screen after a delete
The notice on the Plugins screen after a delete

Documentation

Doc What it covers
Reference Item types, attribution and evidence, the lists and the online lookup, hooks, abilities, REST, WP-CLI, data and privacy
Development Local setup, commands and tests
Contributing Pull requests, required checks and PR titles
Releasing How merged pull requests become releases
Security Reporting a vulnerability
readme.txt What WordPress.org shows, with the FAQ and changelog

Project structure

axle-leftovers.php        plugin header, autoloader and owner_of()
src/
├── Plugin.php            creates the services
├── Recorder.php          who creates what: activation, runtime, uninstall
├── Ledger.php            plugins seen and first-seen items
├── Signature.php         reads a plugin's PHP for the names it uses
├── Dataset.php           the bundled list merged with the downloaded one
├── DatasetUpdater.php    opt-in download of the full list
├── Lookup.php            opt-in online lookup of Unknown items
├── Attribution.php       owner, confidence and evidence
├── References.php        is active code still using a name?
├── Scanner.php           the batched background scan
├── Trash.php             export, trash, restore, purge
├── Inventory.php         what exists right now
├── Storage.php           uploads/axle-leftovers with deny rules
├── Core.php              core and protected items
├── Settings.php          settings and filtered defaults
├── Schema.php            tables and schedules
├── Privacy.php           export, erase and policy text
├── Abilities.php         abilities for agents
├── Rest/Controller.php   REST routes
├── Admin/                Tools > Leftovers and the Plugins screen
├── Health/SiteHealth.php the Site Health test
└── Cli/                  wp axle-leftovers
bin/build-signatures.php  builds the bundled list, and the full list on GitHub
data/signatures.json      the bundled dataset
assets/                   admin.css, admin.js
tests/
├── Unit/                 PHPUnit
└── e2e/                  Playwright specs, fixtures and the Docker site
.wordpress-org/           screenshots
docs/                     reference, development, contributing, releasing

More free plugins

Small plugins that each fill one gap in WordPress, all free with no pro version:

Plugin What it does
Page Template Usage See which template every page uses, and fix the pages on a missing template
Staging Guard Stops staging copies from emailing real people or getting indexed
Category & Tag Trash A trash for categories, tags and custom terms, with undo and full restore
Axle Read-Only Mode Read-only mode for WordPress during migrations and deploys
Axle Block Restore Restore a single block from an old revision, not the whole post
Activity Log with Undo An activity log where every change you can reverse has an Undo button
Agent Governance Hold risky AI agent calls for approval, preview what they change, and roll back a session
Block Doctor Scan the whole site for invalid and broken blocks and fix them in bulk, with undo
Block Theme Ops Find Site Editor changes that override your theme files, see the diff, reset them or send them to Git
Role Right-Sizer Recommends the smallest role each user needs, from what they actually do
Update Rehearsal Try plugin, theme, core and PHP updates on a disposable copy of your site in WordPress Playground first
User Session Manager See every device signed in, sign out one, and limit sessions per role

License

Copyright Aryan Jasala. Licensed under GPL-2.0-or-later.