diff --git a/Applications/FileIO/Legacy/createSurface.cpp b/Applications/FileIO/Legacy/createSurface.cpp
index 380a8ecb09bf2b3cc321ad41e4406bf95f615576..f89812667d34c20c684d3ebbb6e03f3ee11f315f 100644
--- a/Applications/FileIO/Legacy/createSurface.cpp
+++ b/Applications/FileIO/Legacy/createSurface.cpp
@@ -20,6 +20,8 @@
 #include "Applications/FileIO/Gmsh/GMSHInterface.h"
 #include "Applications/FileIO/Gmsh/GmshReader.h"
 
+#include "BaseLib/StringTools.h"
+
 #include "GeoLib/GEOObjects.h"
 #include "GeoLib/Point.h"
 #include "GeoLib/Polygon.h"
@@ -78,9 +80,9 @@ bool createSurface(GeoLib::Polyline const& ply,
         0.0, 0, geo_names, false, false);
     gmsh_io.setPrecision(std::numeric_limits<double>::digits10);
 
-    // fs::path const temp_dir = fs::temp_directory_path();
-    auto geo_file = fs::temp_directory_path() /= "createSurface.geo";
-    auto msh_file = fs::temp_directory_path() /= "createSurface.msh";
+    // write to random file in temp directory
+    auto geo_file = fs::temp_directory_path() /= BaseLib::random_string(32);
+    auto msh_file = fs::temp_directory_path() /= BaseLib::random_string(32);
 
     gmsh_io.writeToFile(geo_file.string());
     // Newer gmsh versions write a newer file format for meshes per default. At
diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp
index a5ee69ff12ff310233ecd44907232509681d7fcf..bc041110854a08416ad504710e59416cac2d9e1c 100644
--- a/BaseLib/StringTools.cpp
+++ b/BaseLib/StringTools.cpp
@@ -104,4 +104,21 @@ std::string format(const char* format_str, ... )
     return std::string(buffer.data());
 }
 
+std::string random_string( size_t length )
+{
+    auto randchar = []() -> char
+    {
+        const char charset[] =
+        "0123456789"
+        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+        "abcdefghijklmnopqrstuvwxyz";
+        const size_t max_index = (sizeof(charset) - 1);
+        return charset[ rand() % max_index ];
+    };
+    std::string str(length,0);
+    std::generate_n( str.begin(), length, randchar );
+
+    return str;
+}
+
 } // end namespace BaseLib
diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h
index 382a65cc3d82ac1ec6d2dffc276a46ab36e3caa6..27f6f8a6f327aaa2c8a351c77d93756c05d03676 100644
--- a/BaseLib/StringTools.h
+++ b/BaseLib/StringTools.h
@@ -83,4 +83,7 @@ std::string const& tostring(std::string const& value);
 //! returns printf-like formatted string
 std::string format(const char* format_string, ... );
 
+//! Returns a random string of the given length containing just a-z,A-Z,0-9
+std::string random_string( size_t length );
+
 } // end namespace BaseLib