diff --git a/diff.module b/diff.module
index 355bb01..a5aa693 100644
--- a/diff.module
+++ b/diff.module
@@ -169,6 +169,12 @@ function diff_form_alter(&$form, $form_state, $form_id) {
       '#weight' => 10,
       '#default_value' => variable_get('show_preview_changes_'. $form['#node_type']->type, TRUE),
     );
+    $form['workflow']['diff']['remove_markup_default'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Remove markup by default when comparing body text'),
+      '#weight' => 10,
+      '#default_value' => variable_get('remove_markup_default_'. $form['#node_type']->type, FALSE),
+    );
     $form['workflow']['diff']['show_diff_inline'] = array(
       '#type' => 'checkbox',
       '#title' => t('Show diffs inline for this content type'),
@@ -193,7 +199,7 @@ function diff_node_form_build_preview_changes($form, &$form_state) {
   $node = node_form_submit_build_node($form, $form_state);
 
   // Create diff of old node and edited node
-  $rows = _diff_body_rows(node_load($form_state['values']['nid']), $node);
+  $rows = _diff_body_rows(node_load($form_state['values']['nid']), $node, variable_get('remove_markup_default_'. $node->type, FALSE));
   $cols = _diff_default_cols();
   $header = _diff_default_header();
   $changes = theme('diff_table', $header, $rows, array('class' => 'diff'), NULL, $cols);
diff --git a/diff.pages.inc b/diff.pages.inc
index 5363f27..5c8eec7 100644
--- a/diff.pages.inc
+++ b/diff.pages.inc
@@ -128,7 +128,8 @@ function diff_node_revisions_submit($form, &$form_state) {
   // the ids are ordered so the old revision is always on the left
   $old_vid = min($form_state['values']['old'], $form_state['values']['new']);
   $new_vid = max($form_state['values']['old'], $form_state['values']['new']);
-  $form_state['redirect'] =  'node/'. $form_state['values']['nid'] .'/revisions/view/'. $old_vid .'/'. $new_vid;
+  $remove_markup = $form_state['values']['remove_markup'];
+  $form_state['redirect'] =  'node/'. $form_state['values']['nid'] .'/revisions/view/'. $old_vid .'/'. $new_vid .'/'. $remove_markup;
 }
 
 /**
@@ -152,8 +153,10 @@ function diff_node_revisions_validate($form, &$form_state) {
  *   Version ID of the old revision.
  * @param $new_vid
  *   Version ID of the new revision.
+ * @param $remove_markup
+ *   Strip markup before doing the diff
  */
-function diff_diffs_show($node, $old_vid, $new_vid) {
+function diff_diffs_show($node, $old_vid, $new_vid, $remove_markup = NULL) {
 
   // Set same title as on the 'Revisions' tab for consistency
   drupal_set_title(t('Revisions for %title', array('%title' => $node->title)));
@@ -163,6 +166,11 @@ function diff_diffs_show($node, $old_vid, $new_vid) {
   $old_node = node_load($node->nid, $old_vid);
   $new_node = node_load($node->nid, $new_vid);
 
+  // Set default for remove markup if not set
+  if ($remove_markup == NULL) {
+    $remove_markup = variable_get('remove_markup_default_'. $node->type, FALSE);
+  }
+
   // Generate table header (date, username, logmessage).
   $old_header = t('!date by !username', array(
     '!date' => l(format_date($old_node->revision_timestamp), "node/$node->nid/revisions/$old_node->vid/view"),
@@ -219,7 +227,22 @@ function diff_diffs_show($node, $old_vid, $new_vid) {
       'colspan' => 2
     )
   );
-  $rows = array_merge($rows, _diff_body_rows($old_node, $new_node));
+
+  if ($remove_markup) {
+    $show_hide_markup_link= l(t('Hide/Show Markup'), 'node/'. $node->nid .'/revisions/view/'. $old_vid .'/'. $new_vid .'/0');
+  }
+  else {
+    $show_hide_markup_link = l(t('Hide/Show Markup'), 'node/'. $node->nid .'/revisions/view/'. $old_vid .'/'. $new_vid .'/1');
+  }
+  $rows[] = array(
+    array(
+      'data' => $show_hide_markup_link,
+      'class' => 'diff-prevlink',
+      'colspan' => 4,
+    )
+  );
+
+  $rows = array_merge($rows, _diff_body_rows($old_node, $new_node, $remove_markup));
   $output = theme('diff_table', $header, $rows, array('class' => 'diff'), NULL, $cols);
 
   if ($node->vid == $new_vid) {
@@ -241,8 +264,10 @@ function diff_diffs_show($node, $old_vid, $new_vid) {
  *   Node for comparison which will be displayed on the left side.
  * @param $new_node
  *   Node for comparison which will be displayed on the right side.
+ * @param $remove_markup
+ *   Strip markup before doing the diff
  */
-function _diff_body_rows($old_node, $new_node) {
+function _diff_body_rows($old_node, $new_node, $remove_markup = FALSE) {
   drupal_add_css(drupal_get_path('module', 'diff') .'/diff.css', 'module', 'all', FALSE);
 
   module_load_include('inc', 'diff', 'includes/node');
@@ -256,7 +281,7 @@ function _diff_body_rows($old_node, $new_node) {
   $rows = array();
   $any_visible_change = FALSE;
   // @todo quick workaround for PHP >= 5.3.0 date_diff() conflict.
-  $node_diffs = _diff_module_invoke_all($old_node, $new_node);
+  $node_diffs = _diff_module_invoke_all($old_node, $new_node, $remove_markup);
 
   // We start off assuming all form elements are in the correct order.
   $node_diffs['#sorted'] = TRUE;
@@ -322,13 +347,13 @@ function _diff_body_rows($old_node, $new_node) {
  * @link http://drupal.org/node/639320
  * @see module_invoke_all()
  */
-function _diff_module_invoke_all($old_node, $new_node) {
+function _diff_module_invoke_all($old_node, $new_node, $remove_markup) {
   $return = array();
   foreach (module_implements('diff') as $module) {
     if ($module == 'date') {
       continue; // Avoid function name collision with date_diff().
     }
-    $result = module_invoke($module, 'diff', $old_node, $new_node);
+    $result = module_invoke($module, 'diff', $old_node, $new_node, $remove_markup);
     if (isset($result) && is_array($result)) {
       $return = array_merge_recursive($return, $result);
     }
diff --git a/includes/node.inc b/includes/node.inc
index 8acbe67..b13cdef 100644
--- a/includes/node.inc
+++ b/includes/node.inc
@@ -8,7 +8,7 @@
 /**
  * Implementation of hook_diff() for node.module (body and title).
  */
-function node_diff($old_node, $new_node) {
+function node_diff($old_node, $new_node, $remove_markup) {
 
   $result = array();
   $type = node_get_types('type', $new_node);
@@ -24,8 +24,8 @@ function node_diff($old_node, $new_node) {
   if ($type->has_body) {
     $result['body'] = array(
       '#name' => $type->body_label,
-      '#old' => explode("\n", $old_node->body),
-      '#new' => explode("\n", $new_node->body),
+      '#old' => explode("\n", ($remove_markup) ? drupal_html_to_text($old_node->body) : $old_node->body),
+      '#new' => explode("\n", ($remove_markup) ? drupal_html_to_text($new_node->body) : $new_node->body),
     );
   }
   return $result;
