diff --git a/config/install/diff.settings.yml b/config/install/diff.settings.yml
index 467dcab..6268a1c 100644
--- a/config/install/diff.settings.yml
+++ b/config/install/diff.settings.yml
@@ -3,6 +3,7 @@ general_settings:
   radio_behavior: simple
   context_lines_leading: 1
   context_lines_trailing: 1
+  revision_pager_limit: 50
 entity:
   node:
     nid: 0
diff --git a/config/schema/diff.schema.yml b/config/schema/diff.schema.yml
index f27a1ca..ed4b6cb 100644
--- a/config/schema/diff.schema.yml
+++ b/config/schema/diff.schema.yml
@@ -18,6 +18,9 @@ diff.settings:
         context_lines_trailing:
           type: integer
           label: 'Number of trailing context lines'
+        revision_pager_limit:
+          type: integer
+          label: 'Revisions per page to be displayed in diff pager'
     entity:
       type: sequence
       label: 'Entities'
diff --git a/diff.install b/diff.install
new file mode 100644
index 0000000..0cf8b4f
--- /dev/null
+++ b/diff.install
@@ -0,0 +1,15 @@
+<?php
+/**
+ * @file hook_update_N() and related functions
+ */
+
+
+/**
+ * Update diff.settings to include general_settings.revision_pager_limit
+ */
+function diff_update_8001() {
+  $config_factory = \Drupal::configFactory();
+  $config = $config_factory->getEditable('diff.settings');
+  $config->set('general_settings.revision_pager_limit', 50);
+  $config->save(TRUE);
+}
diff --git a/src/Form/RevisionOverviewForm.php b/src/Form/RevisionOverviewForm.php
index 95309d0..87b4360 100755
--- a/src/Form/RevisionOverviewForm.php
+++ b/src/Form/RevisionOverviewForm.php
@@ -122,7 +122,16 @@ class RevisionOverviewForm extends FormBase {
     $has_translations = (count($languages) > 1);
     $node_storage = $this->entityManager->getStorage('node');
     $type = $node->getType();
-    $vids = array_reverse($node_storage->revisionIds($node));
+
+    $pagerLimit = \Drupal::config('diff.settings')->get('general_settings.revision_pager_limit');
+
+    $query = \Drupal::entityQuery('node')
+      ->condition('nid', $node->id())
+      ->pager($pagerLimit)
+      ->allRevisions()
+      ->sort('vid', 'DESC');
+    $vids = $query->execute();
+
     $revision_count = count($vids);
 
     $build['#title'] = $has_translations ? $this->t('@langname revisions for %title', ['@langname' => $langname, '%title' => $node->label()]) : $this->t('Revisions for %title', ['%title' => $node->label()]);
@@ -163,10 +172,12 @@ class RevisionOverviewForm extends FormBase {
     $build['node_revisions_table']['#attached']['library'][] = 'diff/diff.general';
     $build['node_revisions_table']['#attached']['drupalSettings']['diffRevisionRadios'] = $this->config->get('general_settings.radio_behavior');
 
-    $latest_revision = TRUE;
+    // Start with the assumption of "latest revision" only if on first page
+    $page = \Drupal::request()->query->get('page');
+    $latest_revision = empty($page);
 
     // Add rows to the table.
-    foreach ($vids as $vid) {
+    foreach (array_keys($vids) as $vid) {
       if ($revision = $node_storage->loadRevision($vid)) {
         if ($revision->hasTranslation($langcode) && $revision->getTranslation($langcode)->isRevisionTranslationAffected()) {
           $username = array(
@@ -297,6 +308,9 @@ class RevisionOverviewForm extends FormBase {
         ),
       );
     }
+    $build['pager'] = array(
+      '#type' => 'pager',
+    );
 
     return $build;
   }
