diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index b451fe14d8fc591bad1df2b2cc6f2c1ed0120d0a..fa5438600e5442e1559ce0d62ef76e1108a0239d 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -519,6 +519,9 @@ class Course_StatusgroupsController extends AuthenticatedController
             Request::getArray('dates')
         );
 
+        $group->description = trim(Request::get('description')) ?: null;
+        $group->store();
+
         if (!$group_id) {
             PageLayout::postSuccess(sprintf(
                 _('Die Gruppe "%s" wurde angelegt.'),
diff --git a/app/views/course/statusgroups/edit.php b/app/views/course/statusgroups/edit.php
index d4bdde24b366b1454d3cc0b266b0fd78a0df31ae..72dac2ea7be8e9c8680173a03726fcf48803a029 100644
--- a/app/views/course/statusgroups/edit.php
+++ b/app/views/course/statusgroups/edit.php
@@ -6,15 +6,20 @@
             <?= _('Einstellungen') ?>
         </legend>
 
-        <label for="name" class="required">
-            <?= _('Name') ?>
+        <label>
+            <span class="required"><?= _('Name') ?></span>
+            <input type="text" name="name" size="75" maxlength="255" value="<?= htmlReady($group->name) ?>" required>
         </label>
-        <input type="text" name="name" size="75" maxlength="255" value="<?= htmlReady($group->name) ?>" required>
 
-        <label for="size">
+        <label>
+            <?= _('Beschreibung') ?>
+            <textarea name="description"><?= htmlReady($group->description) ?></textarea>
+        </label>
+
+        <label>
             <?= _('Gruppengröße') ?>
+            <input type="number" name="size" value="<?= intval($group->size) ?>" min="0">
         </label>
-        <input type="number" name="size" value="<?= intval($group->size) ?>" min="0">
 
         <?php if ($group->isNew() || !$group->hasFolder()) : ?>
             <label>
diff --git a/app/views/course/statusgroups/groupinfo.php b/app/views/course/statusgroups/groupinfo.php
index 6d3b17d82d92513661248dc082b92f417165b07c..32890bf26dfb536f54fb833de65ec42f21ebb65b 100644
--- a/app/views/course/statusgroups/groupinfo.php
+++ b/app/views/course/statusgroups/groupinfo.php
@@ -2,6 +2,12 @@
     <h1><?= sprintf(_('Informationen zu %s'), htmlReady($group->name)) ?></h1>
 </header>
 <section>
+    <? if ($group->description): ?>
+        <p>
+            <?= formatLinks($group->description) ?>
+        </p>
+    <? endif ?>
+
     <p>
         <?= $group->size > 0 ?
             formatReady(sprintf(_('Diese Gruppe ist auf **%u** Mitglieder beschränkt.'), $group->size)) :
diff --git a/db/migrations/5.2.4_statusgruppe_description.php b/db/migrations/5.2.4_statusgruppe_description.php
new file mode 100644
index 0000000000000000000000000000000000000000..87d6ddb084537f4195b158d361053b03279d5869
--- /dev/null
+++ b/db/migrations/5.2.4_statusgruppe_description.php
@@ -0,0 +1,22 @@
+<?php
+class StatusgruppeDescription extends Migration
+{
+    public function description()
+    {
+        return 'add optional description to status groups';
+    }
+
+    public function up()
+    {
+        $db = DBManager::get();
+
+        $db->exec('ALTER TABLE statusgruppen ADD description TEXT DEFAULT NULL AFTER name');
+    }
+
+    public function down()
+    {
+        $db = DBManager::get();
+
+        $db->exec('ALTER TABLE statusgruppen DROP description');
+    }
+}