diff --git a/token.api.php b/token.api.php
index 15f657c..86236c7 100644
--- a/token.api.php
+++ b/token.api.php
@@ -51,6 +51,8 @@ function hook_token_list($type = 'all') {
  *   An associative array of replacement values, keyed by the original 'raw'
  *   tokens that were found in the source text. For example:
  *   $values['title-raw'] = 'My new node';
+ *
+ * @see hook_token_values_alter()
  */
 function hook_token_values($type, $object = NULL, $options = array()) {
   $values = array();
@@ -67,5 +69,32 @@ function hook_token_values($type, $object = NULL, $options = array()) {
 }
 
 /**
+ * Alter replacement values for placeholder tokens.
+ *
+ * @param $replacements
+ *   An associative array of replacements returned by hook_token_values().
+ * @param $context
+ *   The context in which hook_token_values() was called. An associative array
+ *   with the following keys, which have the same meaning as the corresponding
+ *   parameters of hook_token_values():
+ *   - 'type'
+ *   - 'object'
+ *   - 'options'
+ *
+ * @see hook_token_values()
+ */
+function hook_token_values_alter(&$replacements, $context) {
+  if ($context['type'] == 'node' && !empty($context['object'])) {
+    $node = $context['object'];
+
+    if (isset($replacements['title-raw']) && !empty($node->field_title[0]['value'])) {
+      $title = $node->field_title[0]['value'];
+      $replacements['title-raw'] = $title;
+      $replacements['title'] = check_plain($title);
+    }
+  }
+}
+
+/**
  * @} End of "addtogroup hooks".
  */
diff --git a/token.module b/token.module
index 8cf127a..bd77098 100644
--- a/token.module
+++ b/token.module
@@ -358,6 +358,14 @@ function token_get_values($type = 'global', $object = NULL, $flush = FALSE, $opt
 
   $all = array_merge($tokens['global']['default'], $tokens[$type][$id]);
 
+  // Allow other modules to alter the replacements.
+  $context = array(
+    'type' => $type,
+    'object' => $object,
+    'options' => $options,
+  );
+  drupal_alter('token_values', $all, $context);
+
   $result = new stdClass();
   $result->tokens = array_keys($all);
   $result->values = array_values($all);
