diff --git a/src/sidebar/sidebar.html b/src/sidebar/sidebar.html
index 79f9c09a9d628179d8fb1bff4edf678d15f993c0..96de998b0c0aa38204efaf34153aa885dd55c84d 100644
--- a/src/sidebar/sidebar.html
+++ b/src/sidebar/sidebar.html
@@ -259,6 +259,8 @@
       transition: filter 0.3s ease-in-out;
     }
 
+    /* Ajout de la classe active */
+    .lexique-highlight-toggle.active .feutre-icon,
     .lexique-highlight-toggle[data-active="true"] .feutre-icon {
       filter: brightness(0) saturate(100%) invert(83%) sepia(89%) saturate(588%) hue-rotate(360deg);
     }
diff --git a/src/sidebar/sidebar.js b/src/sidebar/sidebar.js
index 5b90964773983506a0c316017f13ccc7dc7e0af2..c51f264b8bcb7950aff6267a462837d8bd66f859 100644
--- a/src/sidebar/sidebar.js
+++ b/src/sidebar/sidebar.js
@@ -217,7 +217,7 @@ async function fetchLexicons() {
       lexiconMap.set(lex.id, lexiconName);
     });
 
-    displayLexiconsWithCheckbox(lexicons.map((lex) => ({
+    await displayLexiconsWithCheckbox(lexicons.map((lex) => ({
       lexiconName:
         lex.category === "User"
           ? DEBUG
@@ -229,6 +229,9 @@ async function fetchLexicons() {
       lexiconId: lex.id,
       active: lex.active || false,
     })));
+    
+    // Restaurer l'état des boutons après l'affichage
+    await restoreHighlightingState();
   } catch (error) {
     console.error("❌ Erreur lors du chargement des lexiques :", error.message);
     const lexiquesContainer = document.getElementById("lexiques");
@@ -286,6 +289,9 @@ async function displayLexiconsWithCheckbox(lexicons) {
     // Conteneur pour le bouton de surlignage (avec tooltip)
     const highlightButton = document.createElement("button");
     highlightButton.className = "tooltip-container lexique-highlight-toggle";
+    if (active) {
+      highlightButton.classList.add('active');
+    }
     highlightButton.dataset.lexiconId = lexiconId;
     highlightButton.dataset.active = active ? "true" : "false";
     const feutreIcon = document.createElement("img");
@@ -296,7 +302,7 @@ async function displayLexiconsWithCheckbox(lexicons) {
     highlightTooltip.className = "tooltip";
     highlightTooltip.textContent = "Activer/Désactiver le surlignage des mots du lexique";
     
-    // Gestion du clic pour activer/désactiver le surlignage
+    // Mise à jour du gestionnaire d'événements
     highlightButton.addEventListener("click", async () => {
       let currentState = highlightButton.dataset.active === "true";
       let newState = !currentState;
@@ -304,6 +310,11 @@ async function displayLexiconsWithCheckbox(lexicons) {
         await toggleLexiconHighlight(lexiconId, newState);
         highlightButton.dataset.active = newState ? "true" : "false";
         highlightButton.classList.toggle("active", newState);
+        
+        // Sauvegarder l'état dans le storage local
+        const activeLexicons = Array.from(document.querySelectorAll('.lexique-highlight-toggle[data-active="true"]'))
+          .map(btn => parseInt(btn.dataset.lexiconId));
+        await browser.storage.local.set({ activeLexicons });
       } catch (error) {
         console.error("Erreur lors du toggle de surlignage pour le lexique", lexiconId, ":", error);
       }
@@ -343,6 +354,24 @@ async function displayLexiconsWithCheckbox(lexicons) {
   }, 100);
 }
 
+// Ajouter une fonction pour restaurer l'état des boutons au chargement
+async function restoreHighlightingState() {
+  try {
+    const { activeLexicons } = await browser.storage.local.get("activeLexicons");
+    if (activeLexicons && Array.isArray(activeLexicons)) {
+      const buttons = document.querySelectorAll('.lexique-highlight-toggle');
+      buttons.forEach(button => {
+        const lexiconId = parseInt(button.dataset.lexiconId);
+        const isActive = activeLexicons.includes(lexiconId);
+        button.dataset.active = isActive ? "true" : "false";
+        button.classList.toggle("active", isActive);
+      });
+    }
+  } catch (error) {
+    console.error("Erreur lors de la restauration de l'état des boutons:", error);
+  }
+}
+
 function initModal() {
   log("initModal appelé");
   const modalOverlay = document.getElementById("modalOverlay");
@@ -483,7 +512,7 @@ browser.runtime.onMessage.addListener(async (message) => {
   if (message.command) {
     switch (message.command) {
       case "activate-highlighting":
-        const highlightButton = document.querySelector(`[data-lexicon-id="${message.lexiconId}"] .lexique-highlight-toggle`);
+        const highlightButton = document.querySelector(`button[data-lexicon-id="${message.lexiconId}"]`);
         if (highlightButton) {
           highlightButton.dataset.active = "true";
           highlightButton.classList.add("active");
@@ -491,7 +520,7 @@ browser.runtime.onMessage.addListener(async (message) => {
         break;
         
       case "deactivate-highlighting":
-        const highlightButtonOff = document.querySelector(`[data-lexicon-id="${message.lexiconId}"] .lexique-highlight-toggle`);
+        const highlightButtonOff = document.querySelector(`button[data-lexicon-id="${message.lexiconId}"]`);
         if (highlightButtonOff) {
           highlightButtonOff.dataset.active = "false";
           highlightButtonOff.classList.remove("active");
@@ -713,6 +742,12 @@ document.addEventListener("DOMContentLoaded", async () => {
 
 async function toggleLexiconHighlight(lexiconId, isActive) {
   try {
+    const button = document.querySelector(`button[data-lexicon-id="${lexiconId}"]`);
+    if (button) {
+      button.dataset.active = isActive.toString();
+      button.classList.toggle('active', isActive);
+    }
+
     await browser.tabs.query({ active: true, currentWindow: true }).then((tabs) => {
       browser.tabs.sendMessage(tabs[0].id, {
         command: isActive ? "activate-highlighting" : "deactivate-highlighting",
diff --git a/src/utils/highlighting.js b/src/utils/highlighting.js
index 091579a9dd05cbd1efab5df32e1b71aaf9b73ea2..27402c8725780d11ba1f009d12983bf0accf191e 100644
--- a/src/utils/highlighting.js
+++ b/src/utils/highlighting.js
@@ -57,8 +57,8 @@ browser.runtime.onMessage.addListener((message) => {
 
 // Au début du fichier, après la déclaration de observer
 document.addEventListener('visibilitychange', async () => {
-    if (document.visibilityState === 'visible' && window.highlightingActive) {
-        log("📄 Page redevenue visible, réinitialisation complète du surlignage");
+    if (document.visibilityState === 'visible' && window.highlightingActive && activeLexiconIds.size > 0) {
+        log("📄 Page redevenue visible, réinitialisation du surlignage");
         removeAllHighlights();
         await updateLexiconCache();
         highlightVisibleContent();
@@ -67,9 +67,9 @@ document.addEventListener('visibilitychange', async () => {
 });
 
 // Ajoutons aussi un listener pour le chargement complet de la page
-window.addEventListener('load', async () => {
-    if (window.highlightingActive) {
-        log("📄 Page chargée, réinitialisation complète du surlignage");
+window.addEventListener('pageshow', async () => {
+    if (window.highlightingActive && activeLexiconIds.size > 0) {
+        log("📄 Page affichée (pageshow), réinitialisation du surlignage");
         removeAllHighlights();
         await updateLexiconCache();
         highlightVisibleContent();
@@ -77,30 +77,19 @@ window.addEventListener('load', async () => {
     }
 });
 
+// Déplacer checkAndRestoreHighlightingState après la déclaration de startHighlighting
 (function () {
     try {
-        // Déplacer la vérification hasRun ici
         if (window.hasRun) {
-            console.log("⚠️ highlighting.js déjà chargé, mais listener maintenu");
+            console.log("⚠️ highlighting.js déjà chargé");
             return;
         }
         window.hasRun = true;
-        console.log("🟢 IIFE de highlighting.js démarrée");
-        
-        // Vérification immédiate des objets critiques
-        console.log("🔍 État initial:", {
-            hasAuthToken: !!window.authToken,
-            hasGetAllLexiconWords: !!window.getAllLexiconWords,
-            browserRuntime: !!browser?.runtime,
-            documentBody: !!document.body
-        });
-
-        // Amélioration du log initial pour vérifier si le script s'exécute
-        console.log("🟢 Début d'exécution du script highlighting.js");
         
         // Variables globales pour le script
         let lexiconWordsCache = new Map();
         let highlightingActive = false;
+        window.highlightingActive = false;
         let activeLexiconIds = new Set();
         let observer = null;
 
@@ -118,102 +107,103 @@ window.addEventListener('load', async () => {
             
             if (message.command === "activate-highlighting") {
                 log(`🎯 Activation du surlignage pour le lexique ${message.lexiconId}`);
-                // Exécuter startHighlighting de manière synchrone et envoyer la réponse
                 startHighlighting(message.lexiconId)
-                    .then(result => sendResponse(result))
+                    .then(() => {
+                        window.highlightingActive = true;
+                        sendResponse(true);
+                    })
                     .catch(error => {
-                        console.error("Erreur lors de l'activation:", error);
+                        console.error("❌ Erreur lors de l'activation:", error);
                         sendResponse(false);
                     });
-                return true; // Indique que nous allons envoyer une réponse asynchrone
+                return true;
             }
             
             if (message.command === "deactivate-highlighting") {
                 log(`🚫 Désactivation du surlignage pour le lexique ${message.lexiconId}`);
-                stopHighlighting(message.lexiconId);
-                sendResponse(true);
+                stopHighlighting(message.lexiconId)
+                    .then(() => {
+                        if (activeLexiconIds.size === 0) {
+                            window.highlightingActive = false;
+                        }
+                        sendResponse(true);
+                    })
+                    .catch(error => {
+                        console.error("❌ Erreur lors de la désactivation:", error);
+                        sendResponse(false);
+                    });
                 return true;
             }
             
-            sendResponse(false);
             return false;
         });
 
         log("📡 Enregistrement du script auprès du background");
         browser.runtime.sendMessage({ command: "register-highlighting-script" });
 
-        window.hasRun = true;
         log("🚀 Initialisation de highlighting.js");
 
         // ─────────────────────────────────────────────────────────────────────────────
         // Fonctions principales
         // ─────────────────────────────────────────────────────────────────────────────
         async function startHighlighting(lexiconId) {
-            console.log("🎬 startHighlighting appelé avec:", {
-                lexiconId,
-                windowContext: {
-                    authToken: !!window.authToken,
-                    getAllLexiconWords: !!window.getAllLexiconWords,
-                    location: window.location.href
-                }
-            });
-            log(`🎬 Démarrage du surlignage (lexiconId: ${lexiconId})`);
-            
             try {
-                // Attendre que le token soit disponible via initAuthToken
                 await initAuthToken();
                 
                 if (!window.authToken) {
-                    throw new Error("❌ Pas de token d'authentification disponible après initialisation");
+                    throw new Error("❌ Pas de token d'authentification disponible");
                 }
 
                 if (lexiconId) {
                     activeLexiconIds.add(lexiconId);
-                    log("📊 Lexiques actifs:", Array.from(activeLexiconIds));
+                    const activeLexicons = Array.from(activeLexiconIds);
+                    await browser.storage.local.set({ activeLexicons });
+                    log("📊 Lexiques actifs sauvegardés:", activeLexicons);
                 }
                 
+                window.highlightingActive = true;
                 highlightingActive = true;
                 
-                log("🔄 Début de la mise à jour du cache");
                 await updateLexiconCache();
-                log("✅ Cache mis à jour, début du surlignage");
                 highlightVisibleContent();
                 attachMutationObserver();
                 return true;
             } catch (error) {
-                console.error("❌ Erreur détaillée lors du démarrage du surlignage:", {
-                    error: error.message,
-                    stack: error.stack,
-                    authToken: !!window.authToken,
-                    getAllLexiconWords: typeof window.getAllLexiconWords,
-                    activeLexiconIds: Array.from(activeLexiconIds)
-                });
-                return false;
+                console.error("❌ Erreur lors du démarrage du surlignage:", error);
+                window.highlightingActive = false;
+                highlightingActive = false;
+                throw error;
             }
         }
 
-        function stopHighlighting(lexiconId) {
-            log(`🛑 Arrêt du surlignage (lexiconId: ${lexiconId})`);
-            if (lexiconId) {
-                activeLexiconIds.delete(lexiconId);
-                log("📊 Lexiques actifs restants:", Array.from(activeLexiconIds));
-                
-                if (activeLexiconIds.size === 0) {
-                    log("🔄 Plus aucun lexique actif, désactivation complète");
+        async function stopHighlighting(lexiconId) {
+            try {
+                if (lexiconId) {
+                    activeLexiconIds.delete(lexiconId);
+                    const activeLexicons = Array.from(activeLexiconIds);
+                    await browser.storage.local.set({ activeLexicons });
+                    
+                    if (activeLexiconIds.size === 0) {
+                        window.highlightingActive = false;
+                        highlightingActive = false;
+                        removeAllHighlights();
+                        detachMutationObserver();
+                    } else {
+                        removeAllHighlights();
+                        await updateLexiconCache();
+                        highlightVisibleContent();
+                    }
+                } else {
+                    window.highlightingActive = false;
                     highlightingActive = false;
+                    activeLexiconIds.clear();
                     removeAllHighlights();
                     detachMutationObserver();
-                } else {
-                    log("🔄 Rafraîchissement du surlignage pour les lexiques restants");
-                    removeAllHighlights();
-                    highlightVisibleContent();
                 }
-            } else {
-                log("🧹 Désactivation globale du surlignage");
-                highlightingActive = false;
-                activeLexiconIds.clear();
-                removeAllHighlights();
-                detachMutationObserver();
+                return true;
+            } catch (error) {
+                console.error("❌ Erreur lors de l'arrêt du surlignage:", error);
+                throw error;
             }
         }
 
@@ -427,7 +417,8 @@ window.addEventListener('load', async () => {
             
             highlights.forEach(highlight => {
                 const text = highlight.textContent;
-                highlight.replaceWith(text);
+                const textNode = document.createTextNode(text);
+                highlight.parentNode.replaceChild(textNode, highlight);
             });
         }
 
@@ -502,6 +493,27 @@ window.addEventListener('load', async () => {
             authToken: !!window.authToken,
             getAllLexiconWords: typeof window.getAllLexiconWords
         });
+
+        // Puis déclarer checkAndRestoreHighlightingState
+        async function checkAndRestoreHighlightingState() {
+            try {
+                const { activeLexicons } = await browser.storage.local.get("activeLexicons");
+                // Ne rien faire si pas de lexiques actifs
+                if (!activeLexicons || !Array.isArray(activeLexicons) || activeLexicons.length === 0) {
+                    window.highlightingActive = false;
+                    highlightingActive = false;
+                    return;
+                }
+                log("🔄 État des lexiques trouvé:", activeLexicons);
+            } catch (error) {
+                console.error("❌ Erreur lors de la restauration de l'état:", error);
+                window.highlightingActive = false;
+                highlightingActive = false;
+            }
+        }
+
+        // Ne pas démarrer automatiquement le surlignage
+        checkAndRestoreHighlightingState();
     } catch (error) {
         console.error("🔴 Erreur critique dans l'IIFE:", error);
     }