Index: src/wp-admin/edit-tags.php
===================================================================
--- src/wp-admin/edit-tags.php	(revision 40649)
+++ src/wp-admin/edit-tags.php	(working copy)
@@ -144,6 +144,28 @@
 	wp_redirect( esc_url_raw( get_edit_term_link( $term_id, $taxonomy, $post_type ) ) );
 	exit;
 
+case 'edit-parent':
+	$parent_id = (int) $_REQUEST['parent'];
+
+	if ( $parent_id != -1 ) {
+		$terms = (array) $_REQUEST['delete_tags'];
+
+		foreach ( $terms as $term_id ) {
+
+			if ( $term_id == $parent_id ) {
+				continue;
+			}
+
+			$update_parent = wp_update_term($term_id, $_REQUEST['taxonomy'], array( 'parent' => $parent_id ) );
+
+			if ( $update_parent && ! is_wp_error( $update_parent ) ) {
+				$location = add_query_arg( 'message', 3, $location );
+			}
+		}
+	}
+
+	break;
+
 case 'editedtag':
 	$tag_ID = (int) $_POST['tag_ID'];
 	check_admin_referer( 'update-tag_' . $tag_ID );
Index: src/wp-admin/includes/class-wp-terms-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-terms-list-table.php	(revision 40649)
+++ src/wp-admin/includes/class-wp-terms-list-table.php	(working copy)
@@ -156,6 +156,10 @@
 			$actions['delete'] = __( 'Delete' );
 		}
 
+		if ( is_taxonomy_hierarchical( $this->screen->taxonomy ) ) {
+			$actions['edit'] = __( 'Edit' );
+		}
+
 		return $actions;
 	}
 
@@ -164,8 +168,11 @@
 	 * @return string
 	 */
 	public function current_action() {
-		if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' === $_REQUEST['action'] || 'delete' === $_REQUEST['action2'] ) )
+		if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' === $_REQUEST['action'] || 'delete' === $_REQUEST['action2'] ) ) {
 			return 'bulk-delete';
+		} else if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'edit' == $_REQUEST['action'] || 'edit-category' == $_REQUEST['screen'] ) ) {
+			return 'edit-parent';
+		}
 
 		return parent::current_action();
 	}
@@ -585,50 +592,107 @@
 			return;
 ?>
 
-	<form method="get"><table style="display: none"><tbody id="inlineedit">
-		<tr id="inline-edit" class="inline-edit-row" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
+		<form method="get"><table style="display: none"><tbody id="inlineedit">
+<?php
 
-			<fieldset>
-				<legend class="inline-edit-legend"><?php _e( 'Quick Edit' ); ?></legend>
-				<div class="inline-edit-col">
-				<label>
-					<span class="title"><?php _ex( 'Name', 'term name' ); ?></span>
-					<span class="input-text-wrap"><input type="text" name="name" class="ptitle" value="" /></span>
-				</label>
-	<?php if ( !global_terms_enabled() ) { ?>
-				<label>
-					<span class="title"><?php _e( 'Slug' ); ?></span>
-					<span class="input-text-wrap"><input type="text" name="slug" class="ptitle" value="" /></span>
-				</label>
-	<?php } ?>
-			</div></fieldset>
-	<?php
+			$core_columns = array( 'cb' => true, 'description' => true, 'name' => true, 'slug' => true, 'posts' => true );
 
-		$core_columns = array( 'cb' => true, 'description' => true, 'name' => true, 'slug' => true, 'posts' => true );
+			list( $columns ) = $this->get_column_info();
 
-		list( $columns ) = $this->get_column_info();
+			foreach ( $columns as $column_name => $column_display_name ) {
+					if ( isset( $core_columns[$column_name] ) )
+							continue;
 
-		foreach ( $columns as $column_name => $column_display_name ) {
-			if ( isset( $core_columns[$column_name] ) )
-				continue;
+					if ( $bulk ) {
+						do_action( 'bulk_edit_custom_box', $column_name, $this->screen->taxonomy );
+					} else {
+						/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
+						do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $this->screen->taxonomy );
+					}
+			}
 
-			/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
-			do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $this->screen->taxonomy );
-		}
-
+			$bulk = 0;
+			while ( $bulk < 2 ) {
 	?>
+			<tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "inline-edit-" . $this->screen->taxonomy; echo $bulk ? " bulk-edit-row bulk-edit-row bulk-edit-{$this->screen->taxonomy}" : " quick-edit-row quick-edit-row inline-edit-{$this->screen->taxonomy}"; ?>" style="display: none">
+				<td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
+					<?php if ( $bulk ) : ?>
 
-		<p class="inline-edit-save submit">
-			<button type="button" class="cancel button alignleft"><?php _e( 'Cancel' ); ?></button>
-			<button type="button" class="save button button-primary alignright"><?php echo $tax->labels->update_item; ?></button>
-			<span class="spinner"></span>
-			<span class="error" style="display:none;"></span>
-			<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
-			<input type="hidden" name="taxonomy" value="<?php echo esc_attr( $this->screen->taxonomy ); ?>" />
-			<input type="hidden" name="post_type" value="<?php echo esc_attr( $this->screen->post_type ); ?>" />
-			<br class="clear" />
-		</p>
-		</td></tr>
+						<fieldset class="inline-edit-col-left">
+							<legend class="inline-edit-legend"><?php echo __( 'Bulk Edit' ); ?></legend>
+							<div class="inline-edit-col">
+								<div id="bulk-title-div">
+									<div id="bulk-titles"></div>
+								</div>
+							</div>
+						</fieldset>
+						<fieldset class="inline-edit-col-left">
+							<span class="title inline-edit-categories-label"><?php _e( 'Parent Category' ) ?></span>
+							<div class="inline-edit-col">
+								<div class="bulk-edit-col">
+									<?php
+
+										wp_dropdown_categories( array(
+											'hide_empty'       => 0,
+											'hide_if_empty'    => false,
+											'name'             => 'parent',
+											'orderby'          => 'name',
+											'taxonomy'         => $this->screen->taxonomy,
+											'hierarchical'     => true,
+											'show_option_none' => __( 'None' )
+										) );
+
+									?>
+								</div>
+							</div>
+							</div>
+						</fieldset>
+					<?php else :  ?>
+						<fieldset>
+							<legend class="inline-edit-legend"><?php echo $bulk ? __( 'Bulk Edit' ) : __( 'Quick Edit' ); ?></legend>
+							<div class="inline-edit-col">
+								<label>
+									<span class="title"><?php _ex( 'Name', 'term name' ); ?></span>
+									<span class="input-text-wrap"><input type="text" name="name" class="ptitle" value="" /></span>
+								</label>
+								<?php if ( ! global_terms_enabled() ) { ?>
+									<label>
+										<span class="title"><?php _e( 'Slug' ); ?></span>
+										<span class="input-text-wrap"><input type="text" name="slug" class="ptitle" value="" /></span>
+									</label>
+								<?php } ?>
+							</div>
+						</fieldset>
+					<?php endif; ?>
+
+					<p class="inline-edit-save submit">
+						<a href="#inline-edit" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
+
+						<?php
+						if ( $bulk ) :
+							submit_button( __( 'Update' ), 'button-primary alignright', 'edit-parent', false );
+						else : 
+						?>
+						<a href="#inline-edit" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></a>
+						<?php endif;?>
+
+						<span class="spinner"></span>
+						<span class="error" style="display:none;"></span>
+						<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
+
+						<input type="hidden" name="taxonomy" value="<?php echo esc_attr( $this->screen->taxonomy ); ?>" />
+						<input type="hidden" name="post_type" value="<?php echo esc_attr( $this->screen->post_type ); ?>" />
+						<?php if ( $bulk ) { ?>
+								<input type="hidden" name="screen" value="<?php echo esc_attr( $this->screen->id ); ?>" />
+						<?php } ?>
+						<br class="clear" />
+					</p>
+				 </td>
+			</tr>
+			<?php
+				$bulk++;
+			}
+			?>
 		</tbody></table></form>
 	<?php
 	}
Index: src/wp-admin/js/inline-edit-tax.js
===================================================================
--- src/wp-admin/js/inline-edit-tax.js	(revision 40649)
+++ src/wp-admin/js/inline-edit-tax.js	(working copy)
@@ -62,6 +62,13 @@
 		});
 
 		/**
+		 * @summary Cancels bulk editing when clicking the cancel button on bulk edit form.
+		 */
+		$( '.cancel' ).click( function() {
+			return inlineEditTax.revert();
+		});
+
+		/**
 		 * @summary Saves the inline edits when clicking the save button.
 		 */
 		$( '.save', row ).click( function() {
@@ -84,6 +91,19 @@
 		$( '#posts-filter input[type="submit"]' ).mousedown( function() {
 			t.revert();
 		});
+
+		/**
+		 * @summary Saves the bulk edits on submitting the bulk edit form.
+		 */
+		$( '#doaction, #doaction2' ).click( function( e ) {
+			var n = $(this).attr( 'id' ).substr(2);
+			if ( 'edit' === $( 'select[name="' + n + '"]' ).val() ) {
+				e.preventDefault();
+				t.setBulk();
+			} else if ( $( 'form#posts-filter tr.inline-editor' ).length > 0 ) {
+				t.revert();
+			}
+		});
 	},
 
 	/**
@@ -105,6 +125,46 @@
 	},
 
 	/**
+	 * Saves the bulk edits.
+	 *
+	 * @since 4.7.4
+	 *
+	 * @this inlineEditTax
+	 * @memberof inlineEditTax
+	 * @returns {void}
+	 */
+	setBulk : function() {
+		var te = '', c = true;
+		this.revert();
+		$( '#bulk-edit td' ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
+		$( 'table.widefat tbody' ).prepend( $( '#bulk-edit' ) ).prepend( '<tr class="hidden"></tr>' );
+		$( '#bulk-edit' ).addClass( 'inline-editor' ).show();
+
+		$( 'tbody th.check-column input[type="checkbox"]' ).each( function() {
+			if ( $(this).prop( 'checked' ) ) {
+				c = false;
+				var id = $(this).val(), theTitle;
+				theTitle = $('#tag-'+id+' .row-title').html() || inlineEditL10n.notitle;
+				te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
+			}
+		});
+
+		if ( c ) {
+			return this.revert();
+		} 
+
+		$( '#bulk-titles' ).html(te);
+
+		$( '#bulk-titles a' ).click( function() {
+			var id = $(this).attr( 'id' ).substr(1);
+			$( 'table.widefat input[value="' + id + '"]' ).prop( 'checked', false );
+			$( '#ttle' + id ).remove();
+		})
+
+		$( 'html, body' ).animate( { scrollTop: 0 }, 'fast' );
+	},
+
+	/**
 	 * Shows the quick editor
 	 *
 	 * @since 2.7.0
@@ -255,7 +315,11 @@
 	revert : function() {
 		var id = $('table.widefat tr.inline-editor').attr('id');
 
-		if ( id ) {
+		if ( 'bulk-edit' === id ) {
+			$( 'table.widefat #bulk-edit' ).removeClass( 'inline-editor' ).hide().siblings( 'tr.hidden' ).remove();
+			$( '#bulk-titles' ).empty();
+			$( '#inlineedit' ).append( $( '#bulk-edit' ) );
+		} else if ( id ) {
 			$( 'table.widefat .spinner' ).removeClass( 'is-active' );
 			$('#'+id).siblings('tr.hidden').addBack().remove();
 			id = id.substr( id.lastIndexOf('-') + 1 );
