diff -rup a/entityreference.module b/entityreference.module
--- a/entityreference.module	Mon Jun 04 22:51:22 2012
+++ b/entityreference.module	Wed Jun 13 09:19:37 2012
@@ -557,6 +557,7 @@ function entityreference_field_widget_in
     'settings' => array(
       'match_operator' => 'CONTAINS',
       'size' => 60,
+      'hide_ids' => FALSE,
       // We don't have a default here, because it's not the same between
       // the two widgets, and the Field API doesn't update default
       // settings when the widget changes.
@@ -571,6 +572,7 @@ function entityreference_field_widget_in
     'settings' => array(
       'match_operator' => 'CONTAINS',
       'size' => 60,
+      'hide_ids' => FALSE,
       // We don't have a default here, because it's not the same between
       // the two widgets, and the Field API doesn't update default
       // settings when the widget changes.
@@ -621,6 +623,12 @@ function entityreference_field_widget_se
       '#element_validate' => array('_element_validate_integer_positive'),
       '#required' => TRUE,
     );
+    $form['hide_ids'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Hide ids'),
+      '#description' => t('If your target entities have unique labels you may choose not to have the ids shown to the user. Note that this setting will make it impossible to reference entities with non-unique labels!'),
+      '#default_value' => $settings['hide_ids'],
+    );
   }
 
   return $form;
@@ -675,7 +683,7 @@ function entityreference_field_widget_fo
 
     foreach ($entities as $entity_id => $entity_item) {
       $label = $handler->getLabel($entity_item);
-      $key = "$label ($entity_id)";
+      $key = $instance['widget']['settings']['hide_ids'] ? $label : "$label [id:$entity_id]";
       // Labels containing commas or quotes must be wrapped in quotes.
       if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
         $key = '"' . str_replace('"', '""', $key) . '"';
@@ -727,8 +735,8 @@ function _entityreference_autocomplete_v
   $value = '';
   if (!empty($element['#value'])) {
     // Take "label (entity id)', match the id from parenthesis.
-    if (preg_match("/.+\((\d+)\)/", $element['#value'], $matches)) {
-      $value = $matches[1];
+    if (preg_match('/^(?:\s*|(.*) )?(\[\s*id\s*:\s*(\d+)\s*\]|\(\s*(\d+)\s*\))$/', rtrim($element['#value']), $matches)) {
+      $value = array_pop($matches);
     } else {
       // Try to get a match from the input string when the user didn't use the
       // autocomplete but filled in a value manually.
@@ -749,9 +757,9 @@ function _entityreference_autocomplete_t
     $value = array();
     foreach ($entities as $entity) {
       // Take "label (entity id)', match the id from parenthesis.
-      if (preg_match("/.+\((\d+)\)/", $entity, $matches)) {
+      if (preg_match('/^(?:\s*|(.*) )?(\[\s*id\s*:\s*(\d+)\s*\]|\(\s*(\d+)\s*\))$/', rtrim($element['#value']), $matches)) {
         $value[] = array(
-          'target_id' => $matches[1],
+          'target_id' => array_pop($matches),
         );
       } else {
         // Try to get a match from the input string when the user didn't use the
@@ -824,14 +832,14 @@ function entityreference_autocomplete_ca
 
     // Loop through the products and convert them into autocomplete output.
     foreach ($entity_labels as $entity_id => $label) {
-      $key = "$label ($entity_id)";
+      $key = $instance['widget']['settings']['hide_ids'] ? $label : "$label [id:$entity_id]";
       // Strip things like starting/trailing white spaces, line breaks and tags.
       $key = preg_replace('/\s\s+/', ' ', str_replace("\n", '', trim(decode_entities(strip_tags($key)))));
       // Names containing commas or quotes must be wrapped in quotes.
       if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
         $key = '"' . str_replace('"', '""', $key) . '"';
       }
-      $matches[$prefix . $key] = '<div class="reference-autocomplete">' . $label . '</div>';
+      $matches[$prefix . $key] = '<div class="reference-autocomplete">' . $key . '</div>';
     }
   }
 
diff -rup a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
--- a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php	Mon Jun 04 22:51:22 2012
+++ b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php	Wed Jun 13 09:13:19 2012
@@ -189,7 +189,7 @@ class EntityReference_SelectionHandler_G
       }
       elseif (count($entities) > 5) {
         // Error if there are more than 5 matching entities.
-        form_error($element, t('Many entities are called %value. Specify the one you want by appending the id in parentheses, like "@value (@id)"', array(
+        form_error($element, t('Many entities are called %value. Specify the one you want by specifiying the id, like "@value [id:@id]"', array(
           '%value' => $input,
           '@value' => $input,
           '@id' => key($entities),
@@ -199,9 +199,9 @@ class EntityReference_SelectionHandler_G
         // More helpful error if there are only a few matching entities.
         $multiples = array();
         foreach ($entities as $id => $name) {
-          $multiples[] = $name . ' (' . $id . ')';
+          $multiples[] = $name . ' [id:' . $id . ']';
         }
-        form_error($element, t('Multiple entities match this reference; "%multiple"', array('%multiple' => implode('", "', $multiples))));
+        form_error($element, t('Multiple entities match this reference: "%multiple"', array('%multiple' => implode('", "', $multiples))));
       }
       else {
         // Take the one and only matching entity.
