diff --git a/lib/structs/events/common.cpp b/lib/structs/events/common.cpp
index a1d1b60d18e0f766abdd996f0133b71b444e3aa2..6245a2fdacf2a4cec6912fc49743e5b7f2fb62ef 100644
--- a/lib/structs/events/common.cpp
+++ b/lib/structs/events/common.cpp
@@ -60,12 +60,14 @@ from_json(const json &obj, ImageInfo &info)
 void
 to_json(json &obj, const ImageInfo &info)
 {
-        obj["h"]              = info.h;
-        obj["w"]              = info.w;
-        obj["size"]           = info.size;
-        obj["mimetype"]       = info.mimetype;
-        obj["thumbnail_url"]  = info.thumbnail_url;
-        obj["thumbnail_info"] = info.thumbnail_info;
+        obj["h"]        = info.h;
+        obj["w"]        = info.w;
+        obj["size"]     = info.size;
+        obj["mimetype"] = info.mimetype;
+        if (!info.thumbnail_url.empty()) {
+                obj["thumbnail_url"]  = info.thumbnail_url;
+                obj["thumbnail_info"] = info.thumbnail_info;
+        }
         if (info.thumbnail_file)
                 obj["thumbnail_file"] = info.thumbnail_file.value();
 }
@@ -92,10 +94,12 @@ from_json(const json &obj, FileInfo &info)
 void
 to_json(json &obj, const FileInfo &info)
 {
-        obj["size"]           = info.size;
-        obj["mimetype"]       = info.mimetype;
-        obj["thumbnail_url"]  = info.thumbnail_url;
-        obj["thumbnail_info"] = info.thumbnail_info;
+        obj["size"]     = info.size;
+        obj["mimetype"] = info.mimetype;
+        if (!info.thumbnail_url.empty()) {
+                obj["thumbnail_url"]  = info.thumbnail_url;
+                obj["thumbnail_info"] = info.thumbnail_info;
+        }
         if (info.thumbnail_file)
                 obj["thumbnail_file"] = info.thumbnail_file.value();
 }
diff --git a/tests/messages.cpp b/tests/messages.cpp
index cfa1b9b5d08bc5e29e9c536fd78c0d8a1d60ac89..e0e613b4278ff3e7872a264f489320392070aa84 100644
--- a/tests/messages.cpp
+++ b/tests/messages.cpp
@@ -130,7 +130,14 @@ TEST(RoomEvents, FileMessage)
             "body": "optimize.pdf",
             "info": {
               "mimetype": "application/pdf",
-              "size": 40565
+              "size": 40565,
+	      "thumbnail_info": {
+                "h": 200,
+                "mimetype": "image/png",
+                "size": 73602,
+                "w": 140
+              },
+	      "thumbnail_url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn"
             },
             "msgtype": "m.file",
             "url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn",
@@ -161,6 +168,15 @@ TEST(RoomEvents, FileMessage)
         EXPECT_EQ(event.content.info.size, 40565);
         EXPECT_EQ(event.content.relates_to.in_reply_to.event_id,
                   "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E");
+
+        json withThumb = event;
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1);
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1);
+
+        event.content.info.thumbnail_url = "";
+        json withoutThumb                = event;
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0);
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0);
 }
 
 TEST(RoomEvents, EncryptedImageMessage)
@@ -300,6 +316,15 @@ TEST(RoomEvents, ImageMessage)
         EXPECT_EQ(event.content.info.thumbnail_info.size, 33504);
         EXPECT_EQ(event.content.relates_to.in_reply_to.event_id,
                   "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E");
+
+        json withThumb = event;
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1);
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1);
+
+        event.content.info.thumbnail_url = "";
+        json withoutThumb                = event;
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0);
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0);
 }
 
 TEST(RoomEvents, LocationMessage) {}