diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss
index a5e28ff38da54b06e50f72c0b2c559f2efd26689..1ee59d0ab3d1d61341d0274e38f64efe9a7ab699 100644
--- a/apps/files/css/files.scss
+++ b/apps/files/css/files.scss
@@ -55,12 +55,29 @@
 	position: relative;
 	width: 100%;
 	min-width: 250px;
+	display: flex;
+	flex-direction: column;
 	// hide table if emptycontent is not hidden
 	#emptycontent:not(.hidden) ~ & {
 		display: none;
 	}
 }
 
+@media only screen and (min-width: $breakpoint-mobile + 1) {
+	#filestable {
+		// floating header
+		thead {
+			position: -webkit-sticky;
+			position: sticky;
+			// header + breadcrumbs
+			top: $header-height + 44px;
+			z-index: 1000;
+			display: block;
+			background-color: var(--color-main-background-translucent);
+		}
+	}
+}
+
 /* fit app list view heights */
 .app-files #app-content>.viewcontainer {
 	min-height: 0%;
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index ea4ea6e19563376ad0eba3a67580896a308963cc..99e7abb5584143f0148ebd44b371e26e90f2af8b 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -652,8 +652,6 @@
 			});
 
 			this.breadcrumb._resize();
-
-			this.$table.find('>thead').width($('#app-content').width() - OC.Util.getScrollBarWidth());
 		},
 
 		/**