diff --git a/resources/misc/previewInterop.js b/resources/misc/previewInterop.js
index 4a8a30291ec2e67112abc098aee2f5a9182c0e64..16a73661a3aef335b7a1ed19e8869786139fe870 100644
--- a/resources/misc/previewInterop.js
+++ b/resources/misc/previewInterop.js
@@ -44,11 +44,12 @@ function getPreviewInfo(messageId, url) {
     })
 }
 
-function parseMessage(messageId, message) {
+function parseMessage(messageId, message, showPreview) {
     var links = linkify.find(message)
     if (links.length === 0) {
         return
     }
-    getPreviewInfo(messageId, links[0].href)
+    if (showPreview)
+        getPreviewInfo(messageId, links[0].href)
     window.jsbridge.linkifyReady(messageId, linkifyStr(message))
 }
diff --git a/src/commoncomponents/TextMessageDelegate.qml b/src/commoncomponents/TextMessageDelegate.qml
index 4f94a981873d967cc6fe6ff90661a284bdceb9fd..e9c4e21067a5d53398dd214a7232ffdb594aa279 100644
--- a/src/commoncomponents/TextMessageDelegate.qml
+++ b/src/commoncomponents/TextMessageDelegate.qml
@@ -25,6 +25,7 @@ import QtGraphicalEffects 1.15
 import net.jami.Models 1.1
 import net.jami.Adapters 1.1
 import net.jami.Constants 1.1
+import net.jami.Enums 1.1
 
 SBSMessageBase {
     id : root
@@ -170,7 +171,7 @@ SBSMessageBase {
     Behavior on opacity { NumberAnimation { duration: 100 } }
     Component.onCompleted: {
         if (!Linkified) {
-            MessagesAdapter.parseMessageUrls(Id, Body)
+            MessagesAdapter.parseMessageUrls(Id, Body, UtilsAdapter.getAppValue(Settings.DisplayHyperlinkPreviews))
         }
         opacity = 1
     }
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
index 2d0875c5ab27b4077092112d4a53925fc5592a80..efe43d1821a821785634d621c5854c2511736151 100644
--- a/src/messagesadapter.cpp
+++ b/src/messagesadapter.cpp
@@ -407,9 +407,9 @@ MessagesAdapter::onConversationMessagesLoaded(uint32_t, const QString& convId)
 }
 
 void
-MessagesAdapter::parseMessageUrls(const QString& messageId, const QString& msg)
+MessagesAdapter::parseMessageUrls(const QString& messageId, const QString& msg, bool showPreview)
 {
-    previewEngine_->parseMessage(messageId, msg);
+    previewEngine_->parseMessage(messageId, msg, showPreview);
 }
 
 void
diff --git a/src/messagesadapter.h b/src/messagesadapter.h
index aec4f65d983c35efbc4c626a1578efb87925d851..7e7138ac393f43bb5d445dee2142f3262ecfea27 100644
--- a/src/messagesadapter.h
+++ b/src/messagesadapter.h
@@ -105,7 +105,7 @@ protected:
     Q_INVOKABLE QVariantMap getMediaInfo(const QString& msg);
     Q_INVOKABLE bool isRemoteImage(const QString& msg);
     Q_INVOKABLE QString getFormattedTime(const quint64 timestamp);
-    Q_INVOKABLE void parseMessageUrls(const QString& messageId, const QString& msg);
+    Q_INVOKABLE void parseMessageUrls(const QString& messageId, const QString& msg, bool showPreview);
     Q_INVOKABLE void onPaste();
     Q_INVOKABLE QString getStatusString(int status);
     Q_INVOKABLE QVariantMap getTransferStats(const QString& messageId, int);
diff --git a/src/previewengine.cpp b/src/previewengine.cpp
index 439a91c5946792d2214a1e5968095bf26877d5bc..5796ff07bef2c1ceb3c8d22291736339fde5c5cc 100644
--- a/src/previewengine.cpp
+++ b/src/previewengine.cpp
@@ -70,9 +70,9 @@ PreviewEngine::PreviewEngine(QObject* parent)
 }
 
 void
-PreviewEngine::parseMessage(const QString& messageId, const QString& msg)
+PreviewEngine::parseMessage(const QString& messageId, const QString& msg, bool showPreview)
 {
-    page()->runJavaScript(QString("parseMessage(`%1`, `%2`)").arg(messageId, msg));
+    page()->runJavaScript(QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false"));
 }
 
 void
diff --git a/src/previewengine.h b/src/previewengine.h
index 9b45c6428e1dd854ccd7b5a2c99c2cad4a0740f1..8cb7e322f35dc8aceb8f9c4eedd40a7308041500 100644
--- a/src/previewengine.h
+++ b/src/previewengine.h
@@ -52,7 +52,7 @@ public:
     explicit PreviewEngine(QObject* parent = nullptr);
     ~PreviewEngine() = default;
 
-    void parseMessage(const QString& messageId, const QString& msg);
+    void parseMessage(const QString& messageId, const QString& msg, bool showPreview);
 
 Q_SIGNALS:
     void infoReady(const QString& messageId, const QVariantMap& info);
diff --git a/src/settingsview/components/ChatviewSettings.qml b/src/settingsview/components/ChatviewSettings.qml
index 344bb4c5d57f2a2102ad2957cb701333caf9446a..660807e6668515e4283b49391d6cb281c2d0b49b 100644
--- a/src/settingsview/components/ChatviewSettings.qml
+++ b/src/settingsview/components/ChatviewSettings.qml
@@ -75,7 +75,6 @@ ColumnLayout {
 
         onSwitchToggled: {
             UtilsAdapter.setAppValue(Settings.Key.DisplayHyperlinkPreviews, checked)
-            MessagesAdapter.setDisplayLinks()
         }
     }
 }