Cleaning Up Old Post Metadata in WordPress

Over time, as posts are updated, created, or deleted, the wp_postmeta table can become large and inhibit your website performance. In this article, we are going to show you how to clean up old, unnecessary post metadata from the wp_postmeta table to help your WordPress site run more efficiently.

  1. Before continuing, make a backup of your database. This step is critical as we are making mass deletions that can potentially break things on your site.
  2. Log into cPanel.
  3. cpanel cPanel phpMyAdminIcon highlight

    Next, scroll down to the Databases section and click on phpMyAdmin.

  4. wordpress clean postmeta 2

    Within PHPMyAdmin, select your WordPress database on the left side column. If you are unsure of the database that your WordPress site is using, follow our guide on finding your WordPress database name.

  5. wordpress clean postmeta 3

    At the top of the page, click on SQL.

  6. wordpress clean postmeta 4

    Inside the text area, enter the following:

    SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
    DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

  7. Then, press the Go button on the bottom right.

PHPMyAdmin will either let you know how many items it removed or state that the result is empty which means that nothing was found. Congratulations! Your wp_postmeta table has now been cleaned up.

Thoughts on “Cleaning Up Old Post Metadata in WordPress

    • It may mean that any plugins you’ve uninstalled didn’t leave behind excess data. That’s a good thing.

  • Hello,

    thanks for the useful tutorial. I run the queries you suggested and found nothing wrong, but my postmeta data are made huge by the presence of the meta keys related to the views count (daily, weekly, monthly). Any suggestions about these?


Was this article helpful? Let us know!