diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 3bf5b2d967235976e30f9c0a50e421e9f75a5c44..0847edd02bb205670e27fc21eb02a98869fa319d 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -570,6 +570,7 @@ window.FileList = {
 			this.fileSummary.add(fileData, true);
 			this.updateEmptyContent();
 		}
+
 		return $tr;
 	},
 
@@ -823,6 +824,15 @@ window.FileList = {
 			FileList.updateEmptyContent();
 			this.fileSummary.remove({type: fileEl.attr('data-type'), size: fileEl.attr('data-size')}, true);
 		}
+
+		var lastIndex = this.$fileList.children().length;
+		// if there are less elements visible than one page
+		// but there are still pending elements in the array,
+		// then directly append the next page
+		if (lastIndex < this.files.length && lastIndex < this.pageSize) {
+			this._nextPage(true);
+		}
+
 		return fileEl;
 	},
 	/**
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 7316cb75315de95c00e910de0de5b5210a0ad848..23261759d03b7b520b5e241441f8cfa748f503a3 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -701,6 +701,14 @@ describe('FileList tests', function() {
 			FileList._nextPage(true);
 			expect($('#fileList tr').length).toEqual(81);
 		});
+		it('automatically renders next page when there are not enough elements visible', function() {
+			// delete the 15 first elements
+			for (var i = 0; i < 15; i++) {
+				FileList.remove(FileList.files[0].name);
+			}
+			// still makes sure that there are 20 elements visible, if any
+			expect($('#fileList tr').length).toEqual(25);
+		});
 	});
 	describe('file previews', function() {
 		var previewLoadStub;