diff --git a/src/core/schedules/schedulejson.py b/src/core/schedules/schedulejson.py
index ed9e9d90ec0ac0a07ae09d8cab42cf55c22486ec..775e5a23bf37c760025722dc364978805672660b 100644
--- a/src/core/schedules/schedulejson.py
+++ b/src/core/schedules/schedulejson.py
@@ -46,6 +46,13 @@ class ScheduleJSONSupport(BaseScheduleSupport):
 
         kind = self.conf_value('kind')
 
+        def ensure_full_url(uri):
+            if not uri:
+                return None
+            if not uri.startswith('http') and not uri.startswith('//'):
+                return f'{host}{uri}'
+            return uri
+
         return {
             'version': schedule.version(),
             'rooms': {r['name']: r for r in schedule.rooms()},
@@ -66,7 +73,7 @@ class ScheduleJSONSupport(BaseScheduleSupport):
                     'is_public': True,
                     'kind': kind,
                     'speakers': e.get('persons', []),
-                    'banner_image_url': f"{host}{e.get('logo')}" if e.get('logo') else None,
+                    'banner_image_url': ensure_full_url(e.get('logo')),
                     'additional_data': filter_additional_data(e, self.computed_data(e)),
                 }
                 for e in schedule.events()