diff --git a/CHANGELOG.md b/CHANGELOG.md
index 19b74ca099400a41f0f7dc4334ff58f5c0f3db91..2ed53c05db6bb514ad7ad1b36abf814e51209502 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 - Statuses count changes when an instance is selected and shows the amount of statuses from an originating instance
 - Add a dialog window with a confirmation when a remove button is clicked on the Settings page
+- Disable tab on the Settings page if there are no settings on this tab that can be changed in Admin FE
 
 ### Fixed
 
diff --git a/src/views/settings/components/ActivityPub.vue b/src/views/settings/components/ActivityPub.vue
index 4e5ab1b81f74573af8a5aa174201467db0d48076..67dee024f993f638abc3c3570ff2b9540e5fa9c6 100644
--- a/src/views/settings/components/ActivityPub.vue
+++ b/src/views/settings/components/ActivityPub.vue
@@ -3,7 +3,7 @@
     <el-form ref="activitypubData" :model="activitypubData" :label-position="labelPosition" :label-width="labelWidth" data-search=":activitypub">
       <setting :setting-group="activitypub" :data="activitypubData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="activitypub" class="divider thick-line"/>
     <el-form ref="userData" :model="userData" :label-position="labelPosition" :label-width="labelWidth" data-search=":user">
       <setting :setting-group="user" :data="userData"/>
     </el-form>
diff --git a/src/views/settings/components/Authentication.vue b/src/views/settings/components/Authentication.vue
index 69e5f1432fc4bfe78837de6e7db68104de3906d6..9b055aad7ce5b148d13b930cd92a0ce8cc608de4 100644
--- a/src/views/settings/components/Authentication.vue
+++ b/src/views/settings/components/Authentication.vue
@@ -3,15 +3,15 @@
     <el-form ref="pleromaAuthenticatorData" :model="pleromaAuthenticatorData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="pleromaAuthenticator" :data="pleromaAuthenticatorData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="pleromaAuthenticator" class="divider thick-line"/>
     <el-form ref="authData" :model="authData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="auth" :data="authData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="auth" class="divider thick-line"/>
     <el-form ref="ldapData" :model="ldapData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="ldap" :data="ldapData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="oauth2" class="divider thick-line"/>
     <el-form ref="oauth2" :model="oauth2Data" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="oauth2" :data="oauth2Data"/>
     </el-form>
diff --git a/src/views/settings/components/Captcha.vue b/src/views/settings/components/Captcha.vue
index 5e91074aa0584f05d1773d9c5063aa8ae5f8cfe6..97f067a69525481cd84895a8733508d5f6e49192 100644
--- a/src/views/settings/components/Captcha.vue
+++ b/src/views/settings/components/Captcha.vue
@@ -3,7 +3,7 @@
     <el-form ref="captchaData" :model="captchaData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="captcha" :data="captchaData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="captcha" class="divider thick-line"/>
     <el-form ref="kocaptchaData" :model="kocaptchaData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="kocaptcha" :data="kocaptchaData"/>
     </el-form>
diff --git a/src/views/settings/components/Frontend.vue b/src/views/settings/components/Frontend.vue
index 2af44656e0441a8761f038f734219ab65719fdf2..69f7a4b657e30770094933b6421033da983f59c3 100644
--- a/src/views/settings/components/Frontend.vue
+++ b/src/views/settings/components/Frontend.vue
@@ -6,27 +6,27 @@
     <el-form ref="staticFeData" :model="staticFeData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="staticFe" :data="staticFeData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="staticFe" class="divider thick-line"/>
     <el-form ref="assetsData" :model="assetsData" :label-position="labelPosition" :label-width="labelWidth">
-      <el-form-item class="grouped-settings-header">
+      <el-form-item v-if="assets" class="grouped-settings-header">
         <span class="label-font label-with-margin">{{ $t('settings.assets') }}</span>
       </el-form-item>
       <setting :setting-group="assets" :data="assetsData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="assets" class="divider thick-line"/>
     <el-form ref="emojiData" :model="emojiData" :label-position="labelPosition" :label-width="labelWidth">
-      <el-form-item data-search=":emoji" class="grouped-settings-header">
+      <el-form-item v-if="emoji" data-search=":emoji" class="grouped-settings-header">
         <span class="label-font label-with-margin">{{ $t('settings.emoji') }}</span>
       </el-form-item>
       <setting :setting-group="emoji" :data="emojiData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="emoji" class="divider thick-line"/>
     <el-form ref="chatData" :model="chatData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="chat" :data="chatData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="chat" class="divider thick-line"/>
     <el-form ref="markupData" :model="markupData" :label-position="labelPosition" :label-width="labelWidth">
-      <el-form-item data-search=":markup" class="grouped-settings-header">
+      <el-form-item v-if="markup" data-search=":markup" class="grouped-settings-header">
         <span class="label-font label-with-margin">{{ $t('settings.markup') }}</span>
       </el-form-item>
       <setting :setting-group="markup" :data="markupData"/>
diff --git a/src/views/settings/components/Http.vue b/src/views/settings/components/Http.vue
index 39042b61e0650bcff7d3bc7967094ac4dda15f2a..c9145d248cd0fc9a47a4686b34e55be5c1cb14bf 100644
--- a/src/views/settings/components/Http.vue
+++ b/src/views/settings/components/Http.vue
@@ -4,20 +4,20 @@
       <setting :setting-group="http" :data="httpData"/>
     </el-form>
     <el-form ref="corsPlugData" :model="corsPlugData" :label-position="labelPosition" :label-width="labelWidth">
-      <el-form-item data-search=":cors_plug" class="grouped-settings-header">
+      <el-form-item v-if="corsPlug" data-search=":cors_plug" class="grouped-settings-header">
         <span class="label-font label-with-margin">{{ $t('settings.corsPlug') }}</span>
       </el-form-item>
       <setting :setting-group="corsPlug" :data="corsPlugData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="corsPlug" class="divider thick-line"/>
     <el-form ref="httpSignatures" :model="httpSignaturesData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="httpSignatures" :data="httpSignaturesData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="httpSignatures" class="divider thick-line"/>
     <el-form ref="httpSecurityData" :model="httpSecurityData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="httpSecurity" :data="httpSecurityData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="httpSecurity" class="divider thick-line"/>
     <el-form ref="webCacheTtl" :model="webCacheTtlData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="webCacheTtl" :data="webCacheTtlData"/>
     </el-form>
diff --git a/src/views/settings/components/Instance.vue b/src/views/settings/components/Instance.vue
index 02abe6553e19fbb8c6a3a7ace5576c155b8e5dfa..3156c33f4dc19a4f07e8befc0c85c996e85387b9 100644
--- a/src/views/settings/components/Instance.vue
+++ b/src/views/settings/components/Instance.vue
@@ -3,27 +3,27 @@
     <el-form ref="instanceData" :model="instanceData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="instance" :data="instanceData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="instance" class="divider thick-line"/>
     <el-form ref="adminToken" :model="adminTokenData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="adminToken" :data="adminTokenData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="adminToken" class="divider thick-line"/>
     <el-form ref="scheduledActivity" :model="scheduledActivityData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="scheduledActivity" :data="scheduledActivityData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="scheduledActivity" class="divider thick-line"/>
     <el-form ref="manifest" :model="manifestData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="manifest" :data="manifestData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="manifest" class="divider thick-line"/>
     <el-form ref="pleromaUser" :model="pleromaUserData" :label-position="labelPosition" :label-width="labelWidth" data-search="Pleroma.User">
       <setting :setting-group="pleromaUser" :data="pleromaUserData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="pleromaUser" class="divider thick-line"/>
     <el-form ref="uriSchemes" :model="uriSchemesData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="uriSchemes" :data="uriSchemesData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="uriSchemes" class="divider thick-line"/>
     <el-form ref="feed" :model="feedData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="feed" :data="feedData"/>
     </el-form>
diff --git a/src/views/settings/components/Logger.vue b/src/views/settings/components/Logger.vue
index b9fb891e0df0d446e676f71437871d05ae27a14d..dc62d1538eb0bb8e9f4dce1a6889bd86edbee846 100644
--- a/src/views/settings/components/Logger.vue
+++ b/src/views/settings/components/Logger.vue
@@ -3,15 +3,15 @@
     <el-form ref="loggerData" :model="loggerData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="logger" :data="loggerData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="logger" class="divider thick-line"/>
     <el-form ref="consoleData" :model="consoleData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="console" :data="consoleData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="console" class="divider thick-line"/>
     <el-form ref="exsysloggerData" :model="exsysloggerData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="exsyslogger" :data="exsysloggerData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="exsyslogger" class="divider thick-line"/>
     <el-form ref="quackData" :model="quackData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="quack" :data="quackData"/>
     </el-form>
diff --git a/src/views/settings/components/MRF.vue b/src/views/settings/components/MRF.vue
index 94d3762e15925628f0ec64996725e069f974fc3d..977d15822d8fdec29a834a70bb7d5504d706edfa 100644
--- a/src/views/settings/components/MRF.vue
+++ b/src/views/settings/components/MRF.vue
@@ -3,15 +3,15 @@
     <el-form ref="mrfSimple" :model="mrfSimpleData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfSimple" :data="mrfSimpleData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfSimple" class="divider thick-line"/>
     <el-form ref="mrfRejectnonpublic" :model="mrfRejectnonpublicData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfRejectnonpublic" :data="mrfRejectnonpublicData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfRejectnonpublic" class="divider thick-line"/>
     <el-form ref="mrfHellthread" :model="mrfHellthreadData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfHellthread" :data="mrfHellthreadData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfHellthread" class="divider thick-line"/>
     <el-form ref="mrfKeyword" :model="mrfKeywordData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfKeyword" :data="mrfKeywordData"/>
     </el-form>
@@ -21,19 +21,19 @@
     <el-form ref="mrfMention" :model="mrfMentionData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfMention" :data="mrfMentionData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfMention" class="divider thick-line"/>
     <el-form ref="mrfNormalizeMarkup" :model="mrfNormalizeMarkupData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfNormalizeMarkup" :data="mrfNormalizeMarkupData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfNormalizeMarkup" class="divider thick-line"/>
     <el-form ref="mrfVocabulary" :model="mrfVocabularyData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfVocabulary" :data="mrfVocabularyData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfVocabulary" class="divider thick-line"/>
     <el-form ref="mrfObjectAge" :model="mrfObjectAgeData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mrfObjectAge" :data="mrfObjectAgeData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mrfObjectAge" class="divider thick-line"/>
     <el-form ref="modules" :model="modulesData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="modules" :data="modulesData"/>
     </el-form>
diff --git a/src/views/settings/components/Mailer.vue b/src/views/settings/components/Mailer.vue
index 0a438693ff4b3c9223e7d1de18cea4af7aa526b3..c62568a9b7838dd278bdb505618fa71557ff713e 100644
--- a/src/views/settings/components/Mailer.vue
+++ b/src/views/settings/components/Mailer.vue
@@ -3,11 +3,11 @@
     <el-form ref="mailer" :model="mailerData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="mailer" :data="mailerData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="mailer" class="divider thick-line"/>
     <el-form ref="swoosh" :model="swooshData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="swoosh" :data="swooshData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="swoosh" class="divider thick-line"/>
     <el-form ref="emailNotifications" :model="emailNotificationsData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="emailNotifications" :data="emailNotificationsData"/>
     </el-form>
diff --git a/src/views/settings/components/Metadata.vue b/src/views/settings/components/Metadata.vue
index b4aef7c8e34d4542615aad4283ca81708afdd40a..f0ef71c40f6bd2170bd7cfcbbd1a11d860c600d2 100644
--- a/src/views/settings/components/Metadata.vue
+++ b/src/views/settings/components/Metadata.vue
@@ -3,7 +3,7 @@
     <el-form ref="metadata" :model="metadataData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="metadata" :data="metadataData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="metadata" class="divider thick-line"/>
     <el-form ref="richMedia" :model="richMediaData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="richMedia" :data="richMediaData"/>
     </el-form>
diff --git a/src/views/settings/components/Upload.vue b/src/views/settings/components/Upload.vue
index b557fb5a7e70b5b32d0488f9f93f0fba105238c3..97860d75ebd862f916b0a7a13421c843b9aea537 100644
--- a/src/views/settings/components/Upload.vue
+++ b/src/views/settings/components/Upload.vue
@@ -4,20 +4,20 @@
       <setting :setting-group="upload" :data="uploadData"/>
     </el-form>
     <el-form v-if="showUploadersLocal" ref="uploadersLocal" :model="uploadersLocalData" :label-position="labelPosition" :label-width="labelWidth">
-      <el-form-item class="grouped-settings-header">
+      <el-form-item v-if="uploadersLocal" class="grouped-settings-header">
         <span class="label-font label-with-margin">Pleroma.Uploaders.Local</span>
       </el-form-item>
       <setting :setting-group="uploadersLocal" :data="uploadersLocalData"/>
-      <el-divider class="divider thick-line"/>
+      <el-divider v-if="uploadersLocal" class="divider thick-line"/>
     </el-form>
     <el-form v-if="showUploadersS3" ref="uploadersS3" :model="uploadersS3Data" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="uploadersS3" :data="uploadersS3Data"/>
-      <el-divider class="divider thick-line"/>
+      <el-divider v-if="uploadersS3" class="divider thick-line"/>
     </el-form>
     <el-form ref="uploadFilterMogrify" :model="uploadFilterMogrifyData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="uploadFilterMogrify" :data="uploadFilterMogrifyData"/>
     </el-form>
-    <el-divider class="divider thick-line"/>
+    <el-divider v-if="uploadFilterMogrify" class="divider thick-line"/>
     <el-form ref="uploadAnonymizeFilename" :model="uploadAnonymizeFilenameData" :label-position="labelPosition" :label-width="labelWidth">
       <setting :setting-group="uploadAnonymizeFilename" :data="uploadAnonymizeFilenameData"/>
     </el-form>
diff --git a/src/views/settings/components/tabs.js b/src/views/settings/components/tabs.js
index f9b41621ae3e6ba09ef114db166d37d3d061a562..5c170353448985828d41324d82533543290fb1e4 100644
--- a/src/views/settings/components/tabs.js
+++ b/src/views/settings/components/tabs.js
@@ -65,7 +65,7 @@ export const tabs = {
   },
   'relays': {
     label: 'settings.relays',
-    settings: []
+    settings: ['relays']
   },
   'web-push': {
     label: 'settings.webPush',
diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue
index ff1b3435de986aa9ccc08b6cd4289bd5095975f3..db62318421acac2d1c3e18cd1f86a8ead79f4d9c 100644
--- a/src/views/settings/index.vue
+++ b/src/views/settings/index.vue
@@ -33,7 +33,7 @@
         <el-tab-pane
           v-for="(value, componentName) in tabs"
           :label="$t(value.label)"
-          :disabled="configDisabled"
+          :disabled="configDisabled || settingsCantBeChanged(value.settings)"
           :key="componentName"
           :name="componentName"
           lazy>
@@ -227,6 +227,20 @@ export default {
             : { value: `${searchObj.label} in ${searchObj.groupLabel}`, group: searchObj.groupKey, key: searchObj.key }
         })
       cb(results)
+    },
+    settingsCantBeChanged(settings) {
+      const existingSettings = settings.filter(setting => {
+        if ([':esshd', ':cors_plug', ':http_signatures', ':quack', ':logger', ':swoosh', ':mime'].includes(setting)) {
+          return this.$store.state.settings.description.findIndex(el => el.group === setting) !== -1
+        } else if (setting === 'Pleroma.Web.Auth.Authenticator' || setting === ':admin_token') {
+          return this.$store.state.settings.description.findIndex(el => el.children[0].key === setting) !== -1
+        } else if (setting === 'relays') {
+          return [setting]
+        } else {
+          return this.$store.state.settings.description.findIndex(el => el.key === setting) !== -1
+        }
+      })
+      return existingSettings.length === 0
     }
   }
 }