diff --git a/wp-admin/css/list-tables.css b/wp-admin/css/list-tables.css
index 67ef22e..b4139e8 100644
--- a/wp-admin/css/list-tables.css
+++ b/wp-admin/css/list-tables.css
@@ -549,10 +549,15 @@ th.asc a:focus span.sorting-indicator:before {
 	content: "\f142";
 }
 
+tr .locked-indicator {
+	display: none;
+}
+
 tr.wp-locked .locked-indicator {
 	margin-left: 6px;
 	height: 20px;
 	width: 16px;
+	display: block;
 }
 
 tr.wp-locked .locked-indicator:before {
diff --git a/wp-admin/edit.php b/wp-admin/edit.php
index 120140a..28ed53e 100644
--- a/wp-admin/edit.php
+++ b/wp-admin/edit.php
@@ -190,8 +190,16 @@ if ( $doaction ) {
 
 $wp_list_table->prepare_items();
 
+
 wp_enqueue_script('inline-edit-post');
 wp_enqueue_script('heartbeat');
+wp_localize_script( 'inline-edit-post', '_wpInlineEditPostStrings', array(
+	'last_separator'	=> __( 'and' ),
+	'was_unlocked' 		=> __( 'is not being edited anymore' ),
+	'were_unlocked' 	=> __( 'are not being edited anymore' ),
+	'was_locked' 		=> __( 'is being edited' ),
+	'were_locked' 		=> __( 'are being edited' ),
+) );
 
 $title = $post_type_object->labels->name;
 
diff --git a/wp-admin/includes/class-wp-posts-list-table.php b/wp-admin/includes/class-wp-posts-list-table.php
index 506dded..cd62ef8 100644
--- a/wp-admin/includes/class-wp-posts-list-table.php
+++ b/wp-admin/includes/class-wp-posts-list-table.php
@@ -829,7 +829,11 @@ class WP_Posts_List_Table extends WP_List_Table {
 				printf( __( 'Select %s' ), _draft_or_post_title() );
 			?></label>
 			<input id="cb-select-<?php the_ID(); ?>" type="checkbox" name="post[]" value="<?php the_ID(); ?>" />
-			<div class="locked-indicator"></div>
+			<div class="locked-indicator"> 
+				<span class="screen-reader-text"><?php
+					printf( __( '%s is currently being edited' ), _draft_or_post_title() );
+				?></span> 
+			</div> 
 		<?php endif;
 	}
 
diff --git a/wp-admin/js/inline-edit-post.js b/wp-admin/js/inline-edit-post.js
index 3a65805..47628f7 100644
--- a/wp-admin/js/inline-edit-post.js
+++ b/wp-admin/js/inline-edit-post.js
@@ -330,10 +330,10 @@ $( document ).ready( function(){ inlineEditPost.init(); } );
 
 // Show/hide locks on posts
 $( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
-	var locked = data['wp-check-locked-posts'] || {};
+	var locked = data['wp-check-locked-posts'] || {}, unlocked_announcements = [], locked_announcements = [];
 
 	$('#the-list tr').each( function(i, el) {
-		var key = el.id, row = $(el), lock_data, avatar;
+		var key = el.id, row = $(el), lock_data, avatar, title;
 
 		if ( locked.hasOwnProperty( key ) ) {
 			if ( ! row.hasClass('wp-locked') ) {
@@ -346,12 +346,36 @@ $( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
 					row.find('.column-title .locked-avatar').empty().append( avatar );
 				}
 				row.addClass('wp-locked');
+
+				// Add announcement
+				title = row.find('.column-title .row-title').text();
+				locked_announcements.push( title );
 			}
 		} else if ( row.hasClass('wp-locked') ) {
 			// Make room for the CSS animation
 			row.removeClass('wp-locked').delay(1000).find('.locked-info span').empty();
+
+			// Add announcement
+			title = row.find('.column-title .row-title').text();
+			unlocked_announcements.push( title );
 		}
 	});
+
+	// Make announcements
+	if ( locked_announcements.length > 1 ) {
+		locked_announcements = locked_announcements.slice(0, -1).join(', ') + ' ' + _wpInlineEditPostStrings.last_separator + ' ' + locked_announcements.slice(-1);
+		wp.a11y.speak( locked_announcements + " " + _wpInlineEditPostStrings.were_locked );
+	} else if ( locked_announcements.length == 1 ) {
+		wp.a11y.speak( locked_announcements + " " + _wpInlineEditPostStrings.was_locked );
+	}
+
+	if ( unlocked_announcements.length > 1 ) {
+		unlocked_announcements = unlocked_announcements.slice(0, -1).join(', ') + ' ' + _wpInlineEditPostStrings.last_separator + ' ' + unlocked_announcements.slice(-1);
+		wp.a11y.speak( unlocked_announcements + " " + _wpInlineEditPostStrings.were_unlocked );
+	} else if ( unlocked_announcements.length == 1 ) {
+		wp.a11y.speak( unlocked_announcements + " " + _wpInlineEditPostStrings.was_unlocked );
+	}
+
 }).on( 'heartbeat-send.wp-check-locked-posts', function( e, data ) {
 	var check = [];
 
