diff --git a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
index 878162a58c1405d4bbede209979cf97b53b82ace..9fdb694740e8fd6817d511f173009012a3ab2375 100644
--- a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
+++ b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php
@@ -641,6 +641,7 @@ class SchedulerModuleController
                 'g.description AS taskGroupDescription',
                 'g.uid AS taskGroupId',
                 'g.deleted AS isTaskGroupDeleted',
+                'g.hidden AS isTaskGroupHidden',
             )
             ->from('tx_scheduler_task', 't')
             ->leftJoin(
@@ -723,6 +724,7 @@ class SchedulerModuleController
                     'groupName' => $row['taskGroupName'],
                     'groupDescription' => $row['taskGroupDescription'],
                     'taskGroupCollapsed' => (bool)($moduleData->get('task-group-' . ($row['taskGroupId'] ?? 0), false)),
+                    'groupHidden' => $row['isTaskGroupHidden'],
                 ];
             }
             $taskGroupsWithTasks[(int)$row['task_group']]['tasks'][] = $taskData;
diff --git a/typo3/sysext/scheduler/Resources/Private/Language/locallang.xlf b/typo3/sysext/scheduler/Resources/Private/Language/locallang.xlf
index 0b120de3c671421fac3a5896c27d6d2beca5d554..53bd8a160122624522a767769c6bb930316d591f 100644
--- a/typo3/sysext/scheduler/Resources/Private/Language/locallang.xlf
+++ b/typo3/sysext/scheduler/Resources/Private/Language/locallang.xlf
@@ -393,6 +393,9 @@
 			<trans-unit id="status.disabled" resname="status.disabled">
 				<source>disabled</source>
 			</trans-unit>
+			<trans-unit id="status.disabledByGroup" resname="status.disabledByGroup">
+				<source>disabled by group</source>
+			</trans-unit>
 			<trans-unit id="status.failure" resname="status.failure">
 				<source>failure</source>
 			</trans-unit>
diff --git a/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html b/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
index 7da76ff692f48079d990742121f0d22cf1750960..7614e04cba3472eabe98eda1578ad53e823a6d5f 100644
--- a/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
+++ b/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
@@ -31,6 +31,11 @@
                             </f:then>
                             <f:else>
                                 <span>{taskGroup.groupName}</span> (<span class="t3js-table-total-items" title="{f:translate(key: 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.group.taskCount')}">{taskGroup.tasks -> f:count()}</span>)
+                                <f:if condition="{taskGroup.groupHidden}">
+                                    <span class="badge badge-warning">
+                                        <f:translate key="LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.disabled" />
+                                    </span>
+                                </f:if>
                             </f:else>
                         </f:if>
                     </button>
@@ -158,7 +163,7 @@
                                             <f:if condition="{task.isRunning}">
                                                 <span class="badge badge-success"><f:translate key="LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.running" /></span>
                                             </f:if>
-                                            <f:if condition="{task.nextExecution} && {task.nextExecution} < {now}">
+                                            <f:if condition="{task.nextExecution} && {task.nextExecution} < {now} && !{taskGroup.groupHidden} && !{task.disabled}">
                                                 <span
                                                     class="badge badge-warning"
                                                     title="{f:translate(key:'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.legend.scheduled')}"
@@ -167,7 +172,10 @@
                                                 </span>
                                             </f:if>
                                             <f:if condition="{task.disabled} && !{task.isRunning}">
-                                                <span class="badge badge-default"><f:translate key="LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.disabled" /></span>
+                                                <span class="badge badge-warning"><f:translate key="LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.disabled" /></span>
+                                            </f:if>
+                                            <f:if condition="{taskGroup.groupHidden} && !{task.isRunning}">
+                                                <span class="badge badge-warning"><f:translate key="LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:status.disabledByGroup" /></span>
                                             </f:if>
                                             <f:if condition="{task.lastExecutionFailure}">
                                                 <f:if condition="{task.lastExecutionFailureMessage}">
@@ -241,7 +249,7 @@
                                             </f:if>
                                         </td>
                                         <td>
-                                            <f:if condition="{task.isRunning} || {task.disabled}">
+                                            <f:if condition="{task.isRunning} || {task.disabled} || {taskGroup.groupHidden}">
                                                 <f:then>-</f:then>
                                                 <f:else>
                                                     <f:if condition="{task.nextExecution}">