diff --git a/src/Plugin/Diff/ParagraphsFieldDiffBuilder.php b/src/Plugin/Diff/ParagraphsFieldDiffBuilder.php
new file mode 100644
index 0000000..451fcd9
--- /dev/null
+++ b/src/Plugin/Diff/ParagraphsFieldDiffBuilder.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\paragraphs\Plugin\Diff;
+
+use Drupal\diff\FieldDiffBuilderBase;
+use Drupal\Core\Field\FieldItemListInterface;
+
+/**
+ * This plugins offers the possibility to compare paragraphs.
+ *
+ * @FieldDiffBuilder(
+ *   id = "entity_reference_revisions_field_diff_builder",
+ *   label = @Translation("Field Diff for Paragraphs"),
+ *   field_types = {
+ *     "entity_reference_revisions"
+ *   },
+ * )
+ */
+class ParagraphsFieldDiffBuilder extends FieldDiffBuilderBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FieldItemListInterface $field_items) {
+    $result_text = array();
+    $item_counter = 0;
+    /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
+    foreach ($field_items as $field_key => $field_item) {
+      if (!$field_item->isEmpty()) {
+        $parsed_text = $this->entityParser->parseEntity($field_item->entity);
+        if (is_array($parsed_text)) {
+          foreach ($parsed_text as $field_id => $field) {
+            foreach ($field as $id => $text) {
+              $result_text[$item_counter + $id] = $text[0];
+            }
+            $item_counter = $id + 1;
+          }
+        }
+      }
+    }
+    return $result_text;
+  }
+
+}
diff --git a/src/Tests/ParagraphsDiffTest.php b/src/Tests/ParagraphsDiffTest.php
new file mode 100644
index 0000000..1bf10ff
--- /dev/null
+++ b/src/Tests/ParagraphsDiffTest.php
@@ -0,0 +1,129 @@
+<?php
+
+namespace Drupal\paragraphs\Tests;
+
+use Drupal\field_ui\Tests\FieldUiTestTrait;
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests the configuration of paragraphs.
+ *
+ * @group paragraphs
+ *
+ * @dependencies diff
+ */
+class ParagraphsDiffTest extends WebTestBase {
+
+  use FieldUiTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'node',
+    'paragraphs',
+    'paragraphs_demo',
+    'field',
+    'image',
+    'field_ui',
+    'entity_reference',
+    'block',
+    'diff',
+  );
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    // Create paragraphs and article content types.
+    // Place the breadcrumb, tested in fieldUIAddNewField().
+    $this->drupalPlaceBlock('system_breadcrumb_block');
+    $this->drupalPlaceBlock('local_tasks_block');
+    $admin_user = $this->drupalCreateUser(array(
+      'administer site configuration',
+      'administer nodes',
+      'create paragraphed_content_demo content',
+      'edit any paragraphed_content_demo content',
+      'administer content types',
+      'administer node fields',
+      'administer node display',
+      'administer node form display',
+    ));
+    $this->drupalLogin($admin_user);
+  }
+
+  /**
+   * Tests paragraphs difference plugin.
+   */
+  public function testParagraphsDiff() {
+    // Set up diff plugin.
+    $this->drupalGet('admin/config/content/diff/fields');
+    $edit = array(
+      'fields[entity_reference_revisions][plugin][type]' => 'entity_reference_revisions_field_diff_builder',
+    );
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+
+    // Create paragraphed content.
+    $this->drupalGet('node/add/paragraphed_content_demo');
+    $title = $this->randomMachineName();
+    $this->drupalPostForm(NULL, [], t('Add Text'));
+    $this->drupalPostForm(NULL, [], t('Add Text'));
+    $edit = array(
+      'title[0][value]' => $title,
+      'field_paragraphs_demo[0][subform][field_text_demo][0][value]' => 'Test text 1',
+      'field_paragraphs_demo[1][subform][field_text_demo][0][value]' => 'Test text 2',
+    );
+    $this->drupalPostForm(NULL, $edit, t('Save and publish'));
+
+    $node = $this->drupalGetNodeByTitle($title);
+    $this->drupalGet('node/' . $node->id());
+
+    // Create a second revision, with a comment.
+    $edit = array(
+      'revision' => TRUE,
+      'field_paragraphs_demo[1][subform][field_text_demo][0][value]' => 'New paragraph text',
+      'revision_log[0][value]' => 'Revision 2 comment',
+    );
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+    $this->drupalGet('node/' . $node->id());
+
+    // Check the revisions overview for second revision.
+    $this->clickLink(t('Revisions'));
+    $rows = $this->xpath('//tbody/tr');
+    // Make sure only two revisions available.
+    $this->assertEqual(count($rows), 2);
+
+    // Compare the revisions in standard mode.
+    $this->drupalPostForm(NULL, [], t('Compare'));
+
+    // Check, if the second paragraph is changed.
+    $this->assertText('Changes to Paragraphs');
+    $this->assertText('New paragraph text');
+    $this->assertRaw('<span class="diffchange">New paragraph </span>');
+
+    $this->drupalGet('node/' . $node->id());
+
+    $new_revision = array(
+      'revision' => TRUE,
+      'field_paragraphs_demo[1][subform][field_text_demo][0][value]' => 'New paragraph text for testing',
+      'revision_log[0][value]' => 'Revision 3 comment',
+    );
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $new_revision, t('Save and keep published'));
+    $this->drupalGet('node/' . $node->id());
+
+    // Check the revisions overview for third revision.
+    $this->clickLink(t('Revisions'));
+
+    // Compare the revisions in standard mode.
+    $this->drupalPostForm(NULL, [], t('Compare'));
+
+    // Check, if the second paragraph is changed.
+    $this->assertText('Changes to Paragraphs');
+    $this->assertText('New paragraph text for testing');
+    $this->assertRaw('<span class="diffchange">for testing</span>');
+  }
+
+}
