WPShadow

All Shadow checks

WordPress performance checks for database and cleanup in Shadow

Database tuning and tidy-up: autoloaded options, missing indexes, orphaned rows, expired transients, revision limits, storage engine and character set.

There are 12 checks on this page. Shadow reports what it finds, and nothing is changed until you approve a fix.

In this family

What each check looks at

Autoloaded Options

Checks whether the total autoloaded options payload exceeds 800 KB, as WordPress loads all autoloaded options on every page request before any content renders.

Database Indexes Missing

Verifies that all expected indexes are present on the core WordPress database tables, wp_posts, wp_postmeta, wp_comments, and wp_options. Missing indexes force MySQL to perform full table scans, which cause slow queries and admin timeouts on sites with more than a few thousand rows.

Why it matters. Checks for missing or inefficient database indexes.

Database Optimization

Checks whether a database optimisation schedule is active and whether the autoloaded options payload is within a healthy threshold.

Database Version Supported

The database server version is outdated or unsupported. Running an end-of-life database engine risks security vulnerabilities and incompatibility.

Why it matters. Verifies that the MySQL/MariaDB version meets WordPress minimum requirements and is within a supported, actively maintained release series.

DB Charset and Collation Correct

The database charset or collation is not set to the recommended utf8mb4 standard. This can cause emoji storage issues and character-encoding bugs.

Why it matters. Validates that the WordPress database uses utf8mb4 charset with an appropriate unicode_ci collation, flagging legacy or mismatched configurations.

Expired Transients Cleared

A large number of expired transients are accumulating in the database. This bloats the options table and slows autoload queries.

Why it matters. Counts expired transient timeout entries in the options table to detect database bloat from uncleaned transients when no external object cache is used.

InnoDB Storage Engine Used

Checks whether the WordPress database tables use the InnoDB storage engine, which delivers better performance and crash recovery than the older MyISAM engine.

Why it matters. Queries INFORMATION_SCHEMA to verify all WordPress core tables use the InnoDB storage engine, which supports transactions and row-level locking.

Orphaned Comments

Checks for orphaned comments whose parent posts have been deleted and undeleted spam comments that are adding unnecessary database bloat.

Orphaned Post Meta

Checks for postmeta rows whose parent posts have been deleted, which inflate the postmeta table and slow down meta queries.

Orphaned Term Relationships

Checks for term relationship rows whose parent posts have been deleted, adding unnecessary overhead to taxonomy and archive queries.

Post Revision Limit Set

Checks whether WordPress post revisions have been limited or disabled, as unlimited revisions can significantly bloat the database over time.

Why it matters. Checks whether WP_POST_REVISIONS is set to a finite number, preventing unlimited revision accumulation that bloats the posts table over time.

Transient Cleanup

Checks for expired transients and excessive transient counts accumulating in the options table, which slow database queries on every page load.

The other check families

Shadow is free and runs on your own server, with no account. The source is on GitHub, and these descriptions come from it.

Find me online: LinkedIn · Bluesky · X · Mastodon · YouTube · GitHub · WordPress.org