diff --git a/theodolite/src/main/kotlin/rocks/theodolite/core/IOHandler.kt b/theodolite/src/main/kotlin/rocks/theodolite/core/IOHandler.kt
index 4d2cab0da938b18950def8cfb5cc6f104e110125..8721ea9d4314fb6a914ab678575c5e4b7c5f90ad 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/core/IOHandler.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/core/IOHandler.kt
@@ -64,15 +64,23 @@ class IOHandler {
      * Write to CSV file
      *
      * @param fileURL the URL of the file
-     * @param data  the data to write in the file, as list of list, each subList corresponds to a row in the CSV file
-     * @param columns columns of the CSV file
+     * @param data the data to write in the csv, as list of list,
+     *             each sublist corresponds to a row in the CSV file
+     * @param columns name of the columns
      */
     fun writeToCSVFile(fileURL: String, data: List<List<String>>, columns: List<String>) {
         val outputFile = File("$fileURL.csv")
         PrintWriter(outputFile).use { pw ->
             pw.println(columns.joinToString(separator = ","))
-            data.forEach {
-                pw.println(it.joinToString(separator = ","))
+            data.forEach{ row ->
+                val writeRow = row.toMutableList()
+                // change entry if it contains a comma
+                writeRow.forEachIndexed { index, entry ->
+                    if (entry.contains(",")){
+                        writeRow[index] = "\"" + entry + "\""
+                    }
+                }
+                pw.println(writeRow.joinToString(separator = ","))
             }
         }
         logger.info { "Wrote CSV file: $fileURL to ${outputFile.absolutePath}." }
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/core/IOHandlerTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/core/IOHandlerTest.kt
index 65e84d7dd37eb5b68f77bc2d47d212db2f720a90..acdf3aa6efe1060a0123f4bfb2b27eba312f8305 100644
--- a/theodolite/src/test/kotlin/rocks/theodolite/core/IOHandlerTest.kt
+++ b/theodolite/src/test/kotlin/rocks/theodolite/core/IOHandlerTest.kt
@@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test
 import org.junit.rules.TemporaryFolder
 import org.junitpioneer.jupiter.ClearEnvironmentVariable
 import org.junitpioneer.jupiter.SetEnvironmentVariable
+import java.util.stream.Collectors
 
 const val FOLDER_URL = "Test-Folder"
 
@@ -65,6 +66,48 @@ internal class IOHandlerTest {
         )
     }
 
+    /**
+     * Tests if values with commas are surrounded with quotation marks.
+     */
+    @Test
+    fun testWriteToCSVFileWithComma() {
+        temporaryFolder.create()
+        val folder = temporaryFolder.newFolder(FOLDER_URL)
+
+        val columns = listOf("Fruit", "Color")
+
+        val testContent = listOf(
+            listOf("apples, paprika", "red"),
+            listOf("bananas, pineapple", "yellow"),
+            listOf("avocado, coconut", "brown")
+        )
+
+        val expectedContent = listOf(
+            listOf("\"apples, paprika\"", "red"),
+            listOf("\"bananas, pineapple\"", "yellow"),
+            listOf("\"avocado, coconut\"", "brown")
+        )
+
+        IOHandler().writeToCSVFile(
+            fileURL = "${folder.absolutePath}/test-file",
+            data = testContent,
+            columns = columns
+        )
+
+        // construct string from the columns
+        var expected = columns.stream().collect(Collectors.joining(","))
+
+        // add values from the expectedContent to expected string
+        expectedContent.forEach{
+            expected += "\n" + it.joinToString(separator = ",")
+        }
+
+        assertEquals(
+            expected,
+            IOHandler().readFileAsString("${folder.absolutePath}/test-file.csv")
+        )
+    }
+
     @Test
     fun testWriteToJSONFile() {
         temporaryFolder.create()