diff --git flag.inc flag.inc
index 8757b5a..b3e5e2f 100644
--- flag.inc
+++ flag.inc
@@ -834,8 +834,8 @@ class flag_flag {
       return;
     }
     $label = t($this->$label);
-    if (strpos($label, '[') !== FALSE && module_exists('token')) {
-      $label = $this->replace_tokens($label, array('global' => NULL), array('sanitize' => FALSE), $content_id);
+    if (strpos($label, '[') !== FALSE) {
+      $label = $this->replace_tokens($label, array(), array('sanitize' => FALSE), $content_id);
     }
     return filter_xss_admin($label);
   }
diff --git flag.module flag.module
index 6c20bbe..04c4e37 100644
--- flag.module
+++ flag.module
@@ -1171,8 +1171,8 @@ function flag_theme() {
       'pattern' => 'flag__',
       'path' => $path,
     ),
-    'flag_token_help' => array(
-      'variables' => array('types' => array('all'), 'prefix' => '[', 'suffix' => ']'),
+    'flag_tokens_browser' => array(
+      'variables' => array('types' => array('all'), 'global_types' => TRUE),
       'file' => 'includes/flag.token.inc',
     ),
     'flag_admin_page' => array(
diff --git flag_actions.module flag_actions.module
index 6c33b62..3be51b5 100644
--- flag_actions.module
+++ flag_actions.module
@@ -671,14 +671,14 @@ function flag_actions_system_send_email_action_form(&$form, &$flag, $context) {
     '#collapsed' => TRUE,
   );
   $form['help']['basic'] = array(
-    '#markup' => theme('flag_token_help', array('types' => array('flag', 'flag-action'))),
+    '#markup' => theme('flag_tokens_browser', array('types' => array('flag', 'flag-action'))),
   );
 
   $form['help']['tokens'] = array(
     '#type' => 'fieldset',
     '#title' => t('More tokens'),
     '#description' => t("Depending on the type of the content being flagged, the following tokens can be used in the recipients, subject, or message. For example, if the content being flagged is a node, you can use any of the node tokens --but you can't use the comment tokens: they won't be recognized. Similarly, if the content being flagged is a user, you can use only the user tokens."),
-    '#value' => theme('flag_token_help', array('types' => $flag->get_labels_token_types())),
+    '#value' => theme('flag_tokens_browser', array('types' => $flag->get_labels_token_types(), 'global_types' => FALSE)),
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
   );
diff --git includes/flag.admin.inc includes/flag.admin.inc
index 1f0e797..80fa98f 100644
--- includes/flag.admin.inc
+++ includes/flag.admin.inc
@@ -297,20 +297,21 @@ function flag_form($form, &$form_state, $name, $type = NULL) {
     '#access' => empty($flag->locked['unflag_message']),
   );
 
-  if (module_exists('token')) {
-    $form['messages']['token_help'] = array(
-      '#title' => t('Token replacement'),
-      '#type' => 'fieldset',
-      '#description' => t('The above six options may contain the following wildcard replacements. For example, "Mark Link" could be entered as "Add [title] to your flags" or "Add this [type-name] to your flags". These wildcards will be replaced with the appropriate field from the node.') . theme('flag_token_help', array('types' => $flag->get_labels_token_types())),
-      '#collapsible' => TRUE,
-      '#collapsed' => TRUE,
-    );
-  }
-  else {
-    $form['messages']['token_help'] = array(
-      '#value' => '<em>' . t('Note: You don\'t have the <a href="@token-url">Token</a> module installed. If you have it installed, and enabled, you\'ll be able to embed tokens in the six labels above.', array('@token-url' => 'http://drupal.org/project/token')) . '</em>',
-    );
-  }
+  $form['messages']['tokens_help'] = array(
+    '#title' => t('Token replacement'),
+    '#type' => 'fieldset',
+    '#description' =>
+      '<p>' . t('The above six texts may contain any of the tokens listed below. For example, <em>"Flag link text"</em> could be entered as:') . '</p>' .
+      theme('item_list', array('items' => array(
+        t('Add &lt;em&gt;[node:title]&lt;/em&gt; to your favorites'),
+        t('Add this [node:type] to your favorites'),
+        t('Vote for this proposal ([node:flag-vote-count] people have already done so)'),
+      ), 'attributes' => array('class' => 'token-examples'))) .
+      '<p>' . t('These tokens will be replaced with the appropriate fields from the node (or user, or comment).') . '</p>' .
+      theme('flag_tokens_browser', array('types' => $flag->get_labels_token_types())),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
 
   $form['access'] = array(
     '#type' => 'fieldset',
diff --git includes/flag.token.inc includes/flag.token.inc
index c011d70..9924942 100644
--- includes/flag.token.inc
+++ includes/flag.token.inc
@@ -138,69 +138,21 @@ function flag_tokens($type, $tokens, array $data = array(), array $options = arr
 }
 
 /**
- * This is a replacement for Token's theme_token_help().
+ * Returns HTML for a tokens browser.
  *
- * This is a duplicate of the Token's function, but with a small modification:
- * the $type parameter is now $types, allowing for listing tokens from several
- * categories.
- *
- * @todo Replace this with whatever UI is created in D7 for tokens.
+ * @param $variables
+ *   An associative array containing:
+ *   - types: An array naming the types of tokens to show.
+ *   - global_types: Whether to show global tokens.
  */
-function theme_flag_token_help($variables) {
+function theme_flag_tokens_browser($variables) {
   $types = $variables['types'];
-  $prefix = $variables['prefix'];
-  $suffix = $variables['suffix'];
-
-  $tokens = flag_token_get_list($types);
-
-  $header = array(t('Token'), t('Replacement value'));
-  $rows = array();
-  foreach ($tokens as $key => $category) {
-    $rows[] = array(array('data' => drupal_ucfirst($key) . ' ' . t('tokens'), 'class' => array('region'), 'colspan' => 2));
-    foreach ($category as $token => $description) {
-      $row = array();
-      $row[] = $prefix . $key . ':' . $token . $suffix;
-      $row[] = $description;
-      $rows[] = $row;
-    }
-  }
-
-  $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('description'))));
-  return $output;
-}
+  $global_types = $variables['global_types'];
 
-/**
- * This is a replacement for Token's token_get_list().
- *
- * It is used only by theme_flag_token_help(), above.
- *
- * This is a duplicate of the Token's function, but with a small modification:
- * the $type parameter is now $types, allowing for listing tokens from several
- * categories.
- *
- * @todo Replace this with whatever UI is created in D7 for tokens.
- */
-function flag_token_get_list($types = array('all')) {
-  $return = array();
-  foreach ($types as $type) {
-    foreach (module_implements('token_info') as $module) {
-      $function = $module . '_token_info';
-      $result = $function($type);
-      if (is_array($result)) {
-        foreach ($result['tokens'] as $category => $tokens) {
-          foreach ($tokens as $token => $info) {
-            $return[$category][$token] = $info['name'];
-          }
-        }
-      }
-    }
+  if (module_exists('token')) {
+    return theme('token_tree', array('token_types' => $types, 'global_types' => $global_types));
   }
-  // For aesthetic reasons, we don't want the 'global' section to appear in
-  // varying places, so let's move it to the bottom.
-  if (isset($return['global'])) {
-    $global = $return['global'];
-    unset($return['global']);
-    $return['global'] = $global;
+  else {
+    return '<p><em>' . t("Note: You don't have the <a href='@token-url'>Token</a> module installed, so the list of available tokens isn't shown here. You don't have to install <a href='@token-url'>Token</a> to be able to use tokens, but if you have it installed, and enabled, you'll be able to enjoy an interactive tokens browser.", array('@token-url' => 'http://drupal.org/project/token')) . '</em></p>';
   }
-  return $return;
 }
diff --git theme/flag-admin.css theme/flag-admin.css
index 6405c9b..83a65c2 100644
--- theme/flag-admin.css
+++ theme/flag-admin.css
@@ -13,3 +13,14 @@ table.flag-admin-table td {
   padding-left: 2em;
   padding-right: 2em;
 }
+
+#flag-form .token-examples {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-left: 4em;
+}
+#flag-form .token-examples li {
+  color: #999;
+  font-family: monospace;
+  line-height: 120%;
+}
