diff --git a/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml b/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml
index 7b006bae4fbdf3b72756a45408b7213290f32929..f42e394e18b710e8e9cbfaf49d78f080001c0290 100644
--- a/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml
+++ b/admin_toolbar_tools/admin_toolbar_tools.links.menu.yml
@@ -90,3 +90,10 @@ admin_toolbar_tools.settings:
   description: 'Configure the Admin Toolbar Tools module.'
   route_name: admin_toolbar_tools.settings
   parent: system.admin_config_ui
+
+system.run_reindex_site:
+  title: 'Re-index Site'
+  route_name: admin_toolbar.run.reindex.site
+  menu_name: admin
+  parent: admin_toolbar_tools.help
+  weight: -9
diff --git a/admin_toolbar_tools/admin_toolbar_tools.routing.yml b/admin_toolbar_tools/admin_toolbar_tools.routing.yml
index e5a0bfd5dc64c7482e5ab3fcac4923d161c823b1..ca9d57d339af4679d63fd46a45f16a37d02d86a3 100644
--- a/admin_toolbar_tools/admin_toolbar_tools.routing.yml
+++ b/admin_toolbar_tools/admin_toolbar_tools.routing.yml
@@ -95,3 +95,12 @@ admin_toolbar_tools.settings:
     _title: 'Admin Toolbar Tools settings'
   requirements:
     _permission: 'administer site configuration'
+
+admin_toolbar.run.reindex.site:
+  path: '/reindex-site'
+  defaults:
+    _controller: '\Drupal\admin_toolbar_tools\Controller\ToolbarController::runReindexSite'
+    _title: 'Re-index Site'
+  requirements:
+    _permission: 'administer site configuration'
+    _csrf_token: 'TRUE'
diff --git a/admin_toolbar_tools/src/Controller/ToolbarController.php b/admin_toolbar_tools/src/Controller/ToolbarController.php
index 169a719e0d8f109e574b52a8eb4f2c347ce7ec93..e4488e59d03f6b4206afb633f286457cf1ce0900 100644
--- a/admin_toolbar_tools/src/Controller/ToolbarController.php
+++ b/admin_toolbar_tools/src/Controller/ToolbarController.php
@@ -13,6 +13,7 @@ use Drupal\Core\Menu\MenuLinkManagerInterface;
 use Drupal\Core\Plugin\CachedDiscoveryClearerInterface;
 use Drupal\Core\Template\TwigEnvironment;
 use Drupal\Core\Theme\Registry;
+use Drupal\search\SearchPageRepositoryInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\RequestStack;
@@ -108,6 +109,13 @@ class ToolbarController extends ControllerBase {
    */
   protected $themeRegistry;
 
+  /**
+   * The search page repository service.
+   *
+   * @var \Drupal\search\SearchPageRepositoryInterface
+   */
+  protected SearchPageRepositoryInterface $searchPageRepository;
+
   /**
    * Constructs a ToolbarController object.
    *
@@ -135,6 +143,8 @@ class ToolbarController extends ControllerBase {
    *   A TwigEnvironment instance.
    * @param \Drupal\Core\Theme\Registry $theme_registry
    *   The theme.registry service.
+   * @param \Drupal\search\SearchPageRepositoryInterface $searchPageRepository
+   *  The search page repository service.
    */
   public function __construct(
     CronInterface $cron,
@@ -149,7 +159,9 @@ class ToolbarController extends ControllerBase {
     CacheBackendInterface $cache_menu,
     TwigEnvironment $twig,
     // phpcs:ignore Drupal.Functions.MultiLineFunctionDeclaration.MissingTrailingComma
-    Registry $theme_registry
+    Registry $theme_registry,
+    SearchPageRepositoryInterface $search_page_repository,
+
   ) {
     $this->cron = $cron;
     $this->menuLinkManager = $menuLinkManager;
@@ -163,6 +175,7 @@ class ToolbarController extends ControllerBase {
     $this->cacheMenu = $cache_menu;
     $this->twig = $twig;
     $this->themeRegistry = $theme_registry;
+    $this->searchPageRepository = $search_page_repository;
   }
 
   /**
@@ -181,7 +194,8 @@ class ToolbarController extends ControllerBase {
       $container->get('plugin.cache_clearer'),
       $container->get('cache.menu'),
       $container->get('twig'),
-      $container->get('theme.registry')
+      $container->get('theme.registry'),
+      $container->get('search.search_page_repository')
     );
   }
 
@@ -293,4 +307,18 @@ class ToolbarController extends ControllerBase {
     return new RedirectResponse($this->reloadPage());
   }
 
+/**
+ * Reindexes all active search pages.
+ */
+public function runReindexSite() {
+  // Ask each active search page to mark itself for re-index.
+  foreach ($this->searchPageRepository->getIndexableSearchPages() as $entity) {
+    $entity->getPlugin()->markForReindex();
+  }
+  // Run the cron to process the reindexing.
+  $this->cron->run();
+  $this->messenger()->addMessage($this->t('All search indexes have been rebuilt.'));
+  return new RedirectResponse($this->reloadPage());
+}
+
 }