diff --git a/components/select.inc b/components/select.inc
index 7c74470..fdfc30d 100644
--- a/components/select.inc
+++ b/components/select.inc
@@ -310,6 +310,10 @@ function _webform_render_select($component, $value = NULL, $filter = TRUE) {
   $default_value = $filter ? webform_replace_tokens($component['value'], $node) : $component['value'];
   $options = _webform_select_options($component, !$component['extra']['aslist'], $filter);
 
+  foreach ($options as $key => $option) {
+    $options[$key] = webform_replace_tokens($option, $node);
+  }
+
   if ($component['extra']['optrand']) {
     _webform_shuffle_options($options);
   }
@@ -474,6 +478,7 @@ function webform_expand_checkboxes($element) {
   foreach ($default_value as $key => $val) {
     $element[$key]['#default_value'] = $val;
   }
+
   return $element;
 }
 
@@ -972,16 +977,16 @@ function _webform_select_options_from_text($text, $flat = FALSE, $filter = TRUE)
           unset($group);
         }
         elseif (!$flat) {
-          $group = $filter ? webform_replace_tokens($matches[1]) : $matches[1];
+          $group = $matches[1];
         }
       }
       elseif (preg_match('/^([^|]+)\|(.*)$/', $option, $matches)) {
-        $key = $filter ? webform_replace_tokens($matches[1]) : $matches[1];
-        $value = $filter ? webform_replace_tokens($matches[2]) : $matches[2];
+        $key = $matches[1];
+        $value = $matches[2];
         isset($group) ? $options[$group][$key] = $value : $options[$key] = $value;
       }
       else {
-        $filtered_option = $filter ? webform_replace_tokens($option) : $option;
+        $filtered_option = $option;
         isset($group) ? $options[$group][$filtered_option] = $filtered_option : $options[$filtered_option] = $filtered_option;
       }
     }
