diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index c579e7e..aea6091 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -10,6 +10,11 @@ use Drupal\Core\Database\Query\SelectInterface;
  */
 
 /**
+ * The number of items per page to show in pagers.
+ */
+define('PAGER_ITEMS', 50);
+
+/**
  * Query extender for pager queries.
  *
  * This is the "default" pager mechanism.  It creates a paged query with a fixed
@@ -29,7 +34,7 @@ class PagerDefault extends SelectExtender {
    *
    * @var int
    */
-  protected $limit = 10;
+  protected $limit = PAGER_ITEMS;
 
   /**
    * The unique ID of this pager on this page.
@@ -68,10 +73,14 @@ class PagerDefault extends SelectExtender {
       return NULL;
     }
 
-    // A NULL limit is the "kill switch" for pager queries.
-    if (empty($this->limit)) {
+    // A NULL or FALSE limit is the "kill switch" for pager queries.
+    if (!is_numeric($this->limit)) {
       return;
     }
+    // A zero limit means we use the default limit.
+    elseif (empty($this->limit)) {
+      $this->limit = variable_get('pager_items', PAGER_ITEMS);
+    }
     $this->ensureElement();
 
     $total_items = $this->getCountQuery()->execute()->fetchField();
@@ -131,13 +140,14 @@ class PagerDefault extends SelectExtender {
   /**
    * Specify the maximum number of elements per page for this query.
    *
-   * The default if not specified is 10 items per page.
+   * The default if not specified is PAGER_ITEMS items per page.
    *
    * @param $limit
-   *   An integer specifying the number of elements per page.  If passed a false
-   *   value (FALSE, 0, NULL), the pager is disabled.
+   *   An integer specifying the number of elements per page. If 0, the default
+   *   from the 'pager_items' configuration variable is used. If NULL or FALSE,
+   *   the pager is disabled.
    */
-  public function limit($limit = 10) {
+  public function limit($limit = 0) {
     $this->limit = $limit;
     return $this;
   }
@@ -429,7 +439,6 @@ function theme_pager($variables) {
   }
 }
 
-
 /**
  * @defgroup pagerpieces Pager pieces
  * @{
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index ac18da7..db1f4e5 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -467,8 +467,8 @@ function node_admin_nodes() {
   }
   $nids = $query
     ->fields('n',array('nid'))
-    ->limit(50)
     ->orderByHeader($header)
+    ->limit()
     ->execute()
     ->fetchCol();
   $nodes = node_load_multiple($nids);
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 978b0f4..5106fb1 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -6,6 +6,26 @@
  */
 
 /**
+ * The minimum number of items allowed per page in pagers.
+ */
+const PAGER_ITEMS_MIN = 1;
+
+/**
+ * The recommended minimum number of items allowed per page in pagers.
+ */
+const PAGER_ITEMS_LOW = 10;
+
+/**
+ * The recommended maximum number of items allowed per page in pagers.
+ */
+const PAGER_ITEMS_HIGH = 200;
+
+/**
+ * The maximum number of items allowed per page in pagers.
+ */
+const PAGER_ITEMS_MAX = 1000;
+
+/**
  * Menu callback; Provide the administration overview page.
  */
 function system_admin_config_page() {
@@ -1613,6 +1633,48 @@ function system_run_cron_submit($form, &$form_state) {
 }
 
 /**
+ * Form constructor for the pager settings form.
+ *
+ * @see system_settings_form()
+ * @ingroup forms
+ */
+function system_pager_settings() {
+  $form['description'] = array(
+    '#markup' => '<p>' . t('The pager breaks long lists of items into multiple pages.') . '</p>',
+  );
+  $form['pager_items'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Items per page'),
+    '#size' => 4,
+    '#maxlength' => 3,
+    '#description' => t('Enter the number of items the pager should show on a single page.'),
+    '#default_value' => variable_get('pager_items', PAGER_ITEMS),
+  );
+  return system_settings_form($form);
+}
+
+/**
+ * Form validation handler for system_pager_settings().
+ */
+function system_pager_settings_validate($form, &$form_state) {
+  if (!is_numeric($form_state['values']['pager_items'])) {
+    form_set_error('pager_items', t('You must enter a positive whole number between 1 and 1000.'));
+  }
+  elseif (intval($form_state['values']['pager_items']) < PAGER_ITEMS_MIN) {
+    form_set_error('pager_items', t('You must enter a positive whole number between 1 and 1000.'));
+  }
+  elseif (intval($form_state['values']['pager_items']) < PAGER_ITEMS_LOW) {
+    drupal_set_message(t('Setting the value too low can adversely affect the user experience.'), 'warning');
+  }
+  elseif (intval($form_state['values']['pager_items']) >= PAGER_ITEMS_MAX) {
+    form_set_error('pager_items', t('You must enter a positive  whole number between 1 and 1000.'));
+  }
+  elseif (intval($form_state['values']['pager_items']) >= PAGER_ITEMS_HIGH) {
+    drupal_set_message(t('Setting the value too high can adversely affect performance on listing pages.'), 'warning');
+  }
+}
+
+/**
  * Form builder; Configure error reporting settings.
  *
  * @ingroup forms
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 151d299..d18ce50 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1033,6 +1033,15 @@ function system_menu() {
     'file' => 'system.admin.inc',
     'weight' => 20,
   );
+  $items['admin/config/system/pager'] = array(
+    'title' => t('Pager'),
+    'description' => t('Configure the number of items per page shown in generated lists.'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_pager_settings'),
+    'access arguments' => array('administer site configuration'),
+    'file' => 'system.admin.inc',
+    'weight' => 20,
+  );
   // Additional categories
   $items['admin/config/user-interface'] = array(
     'title' => 'User interface',
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index f7d4552..87c9ac4 100644
--- a/core/modules/user/user.admin.inc
+++ b/core/modules/user/user.admin.inc
@@ -161,7 +161,7 @@ function user_admin_account() {
   $query = $query->extend('PagerDefault')->extend('TableSort');
   $query
     ->fields('u', array('uid', 'name', 'status', 'created', 'access'))
-    ->limit(50)
+    ->limit()
     ->orderByHeader($header)
     ->setCountQuery($count_query);
   $result = $query->execute();
