diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/settings/SettingsFragment.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/settings/SettingsFragment.kt
index 4b329498e70782d746b327c6a3e357b069637abd..9909cb82ff1d7a2f62dc33bf26a9ad4f9cd8655d 100644
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/settings/SettingsFragment.kt
+++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/settings/SettingsFragment.kt
@@ -3,10 +3,12 @@ package org.briarproject.mailbox.android.ui.settings
 import android.os.Bundle
 import androidx.fragment.app.activityViewModels
 import androidx.lifecycle.lifecycleScope
-import androidx.preference.Preference
+import androidx.preference.Preference.OnPreferenceChangeListener
 import androidx.preference.PreferenceCategory
 import androidx.preference.PreferenceFragmentCompat
 import androidx.preference.SwitchPreferenceCompat
+import com.google.android.material.snackbar.Snackbar
+import com.google.android.material.snackbar.Snackbar.LENGTH_SHORT
 import dagger.hilt.android.AndroidEntryPoint
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -44,7 +46,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
     private lateinit var obfs4Pref: SwitchPreferenceCompat
     private lateinit var obfs4DefaultPref: SwitchPreferenceCompat
     private lateinit var vanillaPref: SwitchPreferenceCompat
-    private lateinit var brideTypePrefs: List<Preference>
+    private lateinit var brideTypePrefs: List<SwitchPreferenceCompat>
     private lateinit var bridgeTypesCategory: PreferenceCategory
 
     @Inject
@@ -84,6 +86,17 @@ class SettingsFragment : PreferenceFragmentCompat() {
         brideTypePrefs = listOf(
             snowflakePref, meekPref, obfs4Pref, obfs4DefaultPref, vanillaPref
         )
+        val typePrefChangedListener = OnPreferenceChangeListener { _, newValue ->
+            if (!(newValue as Boolean)) {
+                // allow change only if more than one bridge type is still checked
+                val allowChange = brideTypePrefs.count { it.isChecked } > 1
+                if (!allowChange) showBridgeTypeSnackbar()
+                allowChange
+            } else true
+        }
+        brideTypePrefs.forEach { preference ->
+            preference.onPreferenceChangeListener = typePrefChangedListener
+        }
         bridgeTypesCategory = findPreference("bridgeTypesCategory")!!
         autoPref.setOnPreferenceChangeListener { _, newValue ->
             onAutoChanged(newValue as Boolean)
@@ -95,6 +108,11 @@ class SettingsFragment : PreferenceFragmentCompat() {
         }
     }
 
+    private fun showBridgeTypeSnackbar() {
+        val v = view ?: return
+        Snackbar.make(v, R.string.prefs_bridges_at_least_one, LENGTH_SHORT).show()
+    }
+
     override fun onDestroy() {
         super.onDestroy()
         // apply settings only when user is leaving settings to prevent Tor changes on each toggle
diff --git a/mailbox-android/src/main/res/values/strings.xml b/mailbox-android/src/main/res/values/strings.xml
index c6caacd17879006ef68e0de40300ed2e81870f18..9d438cb95d7300d98dee3e28af6d6d1bcc10eb46 100644
--- a/mailbox-android/src/main/res/values/strings.xml
+++ b/mailbox-android/src/main/res/values/strings.xml
@@ -91,5 +91,6 @@
     <string name="prefs_bridges_obfs4_title" translatable="false">Obfs4</string>
     <string name="prefs_bridges_obfs_builtin_title">Obfs4 from Tor Browser</string>
     <string name="prefs_bridges_meek_title" translatable="false">Meek</string>
+    <string name="prefs_bridges_at_least_one">At least one bridge type must be enabled, or disable \"Use bridges\".</string>
 
 </resources>