diff --git a/dev/demo/matchdemo.js b/dev/demo/matchdemo.js
index 4264783..e1f0488 100644
--- a/dev/demo/matchdemo.js
+++ b/dev/demo/matchdemo.js
@@ -438,6 +438,49 @@
   "<span class=\"context-right\">" +
   "</span>";
 
+  // with cut
+  snippet = "<span title=\"cnx/l:meist\">" +
+  "  <span title=\"cnx/p:ADV\">" +
+  "    <span title=\"cnx/syn:@PREMOD\">" +
+  "      <span title=\"mate/l:meist\">" +
+  "        <span title=\"mate/p:ADV\">" +
+  "          <span title=\"opennlp/p:ADV\">meist</span>" +
+  "        </span>" +
+  "      </span>" +
+  "    </span>" +
+  "  </span>" +
+  "</span>" +
+  "<span title=\"cnx/l:deutlich\">" +
+  "  <span title=\"cnx/p:A\">" +
+  "    <span title=\"cnx/syn:@PREMOD\">" +
+  "      <span title=\"mate/l:deutlich\">" +
+  "        <span title=\"mate/m:degree:pos\">" +
+  "          <span title=\"mate/p:ADJD\">" +
+  "            <span title=\"opennlp/p:ADJD\">deutlich</span>" +
+  "          </span>" +
+  "        </span>" +
+  "      </span>" +
+  "    </span>" +
+  "  </span>" +
+  "</span>" +
+  "<span title=\"cnx/l:fähig\">" +
+  "  <span title=\"cnx/l:leistung\">" +
+  "    <span title=\"cnx/p:A\">" +
+  "      <span title=\"cnx/syn:@NH\">" +
+  "        <span title=\"mate/l:leistungsfähig\">" +
+  "          <span title=\"mate/m:degree:comp\">" +
+  "            <span title=\"mate/p:ADJD\">" +
+  "              <span title=\"opennlp/p:ADJD\">leistungsfähiger</span>" +
+  "            </span>" +
+  "          </span>" +
+  "        </span>" +
+  "      </span>" +
+  "    </span>" +
+  "  </span>" +
+  " und robust sind auch die anderen Traktoren, die hier der Übersicht wegen keine Erwähnung finden können."
+  "<span class=\"cutted\"><\/span>"
+  "</span>";
+  
   var treeSnippet =
   "<span class=\"context-left\"></span>" +
   "<span class=\"match\">" +
diff --git a/dev/js/spec/matchSpec.js b/dev/js/spec/matchSpec.js
index d10aced..2004d4f 100644
--- a/dev/js/spec/matchSpec.js
+++ b/dev/js/spec/matchSpec.js
@@ -97,7 +97,9 @@
   ];
 
 
-  var snippet = "<span title=\"cnx/l:meist\">" +
+  var snippet = "<span class=\"context-left\"><\/span>"+
+      "<span class=\"match\">" +
+      "<span title=\"cnx/l:meist\">" +
       "  <span title=\"cnx/p:ADV\">" +
       "    <span title=\"cnx/syn:@PREMOD\">" +
       "      <span title=\"mate/l:meist\">" +
@@ -141,6 +143,9 @@
       "      </span>" +
       "    </span>" +
       "  </span>" +
+      "</span>" +
+      " und robust sind auch die anderen Traktoren, die hier der Übersicht wegen keine Erwähnung finden können." +
+      "<span class=\"cutted\"><\/span>" +
       "</span>";
 
   var treeSnippet =
@@ -445,7 +450,9 @@
   describe('KorAP.TableView', function () {
     beforeAll(beforeAllFunc);
     afterAll(afterAllFunc);  
-   
+
+    let longString = " und robust sind auch die anderen Traktoren, die hier der Übersicht wegen keine Erwähnung finden können.";
+    
     var table;
 
     var matchObj = matchClass.create(match);
@@ -479,11 +486,12 @@
     it('should parse into a table (async)', function () {
       expect(table).toBeTruthy();
 
-      expect(table.length()).toBe(3);
+      expect(table.length()).toBe(4);
 
       expect(table.getToken(0)).toBe("meist");
       expect(table.getToken(1)).toBe("deutlich");
       expect(table.getToken(2)).toBe("leistungsfähiger");
+      expect(table.getToken(3)).toBe(longString);
 
       expect(table.getValue(0, "cnx", "p")[0]).toBe("ADV");
       expect(table.getValue(0, "cnx", "syn")[0]).toBe("@PREMOD");
@@ -510,6 +518,9 @@
       expect(tr.children[3].classList.contains('mark')).toBeTruthy();
       expect(tr.children[4].firstChild.nodeValue).toBe('leistungsfähiger');
       expect(tr.children[4].classList.contains('mark')).toBeFalsy();
+      expect(tr.children[4].hasAttribute("title").toBeFalsy();
+      expect(tr.children[5].firstChild.nodeValue).toBe(longString);
+      expect(tr.children[5].getAttribute("title")).toBe(longString);
 
       // first row
       tr = e.children[1].children[0];
diff --git a/dev/js/src/match/table.js b/dev/js/src/match/table.js
index 1544637..61c100a 100644
--- a/dev/js/src/match/table.js
+++ b/dev/js/src/match/table.js
@@ -244,13 +244,19 @@
 
       // Add tokens
       for (var i in this._token) {
-        var c = tr.addCell('th', undefined, this.getToken(i));
+        let surface = this.getToken(i);
+        var c = tr.addCell('th', undefined, surface);
         if (this._mark[i]) {
           c.classList.add('mark');
           if (this._markE === undefined) {
             this._markE = c;
           };
         };
+
+        // In case the title is very long - add a title attribute
+        if (surface.length > 20) {
+          c.setAttribute("title", surface)
+        }
       };
       
       var tbody = table.addE('tbody');
