diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php
index be1e358..a8bd35a 100644
--- src/wp-admin/includes/ajax-actions.php
+++ src/wp-admin/includes/ajax-actions.php
@@ -1126,6 +1126,10 @@ function wp_ajax_add_menu_item() {
 					$_object = get_post( $menu_item_data['menu-item-object-id'] );
 				break;
 
+				case 'post_type_archive' :
+					$_object = get_post_type_object( $menu_item_data['menu-item-object'] );
+				break;
+
 				case 'taxonomy' :
 					$_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
 				break;
diff --git src/wp-admin/includes/nav-menu.php src/wp-admin/includes/nav-menu.php
index 9538bcb..b71efac 100644
--- src/wp-admin/includes/nav-menu.php
+++ src/wp-admin/includes/nav-menu.php
@@ -71,6 +71,9 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 		} elseif ( 'post_type' == $item->type ) {
 			$original_object = get_post( $item->object_id );
 			$original_title = get_the_title( $original_object->ID );
+		} elseif ( 'post_type_archive' == $item->type ) {
+			$original_object = get_post_type_object( $item->object );
+			$original_title = $original_object->labels->archives;
 		}
 
 		$classes = array(
@@ -819,6 +822,23 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
 					}
 				}
 
+				$post_type = get_post_type_object( $post_type_name );
+				$archive_link = get_post_type_archive_link( $post_type_name );
+				if ( $post_type->has_archive ) {
+					$_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
+					array_unshift( $posts, (object) array(
+						'ID' => 0,
+						'object_id' => $_nav_menu_placeholder,
+						'object'     => $post_type_name,
+						'post_content' => '',
+						'post_excerpt' => '',
+						'post_title' => $post_type->labels->archives,
+						'post_type' => 'nav_menu_item',
+						'type' => 'post_type_archive',
+						'url' => get_post_type_archive_link( $post_type_name ),
+					) );
+				}
+
 				/**
 				 * Filter the posts displayed in the 'View All' tab of the current
 				 * post type's menu items meta box.
diff --git src/wp-includes/nav-menu-template.php src/wp-includes/nav-menu-template.php
index 7a61031..cd73226 100644
--- src/wp-includes/nav-menu-template.php
+++ src/wp-includes/nav-menu-template.php
@@ -552,6 +552,13 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
 			$active_parent_object_ids[] = (int) $menu_item->post_parent;
 			$active_object = $menu_item->object;
 
+		// if the menu item corresponds to the currently-queried post type archive
+		} elseif (
+			'post_type_archive' == $menu_item->type &&
+			is_post_type_archive( array( $menu_item->object ) )
+		) {
+			$classes[] = 'current-menu-item';
+			$menu_items[$key]->current = true;
 		// if the menu item corresponds to the currently-requested URL
 		} elseif ( 'custom' == $menu_item->object && isset( $_SERVER['HTTP_HOST'] ) ) {
 			$_root_relative_current = untrailingslashit( $_SERVER['REQUEST_URI'] );
diff --git src/wp-includes/nav-menu.php src/wp-includes/nav-menu.php
index 90d0cbf..2dea2fc 100644
--- src/wp-includes/nav-menu.php
+++ src/wp-includes/nav-menu.php
@@ -403,6 +403,10 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
 			$original_object = get_post( $args['menu-item-object-id'] );
 			$original_parent = (int) $original_object->post_parent;
 			$original_title = $original_object->post_title;
+		} elseif ( 'post_type_archive' == $args['menu-item-type'] ) {
+
+			$original_object = get_post_type_object( $args['menu-item-object'] );
+			$original_title = $original_object->labels->archives;
 		}
 
 		if ( $args['menu-item-title'] == $original_title )
@@ -718,6 +722,17 @@ function wp_setup_nav_menu_item( $menu_item ) {
 
 				$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
 
+			} elseif ( 'post_type_archive' == $menu_item->type ) {
+				$object =  get_post_type_object( $menu_item->object );
+				if ( $object ) {
+					$menu_item->title = '' == $menu_item->post_title ? $object->labels->archives : $menu_item->post_title;
+				} else {
+					$menu_item->_invalid = true;
+				}
+
+				$menu_item->type_label = __( 'Post Type Archive' );
+				$menu_item->description = '';
+				$menu_item->url = get_post_type_archive_link( $menu_item->object );
 			} elseif ( 'taxonomy' == $menu_item->type ) {
 				$object = get_taxonomy( $menu_item->object );
 				if ( $object ) {
diff --git src/wp-includes/post-functions.php src/wp-includes/post-functions.php
index fdd01ee..ce9cfe4 100644
--- src/wp-includes/post-functions.php
+++ src/wp-includes/post-functions.php
@@ -1295,6 +1295,7 @@ function _post_type_meta_capabilities( $capabilities = null ) {
  * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
  *                       ones the default is 'Parent Page:'.
  * - all_items - String for the submenu. Default is All Posts/All Pages.
+ * - archives - String for use with archives in nav menus. Default is Post Archives/Page Archives.
  * - featured_image - Default is Featured Image.
  * - set_featured_image - Default is Set featured image.
  * - remove_featured_image - Default is Remove featured image.
@@ -1326,6 +1327,7 @@ function get_post_type_labels( $post_type_object ) {
 		'not_found_in_trash' => array( __('No posts found in Trash.'), __('No pages found in Trash.') ),
 		'parent_item_colon' => array( null, __('Parent Page:') ),
 		'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) ),
+		'archives' => array( __( 'Post Archives' ), __( 'Page Archives' ) ),
 		'featured_image' => array( __( 'Featured Image' ), __( 'Featured Image' ) ),
 		'set_featured_image' => array( __( 'Set featured image' ), __( 'Set featured image' ) ),
 		'remove_featured_image' => array( __( 'Remove featured image' ), __( 'Remove featured image' ) ),
@@ -1387,6 +1389,9 @@ function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
 	if ( !isset( $object->labels['all_items'] ) && isset( $object->labels['menu_name'] ) )
 		$object->labels['all_items'] = $object->labels['menu_name'];
 
+	if ( !isset( $object->labels['archives'] ) && isset( $object->labels['all_items'] ) )
+		$object->labels['archives'] = $object->labels['all_items'];
+
 	$defaults = array();
 	foreach ( $nohier_vs_hier_defaults as $key => $value ) {
 		$defaults[$key] = $object->hierarchical ? $value[1] : $value[0];
