diff --git a/etc/default-theme.conf b/etc/default-theme.conf
index af8bd44..024c5e9 100644
--- a/etc/default-theme.conf
+++ b/etc/default-theme.conf
@@ -432,7 +432,18 @@ message-window.account.unlocked.mark.value          = " 🔓"
 # the  string for  the  header  of attachments  in  a  message, if  not
 # specified a default is chosen by the software.
 
-#message-window.attachment-header.value             = " attachment "
+# message-window.attachment-header.value             = " attachment "
+
+# below  the  text  printed   for  toot's  visibility  level:  public,
+# unlisted, private or direct
+
+message-window.visibility.public = "🌐"
+
+message-window.visibility.unlisted = "🔓"
+
+message-window.visibility.private = "🔒"
+
+message-window.visibility.direct = "📧"
 
 # this is the window that allow to browse the attachments of a message
 
diff --git a/src/message-rendering-utils.lisp b/src/message-rendering-utils.lisp
index 2d91592..4303e55 100644
--- a/src/message-rendering-utils.lisp
+++ b/src/message-rendering-utils.lisp
@@ -223,12 +223,19 @@
               as-text))
         as-text)))
 
+(defun visibility->mark (visibility)
+  (let ((mapping (swconf:message-windows-visibility-marks)))
+    (db-getf mapping
+             (make-keyword (string-upcase visibility))
+             :default                  visibility
+             :only-empty-or-0-are-null t)))
+
 (defun message-original->text-header (message-row)
   (let* ((date-format      (swconf:date-fmt swconf:+key-message-window+))
          (username         (db:row-message-username          message-row))
          (display-name     (db:row-message-user-display-name message-row))
          (creation-time    (db:row-message-creation-time     message-row))
-         (visibility       (db:row-message-visibility        message-row))
+         (visibility       (visibility->mark (db:row-message-visibility message-row)))
          (lockedp          (db-utils:db-not-nil-p (db:row-lockedp message-row)))
          (locked-mark      (swconf:message-window-account-locking-status-mark lockedp))
          (encoded-date     (db-utils:encode-datetime-string creation-time))
diff --git a/src/package.lisp b/src/package.lisp
index e7b1a06..dc7e79d 100644
--- a/src/package.lisp
+++ b/src/package.lisp
@@ -1125,6 +1125,7 @@
    :message-window-unlocked-account-mark
    :message-window-account-locking-status-mark
    :message-window-line-mark-values
+   :message-windows-visibility-marks
    :message-window-attachments-header
    :form-style
    :background
diff --git a/src/software-configuration.lisp b/src/software-configuration.lisp
index 99eab2d..445886d 100644
--- a/src/software-configuration.lisp
+++ b/src/software-configuration.lisp
@@ -340,6 +340,11 @@
                    link
                    creation-time
                    access-time
+                   visibility
+                   public
+                   unlisted
+                   private
+                   direct
                    quote
                    h1
                    h2
@@ -956,6 +961,31 @@
                            +key-line-position-mark+
                            +key-background+)))
 
+(defun message-window-visibility-mark (visibility-level)
+  (access:accesses *software-configuration*
+                   +key-message-window+
+                   +key-visibility+
+                   visibility-level))
+
+
+(defmacro gen-visibility-mapping-marks (visibility-level)
+  `(defun ,(format-fn-symbol t "message-window-visibility-~a-mark" visibility-level) ()
+     (message-window-visibility-mark ,visibility-level)))
+
+(gen-visibility-mapping-marks "public")
+
+(gen-visibility-mapping-marks "unlisted")
+
+(gen-visibility-mapping-marks "private")
+
+(gen-visibility-mapping-marks "direct")
+
+(defun message-windows-visibility-marks ()
+  (list :public   (message-window-visibility-public-mark)
+        :unlisted (message-window-visibility-unlisted-mark)
+        :private  (message-window-visibility-private-mark)
+        :direct   (message-window-visibility-direct-mark)))
+
 (defun message-window-attachments-header ()
   (values (access:accesses *software-configuration*
                            +key-message-window+