diff --git a/token_filter.module b/token_filter.module
index 08bed01..179b21f 100644
--- a/token_filter.module
+++ b/token_filter.module
@@ -41,6 +41,38 @@ function token_filter_filter($op, $delta = 0, $format = -1, $text = '' ) {
 }
 
 /**
+ * Implementation of hook_filter_tips().
+ */
+function token_filter_filter_tips($delta, $format, $long = FALSE) {
+  switch ($long) {
+    case FALSE:
+      return t("You may use tokens such as [token global site-name] or [token user user-name] as variables in your content, which will be replaced with dynamic values.");
+    case TRUE:
+      $token_list = token_get_list(array('global', 'user'));
+
+      $headers = array(t('Token'), t('Replacement value'));
+      $rows = array();
+      foreach ($token_list as $type => $tokens) {
+        $rows[] = array(array(
+          'data' => t('@type tokens', array('@type' => drupal_ucfirst($type))),
+          'class' => 'region',
+          'colspan' => 2,
+        ));
+        foreach ($tokens as $token => $description) {
+          $row = array();
+          $row[] = '[token ' . ' ' . $type . ' ' . $token . ']';
+          $row[] = $description;
+          $rows[] = $row;
+        }
+      }
+
+      $output = t("You may use the following tokens in your content:");
+      $output .= theme('table', $headers, $rows, array('class' => 'description'));
+      return $output;
+  }
+}
+
+/**
  * Helper function for preg_replace_callback to generate the html for each token filter
  */
 function token_filter_replacetoken($matches) {  
