diff --git a/applications/utilities/mesh/manipulation/setSet/setSet.C b/applications/utilities/mesh/manipulation/setSet/setSet.C
index 54ff169f16672a528744e3832f2f282bad844bca..308319f2e6b30ca273e2cbce5a922d10128e59ef 100644
--- a/applications/utilities/mesh/manipulation/setSet/setSet.C
+++ b/applications/utilities/mesh/manipulation/setSet/setSet.C
@@ -439,6 +439,7 @@ bool doCommand
     const word& actionName,
     const bool writeVTKFile,
     const bool writeCurrentTime,
+    const bool noSync,
     Istream& is
 )
 {
@@ -581,7 +582,7 @@ bool doCommand
                 // Set will have been modified.
 
                 // Synchronize for coupled patches.
-                currentSet.sync(mesh);
+                if (!noSync) currentSet.sync(mesh);
 
                 // Write
                 if (writeVTKFile)
@@ -834,6 +835,11 @@ int main(int argc, char *argv[])
         "file",
         "process in batch mode, using input from specified file"
     );
+    argList::addBoolOption
+    (
+        "noSync",
+        "do not synchronise selection across coupled patches"
+    );
 
 #   include "setRootCase.H"
 #   include "createTime.H"
@@ -842,6 +848,7 @@ int main(int argc, char *argv[])
     const bool writeVTK = !args.optionFound("noVTK");
     const bool loop = args.optionFound("loop");
     const bool batch = args.optionFound("batch");
+    const bool noSync = args.optionFound("noSync");
 
     if (loop && !batch)
     {
@@ -1008,7 +1015,8 @@ int main(int argc, char *argv[])
                     setName,
                     actionName,
                     writeVTK,
-                    loop,       // if in looping mode dump sets to time directory
+                    loop,   // if in looping mode dump sets to time directory
+                    noSync,
                     is
                 );
 
diff --git a/applications/utilities/mesh/manipulation/topoSet/topoSet.C b/applications/utilities/mesh/manipulation/topoSet/topoSet.C
index 18466603b300f46d6b96519f8db9851fee202f77..6f1c9957e4d1f4b3926a65a05a3a02b2565f94e6 100644
--- a/applications/utilities/mesh/manipulation/topoSet/topoSet.C
+++ b/applications/utilities/mesh/manipulation/topoSet/topoSet.C
@@ -49,11 +49,18 @@ int main(int argc, char *argv[])
         "specify an alternative dictionary for the topoSet dictionary"
     );
 #   include "addRegionOption.H"
+    argList::addBoolOption
+    (
+        "noSync",
+        "do not synchronise selection across coupled patches"
+    );
 
 #   include "setRootCase.H"
 #   include "createTime.H"
 #   include "createNamedPolyMesh.H"
 
+    const bool noSync = args.optionFound("noSync");
+
     const word dictName("topoSetDict");
 
     fileName dictPath = dictName;
@@ -152,7 +159,7 @@ int main(int argc, char *argv[])
 
                 source().applyToSet(action, currentSet());
                 // Synchronize for coupled patches.
-                currentSet().sync(mesh);
+                if (!noSync) currentSet().sync(mesh);
                 currentSet().write();
             }
             break;
@@ -186,7 +193,7 @@ int main(int argc, char *argv[])
                 // Combine new value of currentSet with old one.
                 currentSet().subset(oldSet());
                 // Synchronize for coupled patches.
-                currentSet().sync(mesh);
+                if (!noSync) currentSet().sync(mesh);
                 currentSet().write();
             }
             break;