diff --git a/core/includes/install.inc b/core/includes/install.inc
index fdf8e84bcf0f665acbcfd138e7f4a97263adb686..308432cb10c234ee9b3fd874319321296fbd20a7 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -486,10 +486,10 @@ function drupal_install_config_directories() {
     // to the drupal core repo.
     switch ($config_type) {
       case CONFIG_ACTIVE_DIRECTORY:
-        $text = 'This directory contains the active configuration for your Drupal site. To move this configuration between environments, contents from this directory should be placed in the staging directory on the target server. To make this configuration active, see admin/config/development/sync on the target server.';
+        $text = 'This directory contains the active configuration for your Drupal site. To move this configuration between environments, contents from this directory should be placed in the staging directory on the target server. To make this configuration active, see admin/config/development/configuration/sync on the target server.';
         break;
       case CONFIG_STAGING_DIRECTORY:
-        $text = 'This directory contains configuration to be imported into your Drupal site. To make this configuration active, see admin/config/development/sync.';
+        $text = 'This directory contains configuration to be imported into your Drupal site. To make this configuration active, see admin/config/development/configuration/sync.';
         break;
     }
     $text .=  ' For information about deploying configuration between servers, see http://drupal.org/documentation/administer/config';
diff --git a/core/modules/config/config.info.yml b/core/modules/config/config.info.yml
index 0b50306cf7629576c274c203e8173402fbed807e..f69027b68eacc1ad9713a4973b5a1f63b7505a99 100644
--- a/core/modules/config/config.info.yml
+++ b/core/modules/config/config.info.yml
@@ -4,4 +4,4 @@ description: 'Allows administrators to manage configuration changes.'
 package: Core
 version: VERSION
 core: 8.x
-configure: admin/config/development/sync
+configure: admin/config/development/configuration/sync
diff --git a/core/modules/config/config.module b/core/modules/config/config.module
index 450f210e5f2ea904158f522c72c021fed244c32a..5e93c02fe88ae35e5ac73dbe106c699e57515f8a 100644
--- a/core/modules/config/config.module
+++ b/core/modules/config/config.module
@@ -18,7 +18,7 @@ function config_help($path, $arg) {
       )) . '</p>';
       return $output;
 
-    case 'admin/config/development/sync':
+    case 'admin/config/development/configuration/sync':
       $output = '';
       $output .= '<p>' . t('Import configuration that is placed in your staging directory. All changes, deletions, renames, and additions are listed below.') . '</p>';
       return $output;
@@ -61,27 +61,38 @@ function config_file_download($uri) {
  * Implements hook_menu().
  */
 function config_menu() {
-  $items['admin/config/development/sync'] = array(
-    'title' => 'Synchronize configuration',
+  $items['admin/config/development/configuration'] = array(
+    'title' => 'Configuration management',
+    'description' => 'Import, export, or synchronize your site configuration.',
+    'route_name' => 'config_management',
+  );
+  $items['admin/config/development/configuration/sync'] = array(
+    'title' => 'Synchronize',
     'description' => 'Synchronize configuration changes.',
     'route_name' => 'config.sync',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => 0,
   );
-  $items['admin/config/development/export'] = array(
-    'title' => 'Configuration export',
+  $items['admin/config/development/configuration/export'] = array(
+    'title' => 'Export',
     'description' => 'Export your site configuration',
     'route_name' => 'config.export',
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
   );
-  $items['admin/config/development/import'] = array(
-    'title' => 'Configuration import',
+  $items['admin/config/development/configuration/import'] = array(
+    'title' => 'Import',
     'description' => 'Import configuration for your site',
     'route_name' => 'config.import',
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
   );
-  $items['admin/config/development/sync/diff/%'] = array(
+  $items['admin/config/development/configuration/sync/diff/%'] = array(
     'title' => 'Configuration file diff',
     'description' => 'Diff between active and staged configuration.',
     'route_name' => 'config.diff',
   );
-  $items['admin/config/development/sync/import'] = array(
+  $items['admin/config/development/configuration/sync/import'] = array(
     'title' => 'Import',
     'type' => MENU_DEFAULT_LOCAL_TASK,
   );
diff --git a/core/modules/config/config.routing.yml b/core/modules/config/config.routing.yml
index 678ce7d47c86f2cf51f25675f1ff54f286f4733c..3eaeb34283ba2df76a7abbfdc69f07f21f88a425 100644
--- a/core/modules/config/config.routing.yml
+++ b/core/modules/config/config.routing.yml
@@ -1,33 +1,40 @@
 config.diff:
-  path: '/admin/config/development/sync/diff/{config_file}'
+  path: '/admin/config/development/configuration/sync/diff/{config_file}'
   defaults:
     _content: '\Drupal\config\Controller\ConfigController::diff'
   requirements:
     _permission: 'synchronize configuration'
 
-config.export_download:
-  path: '/admin/config/development/export-download'
+config_management:
+  path: '/admin/config/development/configuration'
+  defaults:
+    _form: '\Drupal\config\Form\ConfigSync'
+  requirements:
+    _permission: 'synchronize configuration'
+
+config_export_download:
+  path: '/admin/config/development/configuration/export-download'
   defaults:
     _controller: '\Drupal\config\Controller\ConfigController::downloadExport'
   requirements:
     _permission: 'export configuration'
 
 config.export:
-  path: '/admin/config/development/export'
+  path: '/admin/config/development/configuration/export'
   defaults:
     _form: '\Drupal\config\Form\ConfigExportForm'
   requirements:
     _permission: 'export configuration'
 
 config.import:
-  path: '/admin/config/development/import'
+  path: '/admin/config/development/configuration/import'
   defaults:
     _form: '\Drupal\config\Form\ConfigImportForm'
   requirements:
     _permission: 'import configuration'
 
 config.sync:
-  path: '/admin/config/development/sync'
+  path: '/admin/config/development/configuration/sync'
   defaults:
     _form: '\Drupal\config\Form\ConfigSync'
   requirements:
diff --git a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
index f3fd08972e6e1af8cd14903e59614539db3b252c..59cb82bf16458533b559f8dd2bcd910d042b39d3 100644
--- a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
+++ b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
@@ -123,7 +123,7 @@ public function diff($config_file) {
         ),
       ),
       '#title' => "Back to 'Synchronize configuration' page.",
-      '#href' => 'admin/config/development/sync',
+      '#href' => 'admin/config/development/configuration/sync',
     );
 
     return $build;
diff --git a/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php b/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
index e2f9faa6e462439a8edbc2a231cc1547e61450c5..c405c642c747b2df3e3876e05e74d658e0e437cc 100644
--- a/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
+++ b/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
@@ -39,7 +39,7 @@ public function buildForm(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function submitForm(array &$form, array &$form_state) {
-    $form_state['redirect'] = 'admin/config/development/export-download';
+    $form_state['redirect'] = 'admin/config/development/configuration/export-download';
   }
 
 }
diff --git a/core/modules/config/lib/Drupal/config/Form/ConfigImportForm.php b/core/modules/config/lib/Drupal/config/Form/ConfigImportForm.php
index ebdeb498fc86a9ee7c0e8ea29d630b2fc291f726..a18a9715257a3f96ebeae6790dd5cf33ed47366b 100644
--- a/core/modules/config/lib/Drupal/config/Form/ConfigImportForm.php
+++ b/core/modules/config/lib/Drupal/config/Form/ConfigImportForm.php
@@ -96,7 +96,7 @@ public function submitForm(array &$form, array &$form_state) {
         }
         $archiver->extractList($files, config_get_config_directory(CONFIG_STAGING_DIRECTORY));
         drupal_set_message($this->t('Your configuration files were successfully uploaded, ready for import.'));
-        $form_state['redirect'] = 'admin/config/development/sync';
+        $form_state['redirect'] = 'admin/config/development/configuration/sync';
       }
       catch (\Exception $e) {
         form_set_error('import_tarball', $this->t('Could not extract the contents of the tar file. The error message is <em>@message</em>', array('@message' => $e->getMessage())));
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
index 80c63d66e54d796abd0e488768fdfac9298c5249..71c676239c2ee6c6243ca0a444f55937b9a4555d 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
@@ -44,11 +44,11 @@ protected function setUp() {
    */
   function testExport() {
     // Verify the export page with export submit button is available.
-    $this->drupalGet('admin/config/development/export');
+    $this->drupalGet('admin/config/development/configuration/export');
     $this->assertFieldById('edit-submit', t('Export'));
 
     // Submit the export form and verify response.
-    $this->drupalPostForm('admin/config/development/export', array(), t('Export'));
+    $this->drupalPostForm('admin/config/development/configuration/export', array(), t('Export'));
     $this->assertResponse(200, 'User can access the download callback.');
 
     // Get the archived binary file provided to user for download.
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
index 737ddf866f1f48fdc5638022c6d67c9cd15e356e..04aacadbc50a2f5a3ec61d0b95dc22664e1bf52b 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
@@ -41,7 +41,7 @@ function testImport() {
     $storage = $this->container->get('config.storage');
     $staging = $this->container->get('config.storage.staging');
 
-    $this->drupalGet('admin/config/development/sync');
+    $this->drupalGet('admin/config/development/configuration/sync');
     $this->assertText('There are no configuration changes.');
     $this->assertNoFieldById('edit-submit', t('Import all'));
 
@@ -65,7 +65,7 @@ function testImport() {
     $this->assertIdentical($staging->exists($dynamic_name), TRUE, $dynamic_name . ' found.');
 
     // Verify that both appear as ready to import.
-    $this->drupalGet('admin/config/development/sync');
+    $this->drupalGet('admin/config/development/configuration/sync');
     $this->assertText($name);
     $this->assertText($dynamic_name);
     $this->assertFieldById('edit-submit', t('Import all'));
@@ -98,7 +98,7 @@ function testImportLock() {
     $this->prepareSiteNameUpdate($new_site_name);
 
     // Verify that there are configuration differences to import.
-    $this->drupalGet('admin/config/development/sync');
+    $this->drupalGet('admin/config/development/configuration/sync');
     $this->assertNoText(t('There are no configuration changes.'));
 
     // Acquire a fake-lock on the import mechanism.
@@ -140,7 +140,7 @@ function testImportDiff() {
     $staging->write($config_name, $staging_data);
 
     // Load the diff UI and verify that the diff reflects the change.
-    $this->drupalGet('admin/config/development/sync/diff/' . $config_name);
+    $this->drupalGet('admin/config/development/configuration/sync/diff/' . $config_name);
     $this->assertTitle(format_string('View changes of @config_name | Drupal', array('@config_name' => $config_name)));
 
     // Reset data back to original, and remove a key
@@ -149,7 +149,7 @@ function testImportDiff() {
     $staging->write($config_name, $staging_data);
 
     // Load the diff UI and verify that the diff reflects a removed key.
-    $this->drupalGet('admin/config/development/sync/diff/' . $config_name);
+    $this->drupalGet('admin/config/development/configuration/sync/diff/' . $config_name);
 
     // Reset data back to original and add a key
     $staging_data = $original_data;
@@ -157,7 +157,7 @@ function testImportDiff() {
     $staging->write($config_name, $staging_data);
 
     // Load the diff UI and verify that the diff reflects an added key.
-    $this->drupalGet('admin/config/development/sync/diff/' . $config_name);
+    $this->drupalGet('admin/config/development/configuration/sync/diff/' . $config_name);
   }
 
   function prepareSiteNameUpdate($new_site_name) {
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
index 89cdf6fd923d28ebca4598da6c1f0e5e0a46fb97..b78639bd1d526aa8c2e40100902e34bd474c96d2 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUploadTest.php
@@ -36,13 +36,13 @@ function setUp() {
    */
   function testImport() {
     // Verify access to the config upload form.
-    $this->drupalGet('admin/config/development/import');
+    $this->drupalGet('admin/config/development/configuration/import');
     $this->assertResponse(200);
 
     // Attempt to upload a non-tar file.
     $text_file = current($this->drupalGetTestFiles('text'));
     $edit = array('files[import_tarball]' => drupal_realpath($text_file->uri));
-    $this->drupalPostForm('admin/config/development/import', $edit, t('Upload'));
+    $this->drupalPostForm('admin/config/development/configuration/import', $edit, t('Upload'));
     $this->assertText(t('Could not extract the contents of the tar file'));
   }