diff --git a/src/App.scss b/src/App.scss
index 2426b998..43786e9d 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -433,3 +433,23 @@ nav {
   text-align: right;
   padding-right: 20px;
 }
+
+.visibility-tray {
+  font-size: 1.2em;
+  padding: 3px;
+  cursor: pointer;
+
+  .selected {
+    color: $fallback--lightFg;
+    color: var(--lightFg, $fallback--lightFg);
+  }
+}
+
+.visibility-notice {
+  padding: .5em;
+  border: 1px solid $fallback--faint;
+  border: 1px solid var(--faint, $fallback--faint);
+  border-radius: $fallback--inputRadius;
+  border-radius: var(--inputRadius, $fallback--inputRadius);
+}
+
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 61f2ac0a..ff3bb906 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -54,7 +54,7 @@ const PostStatusForm = {
       newStatus: {
         status: statusText,
         files: [],
-        visibility: this.messageScope || 'public'
+        visibility: this.messageScope || this.$store.state.users.currentUser.default_scope
       },
       caret: 0
     }
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 7aa0e7c4..3749271d 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -99,25 +99,6 @@
   }
 }
 
-.post-status-form .visibility-tray {
-  font-size: 1.2em;
-  padding: 3px;
-  cursor: pointer;
-
-  .selected {
-    color: $fallback--lightFg;
-    color: var(--lightFg, $fallback--lightFg);
-  }
-}
-
-.visibility-notice {
-  padding: .5em;
-  border: 1px solid $fallback--faint;
-  border: 1px solid var(--faint, $fallback--faint);
-  border-radius: $fallback--inputRadius;
-  border-radius: var(--inputRadius, $fallback--inputRadius);
-}
-
 .post-status-form, .login {
   .form-bottom {
     display: flex;
diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js
index 443e63dd..b5b9dda6 100644
--- a/src/components/user_settings/user_settings.js
+++ b/src/components/user_settings/user_settings.js
@@ -6,6 +6,7 @@ const UserSettings = {
       newname: this.$store.state.users.currentUser.name,
       newbio: this.$store.state.users.currentUser.description,
       newlocked: this.$store.state.users.currentUser.locked,
+      newdefaultScope: this.$store.state.users.currentUser.default_scope,
       followList: null,
       followImportError: false,
       followsImported: false,
@@ -29,20 +30,35 @@ const UserSettings = {
     },
     pleromaBackend () {
       return this.$store.state.config.pleromaBackend
-    }
+    },
+    scopeOptionsEnabled () {
+      return this.$store.state.config.scopeOptionsEnabled
+    },
+    vis () {
+      return {
+        public: { selected: this.newdefaultScope === 'public' },
+        unlisted: { selected: this.newdefaultScope === 'unlisted' },
+        private: { selected: this.newdefaultScope === 'private' },
+        direct: { selected: this.newdefaultScope === 'direct' }
+      }
+    },
   },
   methods: {
     updateProfile () {
       const name = this.newname
       const description = this.newbio
       const locked = this.newlocked
-      this.$store.state.api.backendInteractor.updateProfile({params: {name, description, locked}}).then((user) => {
+      const default_scope = this.newdefaultScope
+      this.$store.state.api.backendInteractor.updateProfile({params: {name, description, locked, default_scope}}).then((user) => {
         if (!user.error) {
           this.$store.commit('addNewUsers', [user])
           this.$store.commit('setCurrentUser', user)
         }
       })
     },
+    changeVis (visibility) {
+      this.newdefaultScope = visibility
+    },
     uploadFile (slot, e) {
       const file = e.target.files[0]
       if (!file) { return }
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 881b0fa1..1a52da0f 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -10,9 +10,18 @@
         <input class='name-changer' id='username' v-model="newname"></input>
         <p>{{$t('settings.bio')}}</p>
         <textarea class="bio" v-model="newbio"></textarea>
-        <div class="setting-item">
+        <p>
           <input type="checkbox" v-model="newlocked" id="account-locked">
           <label for="account-locked">{{$t('settings.lock_account_description')}}</label>
+        </p>
+        <div v-if="scopeOptionsEnabled">
+          <label for="default-vis">{{$t('settings.default_vis')}}</label>
+          <div id="default-vis" class="visibility-tray">
+             <i v-on:click="changeVis('direct')" class="icon-mail-alt" :class="vis.direct"></i>
+             <i v-on:click="changeVis('private')" class="icon-lock" :class="vis.private"></i>
+             <i v-on:click="changeVis('unlisted')" class="icon-lock-open-alt" :class="vis.unlisted"></i>
+             <i v-on:click="changeVis('public')" class="icon-globe" :class="vis.public"></i>
+          </div>
         </div>
         <button :disabled='newname.length <= 0' class="btn btn-default" @click="updateProfile">{{$t('general.submit')}}</button>
       </div>
diff --git a/src/i18n/messages.js b/src/i18n/messages.js
index 003df68c..185db5d9 100644
--- a/src/i18n/messages.js
+++ b/src/i18n/messages.js
@@ -332,7 +332,8 @@ const en = {
     confirm_new_password: 'Confirm new password',
     changed_password: 'Password changed successfully!',
     change_password_error: 'There was an issue changing your password.',
-    lock_account_description: 'Restrict your account to approved followers only'
+    lock_account_description: 'Restrict your account to approved followers only',
+    default_vis: 'Default visibility scope'
   },
   notifications: {
     notifications: 'Notifications',