diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index a8ca745..a8c4c4b 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -569,6 +569,7 @@ chat_property_changed_cb (EmpathyTpChat *tp_chat,
 			  EmpathyChat   *chat)
 {
 	EmpathyChatPriv *priv = GET_PRIV (chat);
+    gchar           *subject_with_markup;
 
 	if (!tp_strdiff (name, "subject")) {
 		g_free (priv->subject);
@@ -578,7 +579,9 @@ chat_property_changed_cb (EmpathyTpChat *tp_chat,
 		if (EMP_STR_EMPTY (priv->subject)) {
 			gtk_widget_hide (priv->hbox_topic);
 		} else {
-			gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->subject);
+            subject_with_markup = empathy_add_markup (priv->subject);
+			gtk_label_set_markup (GTK_LABEL (priv->label_topic), subject_with_markup);
+            g_free (subject_with_markup);
 			gtk_widget_show (priv->hbox_topic);
 		}
 		if (priv->block_events_timeout_id == 0) {
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index a9a673c..4bec064 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -890,8 +890,11 @@ contact_widget_name_notify_cb (EmpathyContactWidget *information)
 static void
 contact_widget_presence_notify_cb (EmpathyContactWidget *information)
 {
-  gtk_label_set_text (GTK_LABEL (information->label_status),
-      empathy_contact_get_status (information->contact));
+  gchar *status_with_markup = empathy_add_markup (
+                              empathy_contact_get_status (information->contact));
+  gtk_label_set_markup (GTK_LABEL (information->label_status),
+      status_with_markup);
+  g_free (status_with_markup);
   gtk_image_set_from_icon_name (GTK_IMAGE (information->image_state),
       empathy_icon_name_for_contact (information->contact),
       GTK_ICON_SIZE_BUTTON);
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index e91ac62..0e8b2fc 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1539,4 +1539,53 @@ empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler)
 		G_CALLBACK (file_manager_receive_file_response_cb), handler);
 
 	gtk_widget_show (widget);
+}
+
+static gboolean
+empathy_markup_valid (const gchar* str)
+{
+    return g_str_has_prefix (str, "http://") ||
+           g_str_has_prefix (str, "https://") ||
+           g_str_has_prefix (str, "www.");
+}
+
+gchar*
+empathy_add_markup (const gchar* text)
+{
+    GString  *with_markup = g_string_new ("");
+    gchar    **splits;
+    gchar    *split, *ret;
+    int       i = 0;
+
+    splits = g_strsplit (text, " ", -1);
+
+    while ((split = splits[i]) != NULL)
+    {
+        g_string_append (with_markup, " ");
+
+        if (empathy_markup_valid (split)) {
+            g_string_append (with_markup, "<a href=\"");
+            /* FIXME: also : and / are escaped */
+            g_string_append_uri_escaped (with_markup, split,
+                                        G_URI_RESERVED_CHARS_GENERIC_DELIMITERS, TRUE);
+            g_string_append (with_markup, "\">");
+            /* FIXME: also : and / are escaped */
+            g_string_append_uri_escaped (with_markup, split,
+                                         G_URI_RESERVED_CHARS_GENERIC_DELIMITERS, TRUE);
+            g_string_append (with_markup, "</a>");
+        }
+        else {
+            /* FIXME: also : and / are escaped */
+            g_string_append_uri_escaped (with_markup, split,
+                                         G_URI_RESERVED_CHARS_GENERIC_DELIMITERS, TRUE);
+        }
+
+        i++;
+    }
+
+    ret = with_markup->str;
+    g_strfreev(splits);
+    g_string_free (with_markup, FALSE);
+
+    return ret;
 }
\ No newline at end of file
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 10f889b..3d5b8ab 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -112,6 +112,9 @@ GtkWidget * empathy_link_button_new                     (const gchar      *url,
 void        empathy_send_file_with_file_chooser         (EmpathyContact   *contact);
 void        empathy_receive_file_with_file_chooser      (EmpathyFTHandler *handler);
 
+/* URL */
+gchar*       empathy_add_markup                         (const gchar* text);
+
 G_END_DECLS
 
 #endif /*  __EMPATHY_UI_UTILS_H__ */
