Cuando desinstalás un plugin SEO de WordPress, las tablas, opciones y meta fields que creó siguen ahí, ocupando espacio y generando consultas innecesarias. Limpiar la base de datos WordPress de plugins SEO como AIOSEO, Rank Math, Yoast o The SEO Framework requiere identificar exactamente qué dejaron y borrarlo con método, no a ciegas.

En 30 segundos

  • WordPress no limpia las tablas ni opciones de un plugin cuando lo desinstalás: quedan tablas propias, registros en wp_options, wp_postmeta y cron jobs huérfanos
  • AIOSEO deja hasta 7 tablas propias (wp_aioseo_posts, wp_aioseo_cache, entre otras); Rank Math y Yoast crean 5-6 tablas cada uno con miles de registros en postmeta
  • El método más seguro es activar la limpieza nativa del plugin antes de desinstalarlo: AIOSEO lo tiene en Settings > Advanced, Rank Math necesita un filtro en functions.php
  • Si ya borraste el plugin sin activar la limpieza, podés eliminar tablas desde phpMyAdmin con DROP TABLE o usar plugins como Advanced Database Cleaner para detectar tablas huérfanas
  • Siempre hacé backup completo antes de tocar la base de datos: un DROP TABLE equivocado te deja el sitio roto

Por qué los plugins SEO dejan restos en tu base de datos

WordPress tiene un mecanismo de desinstalación (el archivo uninstall.php o el hook register_uninstall_hook), pero la realidad es que muchos plugins no lo implementan de forma completa. Algunos lo hacen parcialmente, otros te piden que actives una opción antes de borrar, y unos cuantos directamente no limpian nada.

El problema no es menor. Un plugin SEO toca prácticamente todo: crea tablas propias para cachear análisis, mete opciones de configuración en wp_options, agrega meta fields a cada post, término y usuario, registra cron jobs para tareas programadas y guarda transients para cacheo temporal. Cuando desinstalás el plugin, todo eso queda flotando.

Y el impacto se nota. Una tabla wp_postmeta inflada con miles de registros huérfanos de Yoast o AIOSEO hace que las queries del nuevo plugin SEO tarden más. Si tenés 500 posts, estamos hablando de 3.000 a 5.000 registros extra en postmeta solo del plugin anterior (entre focus keywords, scores de legibilidad, títulos SEO, descriptions y flags internos). En un sitio con 2.000 posts, la cosa se pone fea.

Ponele que migrás de Yoast a Rank Math. Rank Math importa los datos que necesita, pero las tablas propias de Yoast (wp_yoast_indexable, wp_yoast_seo_links, etc.) quedan ahí. Si después instalás AIOSEO para probar, ahora tenés restos de tres plugins SEO distintos en la misma base de datos.

Tablas y opciones que crea cada plugin SEO en WordPress

Antes de limpiar necesitás saber qué buscar. Cada plugin tiene su estructura particular, y confundir una tabla del core de WordPress con una de un plugin te puede dejar sin sitio.

AIOSEO (All in One SEO)

Según la documentación oficial de AIOSEO, el plugin crea estas tablas con el prefijo de tu instalación (normalmente wp_):

  • wp_aioseo_posts (datos SEO por post)
  • wp_aioseo_cache (cacheo interno)
  • wp_aioseo_notifications (alertas del plugin)
  • wp_aioseo_crawl_cleanup_logs (logs de limpieza de crawl)
  • wp_aioseo_crawl_cleanup_blocked_args (argumentos bloqueados)
  • wp_aioseo_seo_analyzer_results (resultados del analizador)

Además, guarda opciones en wp_options con prefijo aioseo_ y meta en wp_postmeta con claves como _aioseo_title, _aioseo_description, _aioseo_keywords.

Rank Math

Rank Math es generoso con las tablas. Según su documentación de desinstalación, crea:

  • wp_rank_math_404_logs
  • wp_rank_math_redirections
  • wp_rank_math_redirections_cache
  • wp_rank_math_internal_links
  • wp_rank_math_internal_meta
  • wp_rank_math_analytics_* (varias tablas de analytics)

En wp_options guarda decenas de entradas con prefijo rank_math_ y rank-math-. En wp_postmeta usa claves como rank_math_title, rank_math_description, rank_math_focus_keyword, rank_math_seo_score y unas cuantas más. Cada post puede tener entre 8 y 15 meta keys de Rank Math.

Yoast SEO

Yoast crea un ecosistema completo de tablas propias (desde la versión 14+):

  • wp_yoast_indexable (la tabla central, con datos SEO de cada URL)
  • wp_yoast_indexable_hierarchy (jerarquía de URLs)
  • wp_yoast_migrations (control de migraciones internas)
  • wp_yoast_primary_term (término primario por post)
  • wp_yoast_prominent_words (palabras prominentes, solo Premium)
  • wp_yoast_seo_links (contador de links internos)

En wp_postmeta deja meta keys con prefijo _yoast_wpseo_: _yoast_wpseo_title, _yoast_wpseo_metadesc, _yoast_wpseo_focuskw, _yoast_wpseo_linkdex, _yoast_wpseo_content_score. También guarda opciones en wp_options bajo wpseo y wpseo_*. Es, con diferencia, el plugin que más rastro deja en la base de datos.

The SEO Framework

Acá la historia es distinta. The SEO Framework tiene una filosofía minimalista y usa mucho menos espacio en la base de datos que sus competidores. No crea tablas propias. Guarda configuración en wp_options bajo las claves autodescription-site-settings, autodescription-site-cache y opciones con prefijo the_seo_framework_. En wp_postmeta usa claves como _genesis_title, _genesis_description y _tsf_title_title.

Comparado con los otros tres, limpiar restos de The SEO Framework es un trabajo rápido. Si te interesa, podés leer más sobre nuestra guía sobre firewalls y microsegmentación.

Tabla comparativa de restos por plugin SEO

PluginTablas propiasPrefijo en wp_optionsPrefijo en wp_postmetaLimpieza nativa
AIOSEO6-7 tablas (wp_aioseo_*)aioseo__aioseo_*Sí, toggle en Settings > Advanced
Rank Math5-8 tablas (wp_rank_math_*)rank_math_, rank-math-rank_math_*Filtro en functions.php
Yoast SEO6 tablas (wp_yoast_*)wpseo, wpseo_*_yoast_wpseo_*No tiene opción visible
The SEO Framework0 (sin tablas propias)autodescription-*, the_seo_framework_*_genesis_*, _tsf_*Constante en wp-config.php
limpiar base datos wordpress diagrama explicativo

Paso previo obligatorio: backup completo

Esto no es opcional. Un DROP TABLE mal apuntado y te quedás sin posts, sin usuarios o sin configuración del sitio. Antes de tocar phpMyAdmin o ejecutar cualquier query SQL, hacé un backup completo de la base de datos.

Opciones concretas:

  • Desde el hosting: la mayoría de los paneles (cPanel, Plesk, donweb.com) te dejan exportar la base de datos en un click desde phpMyAdmin
  • WPVivid o UpdraftPlus: backup completo (archivos + base de datos) descargable a tu máquina o a Google Drive
  • WP-CLI: wp db export backup-antes-limpieza.sql genera un dump SQL directo

Verificá que el backup se pueda restaurar antes de seguir. Un backup que no probaste no es un backup.

Método 1: activar la limpieza nativa antes de desinstalar

Si todavía tenés el plugin instalado, este es el camino más seguro. Cada plugin tiene su propia forma de activar la limpieza al desinstalar.

AIOSEO

Andá a All in One SEO > General Settings > Advanced y activá el toggle «Uninstall AIOSEO». Eso le dice al plugin que borre todas sus tablas y opciones cuando lo desinstalés desde Plugins. Recién después vas a Plugins > Desactivar > Borrar.

Rank Math

Rank Math no tiene un toggle en la interfaz. Necesitás agregar un filtro en functions.php de tu tema (o en un snippet con Code Snippets) antes de desinstalar:

add_filter( 'rank_math_clear_data_on_uninstall', '__return_true' );

Con ese filtro activo, al borrar el plugin desde el admin, Rank Math limpia tablas, opciones y meta. Si lo sacás del código antes de desinstalar, no pasa nada (si, un poco confuso el mecanismo).

Yoast SEO

Yoast no ofrece una opción visible para limpiar al desinstalar. Tiene un uninstall.php que borra opciones, pero no las tablas propias. Si migrás desde Yoast, vas a tener que limpiar manualmente. Así de simple.

The SEO Framework

Agregá esta constante en wp-config.php antes de desinstalar:

define( 'THE_SEO_FRAMEWORK_DEBUG_UNINSTALL', true );

Con eso activo, la desinstalación borra las opciones y meta que creó. Como no genera tablas propias, la limpieza es bastante completa.

Método 2: eliminar tablas y opciones desde phpMyAdmin

Ya borraste el plugin sin activar la limpieza. Pasa seguido. Ahora te toca entrar a phpMyAdmin y hacer el trabajo sucio. Si te interesa, podés leer más sobre plugins gratuitos de WordPress y sus funciones.

Accedé a phpMyAdmin desde el panel de tu hosting, seleccioná la base de datos de WordPress (generalmente aparece en el sidebar izquierdo) y fijate en la lista de tablas. Buscá las que tengan el prefijo del plugin que querés limpiar.

Borrar tablas propias

Para AIOSEO:

DROP TABLE IF EXISTS wp_aioseo_posts, wp_aioseo_cache, wp_aioseo_notifications, wp_aioseo_crawl_cleanup_logs, wp_aioseo_crawl_cleanup_blocked_args, wp_aioseo_seo_analyzer_results;

Para Rank Math:

DROP TABLE IF EXISTS wp_rank_math_404_logs, wp_rank_math_redirections, wp_rank_math_redirections_cache, wp_rank_math_internal_links, wp_rank_math_internal_meta;

Para Yoast:

DROP TABLE IF EXISTS wp_yoast_indexable, wp_yoast_indexable_hierarchy, wp_yoast_migrations, wp_yoast_primary_term, wp_yoast_prominent_words, wp_yoast_seo_links;

Ojo: si tu instalación usa un prefijo distinto a wp_, ajustá las queries. Revisá wp-config.php donde dice $table_prefix.

Limpiar wp_options

Las opciones del plugin quedan en wp_options. Primero revisá qué hay antes de borrar:

SELECT option_name FROM wp_options WHERE option_name LIKE '%aioseo%';

Si el resultado tiene sentido (todas son opciones del plugin, ninguna del core), borrá:

DELETE FROM wp_options WHERE option_name LIKE '%aioseo%';

Lo mismo para los otros plugins, cambiando el patrón: %rank_math%, %rank-math%, %wpseo%, %autodescription%, %the_seo_framework%. Si te interesa, podés leer más sobre parches críticos de seguridad en servidores.

Limpiar wp_postmeta

Acá es donde se acumula el volumen grande. Cada post tiene múltiples entradas por plugin. Primero contá cuántas hay:

SELECT COUNT(*) FROM wp_postmeta WHERE meta_key LIKE '_yoast_wpseo_%';

Si tenés 500 posts, vas a ver algo como 3.000 a 5.000 registros. Después de verificar, borrá:

DELETE FROM wp_postmeta WHERE meta_key LIKE '_yoast_wpseo_%';

Para AIOSEO: meta_key LIKE '_aioseo_%'. Para Rank Math: meta_key LIKE 'rank_math_%'. Para SEO Framework: meta_key LIKE '_genesis_%' OR meta_key LIKE '_tsf_%'.

Después de borrar, ejecutá OPTIMIZE TABLE wp_postmeta; para reclamar el espacio en disco.

Método 3: limpiar con plugins especializados

Si phpMyAdmin te genera rechazo (o directamente no tenés acceso), hay plugins que detectan tablas huérfanas y te dejan borrarlas desde el admin de WordPress.

Advanced Database Cleaner es el más completo para este caso. Tiene una pestaña de «Tables» que muestra todas las tablas de la base de datos, identifica cuáles pertenecen al core de WordPress y cuáles son de plugins. Las que quedan de plugins desinstalados las marca como huérfanas. También escanea opciones y cron jobs. La versión gratuita detecta, la premium borra.

WP-Optimize tiene una pestaña «Tables» que muestra tablas con overhead y permite optimizar, aunque es menos preciso para identificar huérfanas que Advanced Database Cleaner.

Plugins Garbage Collector hace exactamente lo que dice: escanea la base de datos, detecta tablas de plugins que ya no están instalados y te dice de qué plugin vienen. Lleva tiempo sin actualizarse, pero para un escaneo puntual sigue funcionando. Si te interesa, podés leer más sobre ataques a herramientas de integración continua.

La ventaja de estos plugins es que no necesitás escribir SQL. La desventaja: no siempre detectan los registros en wp_postmeta y wp_options, solo las tablas propias. Para una limpieza profunda, combiná el plugin con una revisión manual de postmeta.

Método 4: limpieza con WP-CLI para los que prefieren la terminal

Si tenés acceso SSH al servidor (o usás un hosting que soporte WP-CLI), este es el método más rápido y preciso.

Borrar tablas de AIOSEO:

wp db query "DROP TABLE IF EXISTS wp_aioseo_posts, wp_aioseo_cache, wp_aioseo_notifications;"

Borrar opciones de Rank Math:

wp option list --search='rank_math_*' --field=option_name | xargs -I {} wp option delete {}

Ese comando lista todas las opciones que matchean el patrón y las borra una por una. Elegante.

Para verificar postmeta antes de borrar:

wp db query "SELECT COUNT(*) FROM wp_postmeta WHERE meta_key LIKE '_yoast_wpseo_%';"

Y para borrar:

wp db query "DELETE FROM wp_postmeta WHERE meta_key LIKE '_yoast_wpseo_%';"

Listar cron jobs huérfanos:

wp cron event list

Buscá eventos con nombres del plugin anterior (como rank_math_analytics_daily o aioseo_*) y borralos con wp cron event delete nombre_del_evento.

Cómo verificar que la limpieza fue completa

Borraste tablas, limpiaste opciones, eliminaste meta. Falta confirmar que no quedó nada dando vueltas. Si te interesa, podés leer más sobre comparativa de plugins de seguridad para WordPress.

  • Buscá en wp_options: SELECT option_name FROM wp_options WHERE option_name LIKE '%nombre_plugin%'; Si devuelve 0 filas, bien.
  • Revisá wp_postmeta con el mismo patrón LIKE para las meta keys del plugin
  • Chequeá wp_termmeta y wp_usermeta, porque algunos plugins (Rank Math en particular) guardan datos ahí también
  • Verificá los cron jobs: desde WP-CLI con wp cron event list o con el plugin WP Crontrol. Si ves eventos de un plugin que ya no existe, borralos.
  • Ejecutá OPTIMIZE TABLE wp_options, wp_postmeta; para reclamar espacio
  • Entrá al nuevo plugin SEO, revisá que los títulos y descriptions de tus posts estén bien (si usaste la herramienta de importación del nuevo plugin, deberían estar)

Si todo da limpio y el nuevo plugin funciona sin errores en la consola del navegador ni warnings en el log de PHP, terminaste.

Errores comunes al limpiar la base de datos de plugins SEO

Borrar antes de importar los datos al nuevo plugin

Te llega el momento de la migración, desinstalás Yoast, borrás todas sus tablas y postmeta, y después instalás Rank Math esperando que importe los datos SEO. Sorpresa: no hay nada que importar, porque acabás de borrar la fuente. Rank Math, AIOSEO y SEO Framework tienen herramientas de importación que leen los meta fields del plugin anterior. Si los borrás antes de importar, perdés todos los títulos, descriptions y focus keywords personalizados. Siempre importá primero, verificá que los datos migraron bien, y recién después limpiá.

Usar LIKE sin el prefijo correcto de tablas

Si tu WordPress usa un prefijo distinto a wp_ (ponele dw_ o miweb_), las queries de ejemplo que encontrás en Google no van a funcionar. Peor: si tenés varias instalaciones de WordPress en la misma base de datos (algo que pasa en hostings compartidos), un DROP TABLE wp_yoast_indexable podría apuntar a la instalación equivocada. Revisá siempre $table_prefix en tu wp-config.php.

No limpiar los cron jobs del plugin anterior

Borrás las tablas y opciones, pero los cron jobs siguen registrados. WordPress intenta ejecutar un evento programado, busca la función del plugin, no la encuentra, y genera un error PHP. No rompe el sitio, pero llena el log de warnings y desperdicia recursos del servidor en cada ejecución del cron. Revisá con WP Crontrol o wp cron event list después de cada limpieza.

Confiar en que «Borrar» desde Plugins hace todo

Alguien revisó los permisos de ese botón? WordPress ejecuta el uninstall.php del plugin cuando lo borrás, pero como ya vimos, no todos los plugins limpian sus tablas ahí. Yoast no borra sus tablas propias. AIOSEO las borra solo si activaste el toggle. Asumir que el botón «Borrar» del admin hace una limpieza completa es el error más frecuente, y el que más basura acumula en bases de datos de WordPress.

Si trabajás con múltiples plugins de SEO, esto se conecta con How do I delete AIOSEO, SEO Framework, RankMath and other pl, donde cubrimos el proceso en detalle.

Preguntas Frecuentes

¿Cómo elimino las tablas que dejó AIOSEO en mi base de datos después de borrarlo?

Entrá a phpMyAdmin, buscá las tablas con prefijo wp_aioseo_ y ejecutá DROP TABLE sobre cada una. También limpiá wp_options con DELETE FROM wp_options WHERE option_name LIKE '%aioseo%' y wp_postmeta con DELETE FROM wp_postmeta WHERE meta_key LIKE '_aioseo_%'. Si todavía no borraste AIOSEO, el camino más fácil es activar el toggle en General Settings > Advanced > Uninstall AIOSEO antes de desinstalar.

¿Es seguro borrar tablas de plugins SEO directamente en phpMyAdmin?

Sí, siempre que borres las tablas correctas y tengas un backup. Las tablas con prefijo wp_aioseo_, wp_rank_math_ o wp_yoast_ son exclusivas de esos plugins y no afectan al core de WordPress. Lo que nunca tenés que tocar son wp_posts, wp_options (como tabla completa), wp_users o wp_postmeta (como tabla completa). Borrar registros específicos dentro de esas tablas con un WHERE preciso es seguro; borrar la tabla entera, no.

¿Hay algún plugin que detecte tablas huérfanas de plugins desinstalados?

Advanced Database Cleaner es el más confiable para esto. Escanea la base de datos, identifica tablas que no pertenecen al core ni a plugins activos, y te muestra de qué plugin probable vienen. Plugins Garbage Collector cumple la misma función aunque con menos actualizaciones recientes. WP-Optimize detecta tablas con overhead pero no es tan preciso para identificar huérfanas.

¿Cuánto espacio puedo recuperar limpiando restos de plugins SEO?

Depende de la cantidad de contenido. En un sitio con 500 posts, la tabla wp_yoast_indexable sola puede ocupar 2-5 MB, y los registros en wp_postmeta otros 3-8 MB. En sitios con miles de posts, hemos visto bases de datos que bajan 20-30% de tamaño después de limpiar restos de dos o tres plugins SEO acumulados. El beneficio no es solo espacio: las queries a wp_postmeta se ejecutan más rápido con menos registros, y eso impacta en el tiempo de carga.

Conclusión

WordPress no se encarga de la limpieza cuando borrás un plugin SEO, y los propios plugins tampoco lo hacen de forma automática en la mayoría de los casos. La responsabilidad cae en vos. El método ideal es activar la opción de limpieza nativa antes de desinstalar (cuando existe), pero si ya pasó ese momento, la combinación de queries SQL en phpMyAdmin o WP-CLI te resuelve el problema en minutos.

Lo importante es el orden: primero importá los datos al nuevo plugin, después limpiá los restos del anterior, y siempre con un backup a mano. No es un proceso que tengas que hacer seguido, pero cuando lo hacés bien, la base de datos queda liviana y sin conflictos entre plugins que ya no deberían estar ahí.

Fuentes

Categorizado en: