diff --git a/src/core/admin.py b/src/core/admin.py
index 670b8fd99bcf77c81e6c55f983ecae3c413630a8..819f7fa5a9d9b8a05b03067f88893ca5f3a8ef55 100644
--- a/src/core/admin.py
+++ b/src/core/admin.py
@@ -342,7 +342,7 @@ class RoomAdmin(admin.ModelAdmin):
 
     fieldsets = (
         ('Organisation', {
-            'fields': ['id', 'conference', 'assembly', 'blocked', 'reserve_capacity'],
+            'fields': ['id', 'conference', 'assembly', 'is_public_fahrplan', 'blocked', 'reserve_capacity'],
         }),
         ('Data', {
             'fields': ['name', 'room_type', 'capacity', 'occupants'],
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index 2ba3b3a1edabb4f68915231c26f8c4d831f7e54e..936e656c0c45a3ca1badd9de8c41d9af534f2282 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -810,6 +810,12 @@ msgstr "öffentliche Information (Markdown unterstützt)"
 msgid "Room__description"
 msgstr "Beschreibung"
 
+msgid "Room__is_public_fahrplan__help"
+msgstr "wird im public fahrplan angezeigt (insbes. ohne Login)"
+
+msgid "Room__is_public_fahrplan"
+msgstr "public_fahrplan"
+
 msgid "Room__type__help"
 msgstr "Art des Raums"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index 204ae3184274a6c2afba4bb2ce7ba07230177541..7037487469959983ca8f0ba7da1935ff3c512554 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -816,6 +816,12 @@ msgstr "public information"
 msgid "Room__description"
 msgstr "description"
 
+msgid "Room__is_public_fahrplan__help"
+msgstr "shown in the public fahrplan"
+
+msgid "Room__is_public_fahrplan"
+msgstr "public fahrplan"
+
 msgid "Room__type__help"
 msgstr "type of room"
 
diff --git a/src/core/migrations/0050_Room_is_public_fahrplan.py b/src/core/migrations/0050_Room_is_public_fahrplan.py
new file mode 100644
index 0000000000000000000000000000000000000000..e81e06bbf637a464ace5c21c9761d5cb477d2388
--- /dev/null
+++ b/src/core/migrations/0050_Room_is_public_fahrplan.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.4 on 2020-12-26 13:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0049_Event_repair_start'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='room',
+            name='is_public_fahrplan',
+            field=models.BooleanField(default=False, help_text='Room__is_public_fahrplan__help', verbose_name='Room__is_public_fahrplan'),
+        ),
+    ]
diff --git a/src/core/models/rooms.py b/src/core/models/rooms.py
index 3df44acb4eabc05867bd5c9b0086418b080b3dc1..ca6a33d56c8b2ceb54859a08d181a29f832fa189 100644
--- a/src/core/models/rooms.py
+++ b/src/core/models/rooms.py
@@ -119,6 +119,8 @@ class Room(models.Model):
     """Description of the room/project."""
     description_html = models.TextField(blank=True, null=True)
 
+    is_public_fahrplan = models.BooleanField(default=False, help_text=_('Room__is_public_fahrplan__help'), verbose_name=_('Room__is_public_fahrplan'))
+
     room_type = models.CharField(max_length=20, choices=RoomType.choices, help_text=_('Room__type__help'), verbose_name=_('Room__type'))
     """Style of the room."""
 
diff --git a/src/plainui/tests.py b/src/plainui/tests.py
index 131b2e631b9aa11f16f06c19e11796efa9973bed..f7344af7cd63a130a8c7f476c24ccd6a4aa6e638 100644
--- a/src/plainui/tests.py
+++ b/src/plainui/tests.py
@@ -1497,8 +1497,10 @@ class ViewsTest(TestCase):
 
         assembly = Assembly(conference=self.conf, slug='assembly1', name='Assembly1', state=Assembly.State.PLACED)
         assembly.save()
-        room = Room(conference=self.conf, assembly=assembly, name='Some Room')
+        room = Room(conference=self.conf, assembly=assembly, name='Some Room', is_public_fahrplan=True)
         room.save()
+        room2 = Room(conference=self.conf, assembly=assembly, name='Some Other Room', is_public_fahrplan=False)
+        room2.save()
         event = Event(
             conference=self.conf, assembly=assembly, name='Event1_1', is_public=True, room=room,
             schedule_start=datetime(2020, 1, 2, 0, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45),
@@ -1512,7 +1514,7 @@ class ViewsTest(TestCase):
         )
         event2.save()
         event3 = Event(
-            conference=self.conf, assembly=assembly, name='Event1_3', is_public=True, room=room,
+            conference=self.conf, assembly=assembly, name='Event1_3', is_public=True, room=room2,
             schedule_start=datetime(2020, 1, 2, 2, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45),
             kind=Event.Kind.ASSEMBLY,
         )
diff --git a/src/plainui/views.py b/src/plainui/views.py
index aca532f9b3dfc85ab3d2007165f7cbaa536abfd2..1c8b61bcc108422a529a2a5266c14470ad4d837a 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -1030,7 +1030,7 @@ def _organize_events_for_calendar(conf, events):
 UPCOMING_WINDOW = timedelta(minutes=30)
 
 
-def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None, room=None, user_schedule_only=False, upcoming=False):
+def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None, room=None, user_schedule_only=False, upcoming=False, public_fahrplan=False):
     min_date, max_date = conf.start, conf.end
     if min_date is None or max_date is None:
         return Event.objects.none()
@@ -1049,6 +1049,8 @@ def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None,
         filters['room'] = room
     if user_schedule_only:
         filters['in_personal_calendar'] = user
+    if public_fahrplan:
+        filters['room__is_public_fahrplan'] = True
 
     events = Event.objects.conference_accessible(conf)
     if upcoming:
@@ -1182,7 +1184,7 @@ class PublicFahrplanView(ConferenceRequiredMixin, TemplateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(conf=self.conf, **kwargs)
         context['mode'] = 'calendar'
-        events = _event_filter(self.request.user, self.conf, curated=True)
+        events = _event_filter(self.request.user, self.conf, public_fahrplan=True)
         context['events'] = _organize_events_for_calendar(self.conf, events)
         return context