diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js
index da0f957ed99b86c779014a433872fdfaf8672620..10ea3e33efdc556186de803d99064e6475e21032 100644
--- a/apps/files_sharing/js/sharedfilelist.js
+++ b/apps/files_sharing/js/sharedfilelist.js
@@ -79,6 +79,38 @@
 				var permission = parseInt($tr.attr('data-permissions')) | OC.PERMISSION_DELETE;
 				$tr.attr('data-permissions', permission);
 			}
+
+			// add row with expiration date for link only shares - influenced by _createRow of filelist
+			if (this._linksOnly) {
+				var expirationTimestamp = moment(fileData.shares[0].expiration).valueOf();
+				$tr.attr('data-expiration', expirationTimestamp);
+
+				// date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours)
+				// difference in days multiplied by 5 - brightest shade for expiry dates in more than 32 days (160/5)
+				var modifiedColor = Math.round((expirationTimestamp - (new Date()).getTime()) / 1000 / 60 / 60 / 24 * 5);
+				// ensure that the brightest color is still readable
+				if (modifiedColor >= '160') {
+					modifiedColor = 160;
+				}
+
+				if (expirationTimestamp > 0) {
+					formatted = OC.Util.formatDate(expirationTimestamp);
+					text = OC.Util.relativeModifiedDate(expirationTimestamp);
+				} else {
+					formatted = t('files_sharing', 'No expiration date set');
+					text = '';
+				}
+				td = $('<td></td>').attr({"class": "date"});
+				td.append($('<span></span>').attr({
+						"class": "modified",
+						"title": formatted,
+						"style": 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')'
+					}).text(text)
+						.tooltip({placement: 'top'})
+				);
+
+				$tr.append(td);
+			}
 			return $tr;
 		},
 
@@ -172,6 +204,11 @@
 
 			if (shares[0].ocs && shares[0].ocs.data) {
 				files = files.concat(this._makeFilesFromShares(shares[0].ocs.data));
+
+				// hide expiration date header for non link only shares
+				if (!this._linksOnly) {
+					this.$el.find('th.column-expiration').addClass('hidden');
+				}
 			}
 
 			if (remoteShares && remoteShares[0].ocs && remoteShares[0].ocs.data) {
@@ -249,6 +286,7 @@
 						type: share.share_type,
 						target: share.share_with,
 						stime: share.stime * 1000,
+						expiration: share.expiration,
 					};
 					if (self._sharedWithUser) {
 						file.shareOwner = share.displayname_owner;
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index fa0365c749c426e2ebd86fe40bd179044bf12277..f59cb7653d888fa5392c55ea82c498a3afd142e4 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -22,6 +22,9 @@
 			<th id="headerDate" class="hidden column-mtime">
 				<a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t( 'Share time' )); ?></span><span class="sort-indicator"></span></a>
 			</th>
+			<th class="hidden column-expiration">
+				<a class="columntitle"><span><?php p($l->t( 'Expiration date' )); ?></span></a>
+			</th>
 		</tr>
 	</thead>
 	<tbody id="fileList">