← Blog
Outil Gratuit30 Mai 2026·4 min de lecture

Comment supprimer tous ses tweets d'un coup — Gratuit, sans API, sans app

X/Twitter n'a pas de bouton 'tout supprimer'. Les outils payants facturent mensuellement. Ce script gratuit le fait en quelques minutes — sans installation, sans compte, sans piège.

Le problème

Que vous souhaitiez rebrander, nettoyer un ancien compte ou repartir de zéro, supprimer des milliers de tweets un par un n'est pas une option. X ne propose aucune suppression en masse. Des services comme TweetDelete fonctionnent — mais facturent €6–15 par mois pour quelque chose qui devrait être gratuit.

La solution gratuite

Nous avons créé un script JavaScript qui s'exécute directement dans la console de votre navigateur. Il fait défiler votre profil automatiquement, identifie vos propres tweets et reposts, et les supprime un par un. Pas d'installation, pas de clé API, pas de service externe — juste votre navigateur.

Nous l'avons utilisé nous-mêmes pour nettoyer un ancien compte X avant le relancement de @Sublime_Arts_ — il a supprimé des centaines de publications sans le moindre problème.

Comment l'utiliser — 3 étapes

1Allez sur votre page de profil X — x.com/votrenom
2Ouvrez DevTools : appuyez sur F12 → cliquez sur l'onglet Console
3Collez le script ci-dessous et appuyez sur Entrée. Laissez l'onglet ouvert.

Ce qu'il fait

↩️Annule tous les reposts
🗑️Supprime les tweets originaux
🔍Seulement votre colonne principale
⏭️Ignore les pubs et posts des autres

La progression est enregistrée en temps réel dans la console. S'arrête automatiquement après 8 défilements vides. Relancez le script si X charge d'autres publications.

Le 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 — développeur indépendant derrière Sublimearts.io. Créé en nettoyant mon propre compte X avant le relancement.