diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue
index 7c5d0434cb0be8d39eb8a8ec44110c9f16491a55..cc31d76aa29b6e03a6618324f63acbeccd04220a 100644
--- a/src/views/settings/index.vue
+++ b/src/views/settings/index.vue
@@ -159,10 +159,18 @@ export default {
       const tab = Object.keys(this.tabs).find(tab => {
         return this.tabs[tab].settings.includes(selectedValue.group === ':pleroma' ? selectedValue.key : selectedValue.group)
       })
-      if (tab) {
+      if (this.$router.currentRoute.path === `/settings/${tab}`) {
+        this.scrollTo(selectedValue.key)
+      } else if (tab) {
         this.$router.push({ path: `/settings/${tab}` })
       }
     },
+    scrollTo(searchQuery) {
+      const selectedSetting = document.querySelector(`[data-search="${searchQuery}"]`)
+      if (selectedSetting) {
+        selectedSetting.scrollIntoView({ block: 'start', behavior: 'smooth' })
+      }
+    },
     querySearch(queryString, cb) {
       const results = this.searchData.filter(searchObj => searchObj.search.find(el => el.includes(queryString.toLowerCase())))
         .map(searchObj => {