diff --git a/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php b/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php
index 847934aebce9f69357733f39215d9622e8e6b9eb..7c035a5fad750b86435cda4f87cdd3ac006eb6c3 100644
--- a/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php
+++ b/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php
@@ -141,8 +141,14 @@ class LiveSearch
         $limit = $this->limitCount;
         $getRecordArray = [];
         foreach ($GLOBALS['TCA'] as $tableName => $value) {
-            // if no access for the table (read or write), skip this table
-            if (!$GLOBALS['BE_USER']->check('tables_select', $tableName) && !$GLOBALS['BE_USER']->check('tables_modify', $tableName)) {
+            // if no access for the table (read or write) or table is hidden, skip this table
+            if (
+                (
+                    !$GLOBALS['BE_USER']->check('tables_select', $tableName) &&
+                    !$GLOBALS['BE_USER']->check('tables_modify', $tableName)
+                ) ||
+                (isset($value['ctrl']['hideTable']) && $value['ctrl']['hideTable'])
+            ) {
                 continue;
             }
             $recordArray = $this->findByTable($tableName, $pageIdList, 0, $limit);