diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index 4becdc4199a3cf0ce846d7df8c66c7d443f7d9c1..1d6c760ef086220852e73c72cb3398972e6233b3 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -10,6 +10,7 @@
         v-if="!hideEmojiButton"
         class="button-unstyled emoji-picker-icon"
         @click.prevent="togglePicker"
+        type="button"
       >
         <FAIcon :icon="['far', 'smile-beam']" />
       </button>
diff --git a/src/components/mfa_form/recovery_form.vue b/src/components/mfa_form/recovery_form.vue
index 0bf68e27cbfee4399a92a4ea94435658375fc5e2..8457ec5d86e39a6af29af8dd4a40720224efc690 100644
--- a/src/components/mfa_form/recovery_form.vue
+++ b/src/components/mfa_form/recovery_form.vue
@@ -26,6 +26,7 @@
               <button
                 class="button-unstyled -link"
                 @click.prevent="requireTOTP"
+                type="button"
               >
                 {{ $t('login.enter_two_factor_code') }}
               </button>
@@ -33,6 +34,7 @@
               <button
                 class="button-unstyled -link"
                 @click.prevent="abortMFA"
+                type="button"
               >
                 {{ $t('general.cancel') }}
               </button>
diff --git a/src/components/mfa_form/totp_form.vue b/src/components/mfa_form/totp_form.vue
index 79230148ee34b9d3cd20f318b75a450e38cc518f..5d80e1852ed22ef92bd74b75bbb2906617d45fbc 100644
--- a/src/components/mfa_form/totp_form.vue
+++ b/src/components/mfa_form/totp_form.vue
@@ -28,6 +28,7 @@
               <button
                 class="button-unstyled -link"
                 @click.prevent="requireRecovery"
+                type="button"
               >
                 {{ $t('login.enter_recovery_code') }}
               </button>
@@ -35,6 +36,7 @@
               <button
                 class="button-unstyled -link"
                 @click.prevent="abortMFA"
+                type="button"
               >
                 {{ $t('general.cancel') }}
               </button>
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
index 66ac612ea77198ad4e125762b0a9e6aae151573e..60e8c3baeaaf502e83e333101a39ed6ea131b333 100644
--- a/src/components/scope_selector/scope_selector.vue
+++ b/src/components/scope_selector/scope_selector.vue
@@ -9,6 +9,7 @@
       :class="css.direct"
       :title="$t('post_status.scope.direct')"
       @click="changeVis('direct')"
+      type="button"
     >
       <FAIcon
         icon="envelope"
@@ -21,6 +22,7 @@
       :class="css.private"
       :title="$t('post_status.scope.private')"
       @click="changeVis('private')"
+      type="button"
     >
       <FAIcon
         icon="lock"
@@ -33,6 +35,7 @@
       :class="css.unlisted"
       :title="$t('post_status.scope.unlisted')"
       @click="changeVis('unlisted')"
+      type="button"
     >
       <FAIcon
         icon="lock-open"
@@ -45,6 +48,7 @@
       :class="css.public"
       :title="$t('post_status.scope.public')"
       @click="changeVis('public')"
+      type="button"
     >
       <FAIcon
         icon="globe"
diff --git a/src/components/search/search.vue b/src/components/search/search.vue
index a6503c9f74484678f4104e4373550a0a7686b8e7..fa6483654133dd78ae9c17efea3083d690dd51ca 100644
--- a/src/components/search/search.vue
+++ b/src/components/search/search.vue
@@ -16,6 +16,7 @@
       <button
         class="btn button-default search-button"
         @click="newQuery(searchTerm)"
+        type="submit"
       >
         <FAIcon icon="search" />
       </button>
diff --git a/src/components/search_bar/search_bar.vue b/src/components/search_bar/search_bar.vue
index 6cf9179e05715ed04a9116d8aed35b9bbb2855c1..a7432dcba80fbb228c71434573539e95763630fe 100644
--- a/src/components/search_bar/search_bar.vue
+++ b/src/components/search_bar/search_bar.vue
@@ -8,6 +8,7 @@
       class="button-unstyled nav-icon"
       :title="$t('nav.search')"
       @click.prevent.stop="toggleHidden"
+      type="button"
     >
       <FAIcon
         fixed-width
@@ -28,6 +29,7 @@
       <button
         class="button-default search-button"
         @click="find(searchTerm)"
+        type="submit"
       >
         <FAIcon
           fixed-width
@@ -37,6 +39,7 @@
       <button
         class="button-unstyled cancel-search"
         @click.prevent.stop="toggleHidden"
+        type="button"
       >
         <FAIcon
           fixed-width
diff --git a/src/components/tab_switcher/tab_switcher.js b/src/components/tab_switcher/tab_switcher.js
index 76e7ef03d8714d5d9199aca7c30cea680d14ebfd..12aac8e66749a68e5e0884edd274dfc94822db2b 100644
--- a/src/components/tab_switcher/tab_switcher.js
+++ b/src/components/tab_switcher/tab_switcher.js
@@ -93,7 +93,9 @@ export default Vue.component('tab-switcher', {
               <button
                 disabled={slot.data.attrs.disabled}
                 onClick={this.clickTab(index)}
-                class={classesTab.join(' ')}>
+                class={classesTab.join(' ')}
+                type="button"
+              >
                 <img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>
                 {slot.data.attrs.label ? '' : slot.data.attrs.label}
               </button>