diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue
index d24a9004281ac839023ea551b5b21f7d6b41b589..ac4d31792390cbad229313d4de3ee0353eceaf50 100644
--- a/resources/vue/components/AdminCourses.vue
+++ b/resources/vue/components/AdminCourses.vue
@@ -9,6 +9,14 @@
                 {{ coursesCount + ' ' + $gettext('Veranstaltungen') }}
             </span>
         </caption>
+        <colgroup>
+            <col v-if="showComplete">
+            <col v-for="activeField in sortedActivatedFields"
+                 :key="`col-${activeField}`"
+                 :style="{width: activeField === 'contents' && contentWidth !== null ? `${contentWidth}px` : null}"
+            >
+            <col>
+        </colgroup>
         <thead>
             <tr class="sortable">
                 <th v-if="showComplete" :class="sort.by === 'completion' ? 'sort' + sort.direction.toLowerCase() : ''">
@@ -126,11 +134,26 @@ export default {
             },
             currentLine: null,
             open_children: [],
+            contentWidth: null,
         };
     },
     created() {
         this.loadCourses();
     },
+    updated() {
+        const iconNavigations = this.$el.querySelectorAll('tbody .my-courses-navigation');
+
+        if (iconNavigations.length === 0) {
+            this.contentWidth = null;
+            return;
+        }
+
+        const iconCounts = Array.from(iconNavigations).map(node => {
+            return node.querySelectorAll('.my-courses-navigation-item').length;
+        });
+
+        this.contentWidth = Math.max(...iconCounts) * 26;
+    },
     computed: {
         ...mapState('admincourses', [
             'activatedFields',