diff --git a/server.py b/server.py
index 8ece609dd1667136ed89aacbfa86ace040b85048..d2a585c0724c67f41414eb3f73b2d127cb43b79b 100644
--- a/server.py
+++ b/server.py
@@ -206,7 +206,11 @@ def index():
 @register_navbar('Videos', icon='film')
 def courses():
 	courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed)) ORDER BY lower(semester), lower(title)', ismod())
+	chapters = {}
+	for i in query('SELECT lectures.course_id AS id, COUNT(chapters.id) AS c FROM chapters JOIN lectures ON chapters.lecture_id = lectures.id WHERE NOT chapters.visible GROUP BY lectures.course_id'):
+		chapters[i['id']] = i['c']
 	for course in courses:
+		course['chapter_count'] = chapters.get(course['id'], 0)
 		if course['semester'] == '':
 			course['semester'] = 'zeitlos'
 	groupedby = request.args.get('groupedby')
@@ -224,11 +228,15 @@ def course(id=None, handle=None):
 		course = query('SELECT * FROM courses WHERE handle = ? AND (? OR visible)', handle, ismod())[0]
 	course['perm'] = query('SELECT * FROM perm WHERE (NOT perm.deleted) AND course_id = ? ORDER BY type', course['id'])
 	perms = query('SELECT perm.* FROM perm JOIN lectures ON (perm.lecture_id = lectures.id) WHERE (NOT perm.deleted) AND lectures.course_id = ? ORDER BY perm.type', course['id'])
+	chapters = {}
+	for i in query('SELECT lectures.id AS id, COUNT(chapters.id) AS c FROM chapters JOIN lectures ON chapters.lecture_id = lectures.id WHERE lectures.course_id = ? GROUP BY chapters.lecture_id;', course['id']):
+		chapters[i['id']] = i['c']
 	lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible) ORDER BY time, duration DESC', course['id'], ismod())
 	for lecture in lectures:
 		lecture['perm'] = []
 		lecture['perm'] += course['perm']
 		lecture['course'] = course
+		lecture['chapter_count'] = chapters.get(lecture['id'], 0)
 		for perm in perms:
 			if perm['lecture_id'] == lecture['id']:
 				lecture['perm'].append(perm)
diff --git a/templates/courses.html b/templates/courses.html
index 6b8ee827a37f921af04ce795dc4ae7d9ff97758c..9eb562f0905ef49a41c9730f0f68f13525bb3f16 100644
--- a/templates/courses.html
+++ b/templates/courses.html
@@ -71,7 +71,7 @@
 				{% if groupedby == 'semester' %}
 					{{ course_list_item(i) }}
 				{% else %}
-					{{ course_list_item(i,true) }}
+					{{ course_list_item(i, true) }}
 				{% endif %}
 			{% endfor %}
 		</ul>
diff --git a/templates/macros.html b/templates/macros.html
index 49fb6633300d0a29a4403b963a71a3e60fb36baa..ea67c2a75544349d59f2664c1051fada3dac478e 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -155,6 +155,9 @@ $(function() {
 				<a href="{{url_for('course', handle=course.handle)}}">
 					{{ course.title }}{% if ismod() %}<i> ({{course.id}})</i>{% endif %}
 				</a>
+				{% if course.chapter_count|d(0) > 0 and ismod() %}
+					<span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ course.chapter_count }}</span>
+				{% endif %}
 			</span>
 			<span class="col-xs-8 col-md-3">
 				{{ course.organizer }}
@@ -216,7 +219,13 @@ $('#embedcodebtn').popover(
 			{% endif %}
 			</div>
 			<ul class="list-unstyled col-sm-3 col-xs-12">
-				<li>{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}{{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}}</li>
+				<li>
+					{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}
+					{{ livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length) }}
+					{% if lecture.chapter_count|d(0) > 0 and ismod() %}
+						<span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ lecture.chapter_count }}</span>
+					{% endif %}
+				</li>
 				{% if lecture.speaker or ismod() %}<li>Gehalten von {{ moderator_editor(['lectures',lecture.id,'speaker'], lecture.speaker) }}</li>{% endif %}
 				{% if ismod() %}
 				<li>{{ moderator_editor(['lectures',lecture.id,'time'], lecture.time) }} </li>
@@ -263,7 +272,13 @@ $('#embedcodebtn').popover(
 			<div class="col-sm-2 col-xs-12">
 			</div>
 			<ul class="list-unstyled col-sm-3 col-xs-12">
-				<li>{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}{{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}}</li>
+				<li>
+					{{ moderator_editor(['lectures',lecture.id,'title'], lecture.title) }}
+					{{livelabel((lecture.live and lecture.time > datetime.now()-timedelta(days=1)), videos|selectattr("livehandle")|list|length)}}
+					{% if lecture.chapter_count|d(0) > 0 and ismod() %}
+						<span class="label label-info" data-toggle="tooltip" title="Nicht freigegebene Kapitel">{{ lecture.chapter_count }}</span>
+					{% endif %}
+				</li>
 			</ul>
 			<ul class="list-unstyled col-sm-3 col-xs-12">
 				{% if ismod() %}