← Blog
Herramienta Gratuita30 Mayo 2026·4 min de lectura

Cómo eliminar todos tus tweets de una vez — Gratis, sin API, sin app

X/Twitter no tiene botón de eliminar todo. Las herramientas de pago cobran mensualmente. Este script gratuito lo hace en minutos — sin instalación, sin cuenta, sin trampa.

El problema

Ya sea que estés rebrandeando, limpiando una cuenta antigua o empezando de cero, eliminar miles de tweets uno por uno no es una opción. X no ofrece ninguna función de eliminación masiva. Servicios como TweetDelete funcionan — pero cobran €6–15 al mes por algo que debería ser gratuito.

La solución gratuita

Construimos un script JavaScript que se ejecuta directamente en la consola de tu navegador. Desplaza tu perfil automáticamente, identifica tus tweets y reposts, y los elimina uno por uno. Sin instalación, sin clave API, sin servicio externo — solo tu navegador.

Lo usamos nosotros mismos para limpiar una cuenta antigua de X antes de relanzar @Sublime_Arts_ — eliminó cientos de publicaciones sin un solo problema.

Cómo usarlo — 3 pasos

1Ve a tu página de perfil de X — x.com/tuusuario
2Abre DevTools: pulsa F12 → haz clic en la pestaña Console
3Pega el script de abajo y pulsa Enter. Deja la pestaña abierta.

Qué hace

↩️Deshace todos los reposts
🗑️Elimina tweets originales
🔍Solo tu columna principal
⏭️Omite ads y posts de otros

El progreso se registra en tiempo real en la consola. Se detiene automáticamente después de 8 scrolls vacíos. Vuelve a ejecutar si X carga más posts.

El script

cleanup_x_profile.jsF12 → Console
const sleep = ms => new Promise(r => setTimeout(r, ms));

async function cleanupXProfile() {
  let repostsRemoved = 0, tweetsDeleted = 0, emptyScrolls = 0;
  const getCol = () =>
    document.querySelector('[data-testid="primaryColumn"]') ||
    document.querySelector('main') || document;
  const closeMenu = async () => {
    document.dispatchEvent(new KeyboardEvent('keydown',
      { key: 'Escape', keyCode: 27, bubbles: true }));
    await sleep(250);
    const h = getCol().querySelector('h1, h2');
    if (h) h.click(); await sleep(200);
  };
  console.log('🧹 X Profile Cleanup started...');
  while (emptyScrolls < 8) {
    let actions = 0; const col = getCol();
    for (const btn of [...col.querySelectorAll('button')]
      .filter(b => b.innerHTML.includes('M4.75 3.79l4.603'))) {
      try {
        btn.click(); await sleep(700);
        const c = document.querySelector('[data-testid="unretweetConfirm"]');
        if (c) { c.click(); repostsRemoved++; actions++;
          console.log(`↩️ Repost removed #${repostsRemoved}`); await sleep(900);
        } else await closeMenu();
      } catch { await closeMenu(); }
    }
    for (const btn of [...col.querySelectorAll('button')]
      .filter(b => b.innerHTML.includes('M3 12c0-1.1.9-2 2-2s2'))) {
      await closeMenu(); await sleep(300);
      try {
        btn.click(); await sleep(800);
        const del = [...document.querySelectorAll('[role="menuitem"]')]
          .find(i => i.textContent.trim()
            .match(/^(Delete|Elimina|Supprimer|Löschen|Eliminar|Удалить|削除|삭제)$/));
        if (del) {
          del.click(); await sleep(700);
          const ok = document.querySelector('[data-testid="confirmationSheetConfirm"]');
          if (ok) { ok.click(); tweetsDeleted++; actions++;
            console.log(`🗑️ Tweet deleted #${tweetsDeleted}`); await sleep(1200);
          } else await closeMenu();
        } else await closeMenu();
      } catch { await closeMenu(); }
    }
    if (actions === 0) { emptyScrolls++;
      console.log(`Scrolling... (${emptyScrolls}/8)`);
    } else emptyScrolls = 0;
    window.scrollBy(0, 900); await sleep(2000);
  }
  console.log(`\n✅ Done! Reposts: ${repostsRemoved} | Tweets: ${tweetsDeleted}`);
}
cleanupXProfile();

About

Patrick Chen — desarrollador independiente detrás de Sublimearts.io. Lo construí mientras limpiaba mi propia cuenta de X antes del relanzamiento.