diff --git a/frontend-js/src/main/js/gui/AddOverlayDialog.js b/frontend-js/src/main/js/gui/AddOverlayDialog.js
index d49c6a153db8f9436d021c8a4126d5cb3cbc9436..7a2509a0d25f1e9e63f8feb1c5d10ae3e8756b82 100644
--- a/frontend-js/src/main/js/gui/AddOverlayDialog.js
+++ b/frontend-js/src/main/js/gui/AddOverlayDialog.js
@@ -116,6 +116,10 @@ AddOverlayDialog.prototype.processFile = function (file) {
           if (overlay.getDescription() !== undefined) {
             descriptionInput.value = overlay.getDescription();
           }
+          if (overlayParser.containsMixedNewLineCharacters(evt.target.result)) {
+            GuiConnector.warn("Selected file contains new line characters from different operating systems " +
+              "(MAC/Windows/Linux). This might cause confusion when reading the file in the editor later on.")
+          }
           resolve(self.getFileContent());
         } catch (error) {
           reject(error);
diff --git a/frontend-js/src/main/js/map/OverlayParser.js b/frontend-js/src/main/js/map/OverlayParser.js
index 72fc466358ac3bc06fb988402834959eca341687..be71a609445ea0f363301c916e8686556521f88d 100644
--- a/frontend-js/src/main/js/map/OverlayParser.js
+++ b/frontend-js/src/main/js/map/OverlayParser.js
@@ -7,10 +7,21 @@ var TextDecoder = require('text-encoding').TextDecoder;
 function OverlayParser() {
 }
 
-OverlayParser.prototype.parse = function (content) {
+/**
+ *
+ * @param {string| Uint8Array | ArrayBuffer} content
+ * @returns {string}
+ * @private
+ */
+OverlayParser.prototype._extractContent = function (content) {
   if (content instanceof Uint8Array || content instanceof ArrayBuffer) {
     content = new TextDecoder("UTF8").decode(content);
   }
+  return content;
+};
+
+OverlayParser.prototype.parse = function (content) {
+  content = this._extractContent(content);
   var data = {content: content};
   var lines = content.split("\n");
   for (var i = 0; i < lines.length; i++) {
@@ -37,5 +48,36 @@ OverlayParser.prototype.parse = function (content) {
   return new DataOverlay(data);
 };
 
+/**
+ *
+ * @param {string| Uint8Array | ArrayBuffer} content
+ * @returns {boolean}
+ */
+OverlayParser.prototype.containsMixedNewLineCharacters = function (content) {
+  content = this._extractContent(content);
+  var newLineRegEx = /[\r\n]+/g;
+  var match = newLineRegEx.exec(content);
+  var newLineFormats = {};
+  var counter = 0;
+  while (match !== null && match !== undefined) {
+    var foundMultiplication = false;
+    var key = '';
+    //this is just a heuristic - let's assume there are at most 10 empty lines in a file
+    for (var i = 0; i < 10; i++) {
+      key += match[0];
+      if (newLineFormats[key]) {
+        foundMultiplication = true;
+      } else {
+        newLineFormats[key] = true;
+      }
+    }
+    if (!foundMultiplication) {
+      counter++;
+    }
+    match = newLineRegEx.exec(content);
+  }
+  return counter > 1;
+};
+
 
 module.exports = OverlayParser;
diff --git a/frontend-js/src/test/js/map/OverlayParser-test.js b/frontend-js/src/test/js/map/OverlayParser-test.js
index 48ce28d457854d75db0760b5b895aefa11f9ee66..a79ced51117e2e786a780e87053bddfdceac1859 100644
--- a/frontend-js/src/test/js/map/OverlayParser-test.js
+++ b/frontend-js/src/test/js/map/OverlayParser-test.js
@@ -42,5 +42,50 @@ describe('OverlayParser', function () {
       });
     });
   });
+  describe('containsMixedNewLineCharacters', function () {
+    it('normal file', function () {
+      return ServerConnector.sendGetRequest("testFiles/overlay/good.txt").then(function (fileContent) {
+        var parser = new OverlayParser();
+        assert.notOk(parser.containsMixedNewLineCharacters(fileContent));
+      });
+    });
+    it('windows/linux mix', function () {
+      var content = "line1\n\rline2\n";
+      var parser = new OverlayParser();
+      assert.ok(parser.containsMixedNewLineCharacters(content));
+    });
+
+    it('windows empty lines', function () {
+      var content = "line1\n\rline2\n\r\n\rline4";
+      var parser = new OverlayParser();
+      assert.notOk(parser.containsMixedNewLineCharacters(content));
+    });
+
+    it('windows/mac mix', function () {
+      var content = "line1\n\rline2\r";
+      var parser = new OverlayParser();
+      assert.ok(parser.containsMixedNewLineCharacters(content));
+    });
+
+    it('mac empty lines', function () {
+      var content = "line1\rline2\r\rline4";
+      var parser = new OverlayParser();
+      assert.notOk(parser.containsMixedNewLineCharacters(content));
+    });
+
+    it('windows/mac mix 2', function () {
+      var content = "line1\n\r\rline2\n\rline3";
+      var parser = new OverlayParser();
+      assert.ok(parser.containsMixedNewLineCharacters(content));
+    });
+
+    it('linux empty lines', function () {
+      var content = "line1\nline2\n\nline4";
+      var parser = new OverlayParser();
+      assert.notOk(parser.containsMixedNewLineCharacters(content));
+    });
+
+
+  });
 
 });