diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js
index e53922ebb69423df3e15e40d9324ebcb44b55017..a896e84fdc04e5bbe6ab53b81dc7f1a937bde939 100644
--- a/apps/files/js/detailsview.js
+++ b/apps/files/js/detailsview.js
@@ -23,7 +23,7 @@
 		'	{{/if}}' +
 		'	<div class="tabsContainer">' +
 		'	</div>' +
-		'	<a class="close icon-close" href="#" alt="{{closeLabel}}"></a>';
+		'	<a class="close icon-close" href="#"><span class="hidden-visually">{{closeLabel}}</span></a>';
 
 	/**
 	 * @class OCA.Files.DetailsView
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index f3b6759644ca14d5690b89e9f439a8235f8703bf..46bd9351e39d1c1551068ef1ce38b96afd2fabcd 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -4,7 +4,9 @@
 				<div id="uploadprogressbar">
 					<em class="label outer" style="display:none"><span class="desktop"><?php p($l->t('Uploading @'));?></span><span class="mobile"><?php p($l->t('…'));?></span></em>
 				</div>
-				<input type="button" class="stop icon-close" style="display:none" value="" />
+				<button class="stop icon-close" style="display:none">
+					<span class="hidden-visually"><?php p($l->t('Cancel upload')) ?></span>
+				</button>
 			</div>
 		</div>
 		<div id="file_action_panel"></div>
diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php
index c787f9eb8df37363094eadccf6981dea55b556a8..fdf882fa3fe5822d3d3d6b0f98fc0d061af0174c 100644
--- a/apps/files/templates/simplelist.php
+++ b/apps/files/templates/simplelist.php
@@ -29,7 +29,7 @@
 				<a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t( 'Modified' )); ?></span><span class="sort-indicator"></span></a>
 					<span class="selectedActions"><a href="" class="delete-selected">
 						<?php p($l->t('Delete'))?>
-						<img class="svg" alt="<?php p($l->t('Delete'))?>"
+						<img class="svg" alt=""
 							 src="<?php print_unescaped(OCP\image_path("core", "actions/delete.svg")); ?>" />
 					</a></span>
 			</th>
diff --git a/core/css/header.scss b/core/css/header.scss
index e9edfe0bfb815505890990d308b526dbfdd5b1f4..656440520a05d5ed405763039869b27f925ede5e 100644
--- a/core/css/header.scss
+++ b/core/css/header.scss
@@ -459,6 +459,7 @@ nav {
 
 
 	li:hover a,
+	li a:focus,
 	li a.active {
 		opacity: 1;
 	}
diff --git a/core/js/contactsmenu.js b/core/js/contactsmenu.js
index 6d57ae72e655cd63001e1a9fe3086aec6a88b37d..41de10abb4751bef0ee1a2ce286dcb72139758cf 100644
--- a/core/js/contactsmenu.js
+++ b/core/js/contactsmenu.js
@@ -26,6 +26,7 @@
 	'use strict';
 
 	var MENU_TEMPLATE = ''
+			+ '<label class="hidden-visually" for="contactsmenu-search">' + t('core', 'Search contacts …') + '</label>'
 			+ '<input id="contactsmenu-search" type="search" placeholder="' + t('core', 'Search contacts …') + '" value="{{searchTerm}}">'
 			+ '<div class="content">'
 			+ '</div>';
@@ -51,7 +52,7 @@
 	var CONTACT_TEMPLATE = ''
 			+ '{{#if contact.avatar}}'
 			+ '<img src="{{contact.avatar}}&size=32" class="avatar"'
-			+ 'srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x">'
+			+ 'srcset="{{contact.avatar}}&size=32 1x, {{contact.avatar}}&size=64 2x, {{contact.avatar}}&size=128 4x" alt="">'
 			+ '{{else}}'
 			+ '<div class="avatar"></div>'
 			+ '{{/if}}'
@@ -61,12 +62,12 @@
 			+ '</div>'
 			+ '{{#if contact.topAction}}'
 			+ '<a class="top-action" href="{{contact.topAction.hyperlink}}" title="{{contact.topAction.title}}">'
-			+ '    <img src="{{contact.topAction.icon}}">'
+			+ '    <img src="{{contact.topAction.icon}}" alt="{{contact.topAction.title}}">'
 			+ '</a>'
 			+ '{{/if}}'
 			+ '{{#if contact.hasTwoActions}}'
 			+ '<a class="second-action" href="{{contact.secondAction.hyperlink}}" title="{{contact.secondAction.title}}">'
-			+ '    <img src="{{contact.secondAction.icon}}">'
+			+ '    <img src="{{contact.secondAction.icon}}" alt="{{contact.secondAction.title}}">'
 			+ '</a>'
 			+ '{{/if}}'
 			+ '{{#if contact.hasManyActions}}'
@@ -76,7 +77,7 @@
 			+ '            {{#each contact.actions}}'
 			+ '            <li>'
 			+ '                <a href="{{hyperlink}}">'
-			+ '                    <img src="{{icon}}">'
+			+ '                    <img src="{{icon}}" alt="">'
 			+ '                    <span>{{title}}</span>'
 			+ '                </a>'
 			+ '            </li>'
@@ -224,7 +225,7 @@
 			}));
 			this.delegateEvents();
 
-			// Show placeholder iff no avatar is available (avatar is rendered as img, not div)
+			// Show placeholder if no avatar is available (avatar is rendered as img, not div)
 			this.$('div.avatar').imageplaceholder(this._model.get('fullName'));
 
 			// Show tooltip for top action
diff --git a/core/js/jquery.avatar.js b/core/js/jquery.avatar.js
index a320496e250a0e97bb73b2597ebd4fc7a86846b3..54518c75cc788d692175c78a9829948952f75eda 100644
--- a/core/js/jquery.avatar.js
+++ b/core/js/jquery.avatar.js
@@ -126,9 +126,9 @@
 				} else {
 					$div.show();
 					if (ie8fix === true) {
-						$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'#'+Math.floor(Math.random()*1000)+'">');
+						$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'#'+Math.floor(Math.random()*1000)+'" alt="">');
 					} else {
-						$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'">');
+						$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'" alt="">');
 					}
 				}
 				if(typeof callback === 'function') {
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 6b9db9389ba074966467ed461ee7025995758c02..5008392d2a3200e7f1ce387ef285b943bb91cebe 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -33,29 +33,21 @@
 	<header role="banner"><div id="header">
 			<div class="header-left">
 				<a href="<?php print_unescaped(link_to('', 'index.php')); ?>"
-					id="nextcloud" tabindex="1">
+					id="nextcloud">
 					<div class="logo logo-icon">
 						<h1 class="hidden-visually">
-							<?php p($theme->getName()); ?>
+							<?php p($theme->getName()); ?> <?php p(!empty($_['application'])?$_['application']: $l->t('Apps')); ?>
 						</h1>
 					</div>
 				</a>
 
-				<a href="#" class="header-appname-container menutoggle" tabindex="2">
-					<h1 class="header-appname">
-						<?php p(!empty($_['application'])?$_['application']: $l->t('Apps')); ?>
-					</h1>
-					<div class="icon-caret"></div>
-				</a>
-
 				<ul id="appmenu">
 					<?php foreach ($_['navigation'] as $entry): ?>
 						<li data-id="<?php p($entry['id']); ?>" class="hidden">
 							<a href="<?php print_unescaped($entry['href']); ?>"
-							   tabindex="3"
 								<?php if ($entry['active']): ?> class="active"<?php endif; ?>>
 								<img src="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>"
-									 class="app-icon"/>
+									 class="app-icon" alt="<?php p($entry['name']); ?>" />
 								<div class="icon-loading-small-dark"
 									 style="display:none;"></div>
 							</a>
@@ -78,7 +70,7 @@
 							<ul>
 								<?php foreach($_['navigation'] as $entry): ?>
 									<li data-id="<?php p($entry['id']); ?>">
-									<a href="<?php print_unescaped($entry['href']); ?>" tabindex="3"
+									<a href="<?php print_unescaped($entry['href']); ?>"
 										<?php if( $entry['active'] ): ?> class="active"<?php endif; ?>>
 										<svg width="16" height="16" viewBox="0 0 16 16">
 											<defs><filter id="invert-<?php p($entry['id']); ?>"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter></defs>
@@ -103,15 +95,15 @@
 					</label>
 					<input id="searchbox" type="search" name="query"
 						value="" required
-						autocomplete="off" tabindex="5">
-					<button class="icon-close-white" type="reset"></button>
+						autocomplete="off">
+					<button class="icon-close-white" type="reset"><span class="hidden-visually"><?php p($l->t('Reset search'));?></span></button>
 				</form>
 				<div id="contactsmenu">
-					<div class="icon-contacts menutoggle"></div>
+					<div class="icon-contacts menutoggle" tabindex="0" role="link"></div>
 					<div class="menu"></div>
 				</div>
 				<div id="settings">
-					<div id="expand" tabindex="6" role="link" class="menutoggle">
+					<div id="expand" tabindex="0" role="link" class="menutoggle">
 						<div class="avatardiv<?php if ($_['userAvatarSet']) { print_unescaped(' avatardiv-shown'); } else { print_unescaped('" style="display: none'); } ?>">
 							<?php if ($_['userAvatarSet']): ?>
 								<img alt="" width="32" height="32"
@@ -142,10 +134,12 @@
 
 		<div id="sudo-login-background" class="hidden"></div>
 		<form id="sudo-login-form" class="hidden">
-			<?php p($l->t('This action requires you to confirm your password:')); ?><br>
-			<input type="password" class="question" autocomplete="new-password" name="question" value=" <?php /* Hack against browsers ignoring autocomplete="off" */ ?>"
+			<label>
+				<?php p($l->t('This action requires you to confirm your password')); ?><br/>
+				<input type="password" class="question" autocomplete="new-password" name="question" value=" <?php /* Hack against browsers ignoring autocomplete="off" */ ?>"
 				placeholder="<?php p($l->t('Confirm your password')); ?>" />
-			<input class="confirm icon-confirm" title="<?php p($l->t('Confirm')); ?>" value="" type="submit">
+			</label>
+			<input class="confirm" value="<?php p($l->t('Confirm')); ?>" type="submit">
 		</form>
 
 		<div id="content-wrapper">