diff --git a/src/sbbs3/mqtt.c b/src/sbbs3/mqtt.c
index cb82e4724231608bf07452f804d47d51687286c2..7cfbbc18b00b9d98bf95c6721d750d4925472e6b 100644
--- a/src/sbbs3/mqtt.c
+++ b/src/sbbs3/mqtt.c
@@ -132,6 +132,7 @@ static char* format_topic(struct mqtt* mqtt, enum server_type type, enum topic_d
 
 char* mqtt_topic(struct mqtt* mqtt, enum topic_depth depth, char* str, size_t size, const char* fmt, ...)
 {
+	char* p;
 	va_list argptr;
 	char sbuf[1024]="";
 
@@ -142,7 +143,9 @@ char* mqtt_topic(struct mqtt* mqtt, enum topic_depth depth, char* str, size_t si
 		va_end(argptr);
 	}
 
-	return format_topic(mqtt, mqtt->startup->type, depth, str, size, sbuf);
+	REPLACE_CHARS(sbuf, ' ', '_', p);
+	format_topic(mqtt, mqtt->startup->type, depth, str, size, sbuf);
+	return str;
 }
 
 static int mqtt_sub(struct mqtt* mqtt, const char* topic)