diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/AnnotationWorkerPool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/AnnotationWorkerPool.kt
index 85e7ef3..8736ba7 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/AnnotationWorkerPool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/AnnotationWorkerPool.kt
@@ -102,7 +102,7 @@
                                         }
                                         if (task.text == "#eof") {
                                             try {
-                                                outputStreamWriter.write("\n# eof\n") // Send EOF to process
+                                                outputStreamWriter.write("# eof\n") // Send EOF to process
                                                 outputStreamWriter.flush()
                                             } catch (e: IOException) {
                                                 // Log error, but proceed to close
@@ -115,7 +115,12 @@
                                         }
                                         pendingTasks.put(task)
                                         try {
-                                            val dataToSend = task.text + "\n# eot\n\n"
+                                            val trimmed = task.text.trimEnd()
+                                            val dataToSend = if (trimmed.isEmpty()) {
+                                                "# eot\n"
+                                            } else {
+                                                trimmed + "\n\n# eot\n"
+                                            }
                                             LOGGER.fine("Worker $workerIndex: Sending ${dataToSend.length} chars to external process")
                                             LOGGER.finer("Worker $workerIndex: First 500 chars of data to send:\n${dataToSend.take(500)}")
                                             outputStreamWriter.write(dataToSend)
@@ -228,10 +233,10 @@
                                                         lastLineWasEmpty = true
                                                     }
                                                 }
-                                                else -> {
-                                                    output.append(line).append('\n')
-                                                    lastLineWasEmpty = false
-                                                }
+                                                 else -> {
+                                                     output.append(line).append('\n')
+                                                     lastLineWasEmpty = false
+                                                 }
                                             }
                                         }
                                     }
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/ConlluFormatter.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/ConlluFormatter.kt
index d406aba..d9a60fd 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/ConlluFormatter.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/ConlluFormatter.kt
@@ -99,7 +99,7 @@
             var tokenText: String = if (textVal != null) {
                 val safeFrom = span.from.coerceIn(0, textVal.length)
                 val safeTo = span.to.coerceIn(safeFrom, textVal.length)
-                textVal.substring(safeFrom, safeTo)
+                textVal.substring(safeFrom, safeTo).replace(Regex("[\\t\\n\\r]"), " ")
             } else "_"
             
             if (tokenText.isBlank()) {
