diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 5232f16c938ff6da05c0f9454dc3b42c8a71ffe3..7c718ca8edab86c8ea31c6a580f98b80f644afac 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -585,22 +585,16 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
 
         auto ascent = QFontMetrics(UserSettings::instance()->font()).ascent();
 
-        bool isReply = utils::isReply(event);
+        bool isReply = mtx::accessors::relations(event).reply_to(false).has_value();
 
         auto formattedBody_ = QString::fromStdString(formatted_body(event));
         if (formattedBody_.isEmpty()) {
-            auto body_ = QString::fromStdString(body(event));
-
-            if (isReply) {
-                while (body_.startsWith(QLatin1String("> ")))
-                    body_ = body_.right(body_.size() - body_.indexOf('\n') - 1);
-                if (body_.startsWith('\n'))
-                    body_ = body_.right(body_.size() - 1);
-            }
-            formattedBody_ = body_.toHtmlEscaped().replace('\n', QLatin1String("<br>"));
-        } else {
-            if (isReply)
-                formattedBody_ = formattedBody_.remove(replyFallback);
+            // NOTE(Nico): replies without html can't have a fallback. If they do, eh, who cares.
+            formattedBody_ = QString::fromStdString(body(event))
+                               .toHtmlEscaped()
+                               .replace('\n', QLatin1String("<br>"));
+        } else if (isReply) {
+            formattedBody_ = formattedBody_.remove(replyFallback);
         }
         formattedBody_ = utils::escapeBlacklistedHtml(formattedBody_);