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 6653b916edf7b8cb6e06a52bd3fabb35a798e378..d1a1405c7e46bf4c7ddb531d27ba062038321f47 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
@@ -12,6 +12,7 @@ import kotlinx.coroutines.withContext
 import org.briarproject.mailbox.R
 import org.briarproject.mailbox.android.ui.MailboxViewModel
 import org.briarproject.mailbox.core.settings.SettingsManager
+import org.briarproject.mailbox.core.system.LocationUtils
 import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_AUTO
 import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_USE
 import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_USE_MEEK
@@ -20,6 +21,12 @@ import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_USE_OBFS4_DEFAULT
 import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_USE_SNOWFLAKE
 import org.briarproject.mailbox.core.tor.TorConstants.BRIDGE_USE_VANILLA
 import org.briarproject.mailbox.core.tor.TorConstants.SETTINGS_NAMESPACE
+import org.briarproject.onionwrapper.CircumventionProvider
+import org.briarproject.onionwrapper.CircumventionProvider.BridgeType.DEFAULT_OBFS4
+import org.briarproject.onionwrapper.CircumventionProvider.BridgeType.MEEK
+import org.briarproject.onionwrapper.CircumventionProvider.BridgeType.NON_DEFAULT_OBFS4
+import org.briarproject.onionwrapper.CircumventionProvider.BridgeType.SNOWFLAKE
+import org.briarproject.onionwrapper.CircumventionProvider.BridgeType.VANILLA
 import javax.inject.Inject
 
 @AndroidEntryPoint
@@ -29,9 +36,16 @@ class SettingsFragment : PreferenceFragmentCompat() {
 
     @Inject
     lateinit var settingsManager: SettingsManager
+
     @Inject
     lateinit var torSettingsStore: TorSettingsStore
 
+    @Inject
+    lateinit var locationUtils: LocationUtils
+
+    @Inject
+    lateinit var circumventionProvider: CircumventionProvider
+
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
         setPreferencesFromResource(R.xml.preferences, rootKey)
         val autoPref = findPreference<SwitchPreferenceCompat>(BRIDGE_AUTO)!!
@@ -44,14 +58,31 @@ class SettingsFragment : PreferenceFragmentCompat() {
         lifecycleScope.launch(Dispatchers.IO) {
             val settings = settingsManager.getSettings(SETTINGS_NAMESPACE)
             withContext(Dispatchers.Main) {
-                // TODO get better defaults based on locations
                 autoPref.isChecked = settings.getBoolean(BRIDGE_AUTO, true)
-                usePref.isChecked = settings.getBoolean(BRIDGE_USE, false)
-                snowflakePref.isChecked = settings.getBoolean(BRIDGE_USE_SNOWFLAKE, false)
-                meekPref.isChecked = settings.getBoolean(BRIDGE_USE_MEEK, false)
-                obfs4Pref.isChecked = settings.getBoolean(BRIDGE_USE_OBFS4, false)
-                obfs4DefaultPref.isChecked = settings.getBoolean(BRIDGE_USE_OBFS4_DEFAULT, false)
-                vanillaPref.isChecked = settings.getBoolean(BRIDGE_USE_VANILLA, false)
+                val country = locationUtils.currentCountry
+                val doBridgesWork = circumventionProvider.doBridgesWork(country)
+                usePref.isChecked = settings.getBoolean(BRIDGE_USE, doBridgesWork)
+                val defaultTypes = circumventionProvider.getSuitableBridgeTypes(country)
+                snowflakePref.isChecked = settings.getBoolean(
+                    key = BRIDGE_USE_SNOWFLAKE,
+                    defaultValue = defaultTypes.contains(SNOWFLAKE),
+                )
+                meekPref.isChecked = settings.getBoolean(
+                    key = BRIDGE_USE_MEEK,
+                    defaultValue = defaultTypes.contains(MEEK),
+                )
+                obfs4Pref.isChecked = settings.getBoolean(
+                    key = BRIDGE_USE_OBFS4,
+                    defaultValue = defaultTypes.contains(NON_DEFAULT_OBFS4),
+                )
+                obfs4DefaultPref.isChecked = settings.getBoolean(
+                    key = BRIDGE_USE_OBFS4_DEFAULT,
+                    defaultValue = defaultTypes.contains(DEFAULT_OBFS4),
+                )
+                vanillaPref.isChecked = settings.getBoolean(
+                    key = BRIDGE_USE_VANILLA,
+                    defaultValue = defaultTypes.contains(VANILLA),
+                )
                 preferenceManager.preferenceDataStore = torSettingsStore
             }
         }
@@ -59,6 +90,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
 
     override fun onDestroy() {
         super.onDestroy()
+        // apply settings only when user is leaving settings to prevent Tor changes on each toggle
         viewModel.onSettingsChanged()
     }
 }
diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
index f9bd904543619e9c5e4d6ddc3f15e9f73c5092bf..adc20c3a19e0dc2bd6059b6e8e991b6eb69d710b 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
@@ -332,19 +332,31 @@ public abstract class AbstractTorPlugin implements TorPlugin, EventListener {
 				LOG.info("Not using bridges");
 			}
 		} else {
-			boolean useBridges = settings.getBoolean(BRIDGE_USE, false);
+			boolean useBridges = settings.getBoolean(BRIDGE_USE, bridgesNeeded);
 			if (useBridges) {
+				List<BridgeType> defaultTypes =
+						circumventionProvider.getSuitableBridgeTypes(country);
 				ArrayList<BridgeType> types = new ArrayList<>();
-				if (settings.getBoolean(BRIDGE_USE_SNOWFLAKE, false))
+				if (settings.getBoolean(BRIDGE_USE_SNOWFLAKE,
+						defaultTypes.contains(SNOWFLAKE))) {
 					types.add(SNOWFLAKE);
-				if (settings.getBoolean(BRIDGE_USE_MEEK, false))
+				}
+				if (settings.getBoolean(BRIDGE_USE_MEEK,
+						defaultTypes.contains(MEEK))) {
 					types.add(MEEK);
-				if (settings.getBoolean(BRIDGE_USE_OBFS4, false))
+				}
+				if (settings.getBoolean(BRIDGE_USE_OBFS4,
+						defaultTypes.contains(NON_DEFAULT_OBFS4))) {
 					types.add(NON_DEFAULT_OBFS4);
-				if (settings.getBoolean(BRIDGE_USE_OBFS4_DEFAULT, false))
+				}
+				if (settings.getBoolean(BRIDGE_USE_OBFS4_DEFAULT,
+						defaultTypes.contains(DEFAULT_OBFS4))) {
 					types.add(DEFAULT_OBFS4);
-				if (settings.getBoolean(BRIDGE_USE_VANILLA, false))
+				}
+				if (settings.getBoolean(BRIDGE_USE_VANILLA,
+						defaultTypes.contains(VANILLA))) {
 					types.add(VANILLA);
+				}
 				bridgeTypes = types;
 				if (LOG.isInfoEnabled()) {
 					LOG.info("Using bridge types " + bridgeTypes);