diff --git a/src/pub/index.js b/src/pub/index.js
index ec37f0e..a6393cd 100644
--- a/src/pub/index.js
+++ b/src/pub/index.js
@@ -65,8 +65,16 @@ document.addEventListener("DOMContentLoaded", async () => {
.replace(/\*\*(.*?)\*\*/g, '$1')
// Italic
.replace(/\*(.*?)\*/g, '$1')
- // Links
- .replace(/\[(.*?)\]\((.*?)\)/g, '$1')
+ // Markdown links [text](url) - use placeholder to avoid double-linking
+ .replace(/\[(.*?)\]\((.*?)\)/g, '[[LINK:$2:$1]]');
+
+ // Raw URLs (convert before restoring markdown links)
+ result = result.replace(/(https?:\/\/[^\s<>\)\]]+)/g, '$1');
+
+ // Restore markdown links from placeholders
+ result = result.replace(/\[\[LINK:(.*?):(.*?)\]\]/g, '$2');
+
+ result = result
// Code
.replace(/`(.*?)`/g, '$1')
// List items - convert to proper list