diff --git a/core/lib/Drupal/Core/Config/ConfigManager.php b/core/lib/Drupal/Core/Config/ConfigManager.php
index f1dc2e5..01e9cc2 100644
--- a/core/lib/Drupal/Core/Config/ConfigManager.php
+++ b/core/lib/Drupal/Core/Config/ConfigManager.php
@@ -9,6 +9,7 @@
 
 use Drupal\Component\Diff\Diff;
 use Drupal\Component\Serialization\Yaml;
+use Drupal\Component\Utility\Crypt;
 use Drupal\Core\Config\Entity\ConfigDependencyManager;
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
 use Drupal\Core\Config\Entity\ConfigEntityTypeInterface;
@@ -483,4 +484,18 @@ public function findMissingContentDependencies() {
     return $missing_dependencies;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function isModified($config_name) {
+    $active = $this->activeStorage->read($config_name);
+    // Get the hash created when the config was installed.
+    $original_hash = $active['_core']['default_config_hash'];
+    // Remove export keys not used to generate default config hash.
+    unset($active['uuid']);
+    unset($active['_core']);
+    $active_hash = Crypt::hashBase64(serialize($active));
+    return $original_hash !== $active_hash;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Config/ConfigManagerInterface.php b/core/lib/Drupal/Core/Config/ConfigManagerInterface.php
index d908e3f..823a6c6 100644
--- a/core/lib/Drupal/Core/Config/ConfigManagerInterface.php
+++ b/core/lib/Drupal/Core/Config/ConfigManagerInterface.php
@@ -179,4 +179,15 @@ public function getConfigCollectionInfo();
    */
   public function findMissingContentDependencies();
 
+  /**
+   * Checks if a config item has been modified since its installation.
+   *
+   * @param string $config_name
+   *   The configuration item's full name.
+   *
+   * @return bool
+   *   Returns TRUE is modified, FALSE if original configuration.
+   */
+  public function isModified($config_name);
+
 }
diff --git a/core/modules/config/src/Tests/ConfigModifiedTest.php b/core/modules/config/src/Tests/ConfigModifiedTest.php
new file mode 100644
index 0000000..fe18757
--- /dev/null
+++ b/core/modules/config/src/Tests/ConfigModifiedTest.php
@@ -0,0 +1,34 @@
+<?php
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Check is a configuration has been modified.
+ *
+ * @group config
+ */
+class ConfigModifiedTest extends KernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('config_test', 'system');
+
+  public function testIsModified() {
+    $this->installConfig(['config_test']);
+
+    /** @var \Drupal\Core\Config\ConfigManagerInterface $manager */
+    $manager = $this->container->get('config.manager');
+    $config_name = 'config_test.system';
+
+    $this->assertFalse($manager->isModified($config_name));
+
+    $this->container->get('config.factory')->getEditable($config_name)
+      ->set('404', 'user/login')
+      ->save();
+
+    $this->assertTrue($manager->isModified($config_name));
+  }
+}
\ No newline at end of file
