diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 09d8ec5e1e162fd02056077d6f77e7e20494d9ea..501f35bee5c3957c3d3a2f89f638082fc8a606f6 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -244,6 +244,8 @@
   let variablesHistory: string[] = $state([])
   let windowInnerWidth: number | undefined = $state(undefined)
 
+  let saveButtonClicked: boolean = $state(false)
+
   function auditSimulationQuery(
     audit: Audit,
     query: URLSearchParams,
@@ -1247,10 +1249,21 @@
             {#if (displayMode.parametersVariableName !== undefined || displayMode.testCasesIndex.length > 0) && (mobileLawTab || !displayMode.budget) && displayMode.edit === undefined}
               <button
                 class="absolute -bottom-4 right-2 z-30 flex items-center gap-2 rounded border border-le-bleu bg-white px-5 py-2 text-sm font-bold uppercase tracking-[0.085em] text-le-bleu shadow-lg transition-all duration-200 ease-out-back hover:bg-gray-100 active:bg-gray-200 disabled:scale-90 disabled:opacity-0 lg:right-5 xl:right-10"
-                onclick={shareTestCaseSimulationLink}
+                onclick={async () => {
+                  if (saveButtonClicked) {
+                    return
+                  }
+                  saveButtonClicked = true
+                  await shareTestCaseSimulationLink()
+                  saveButtonClicked = false
+                }}
                 id="situation_savebutton"
               >
-                <span class="hidden lg:inline">Enregistrer / partager</span>
+                <span class="hidden lg:inline"
+                  >{saveButtonClicked
+                    ? "Génération en cours..."
+                    : "Enregistrer / partager"}</span
+                >
                 <iconify-icon class="text-lg" icon="ri:share-fill"
                 ></iconify-icon>
               </button>