diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 6ebcb2ae2ecae7f796c67a00c36dd6e0aafcceba..d9d357b8a5d5ca587b80953c7e2fe3a2013f61f1 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -1,7 +1,8 @@
+from django.core.exceptions import ValidationError
 from django.utils.translation import gettext as _
 
 from dynamic_preferences.preferences import Section
-from dynamic_preferences.types import BooleanPreference
+from dynamic_preferences.types import BooleanPreference, IntegerPreference
 
 from aleksis.core.registries import person_preferences_registry, site_preferences_registry
 
@@ -109,3 +110,15 @@ class ShowGroupRolesInLessonView(BooleanPreference):
     name = "group_roles_in_lesson_view"
     default = True
     verbose_name = _("Show assigned group roles in lesson view")
+
+
+@person_preferences_registry.register
+class RegisterObjectsTableItemsPerPage(IntegerPreference):
+    section = alsijil
+    name = "register_objects_table_items_per_page"
+    default = 100
+    verbose_name = _("Items per page in lessons table")
+
+    def validate(self, value):
+        if value < 1:
+            raise ValidationError(_("Each page must show at least one item."))
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index a3b9f4e59d65041d23649b1eeb4485c0ab9b5ac4..49bb7f1107d558bb07d3d39a74370fabe45e220c 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -919,7 +919,10 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
     register_objects = generate_list_of_all_register_objects(filter_dict)
     if register_objects:
         table = RegisterObjectTable(register_objects)
-        RequestConfig(request,).configure(table)  # paginate={"per_page": 100}
+        items_per_page = request.user.person.preferences[
+            "alsijil__register_objects_table_items_per_page"
+        ]
+        RequestConfig(request, paginate={"per_page": items_per_page}).configure(table)
         context["register_object_table"] = table
     return render(request, "alsijil/class_register/person.html", context)
 
@@ -1289,7 +1292,10 @@ class AllRegisterObjectsView(PermissionRequiredMixin, View):
 
         if register_objects:
             self.table = RegisterObjectSelectTable(register_objects)
-            RequestConfig(request, paginate={"per_page": 100}).configure(self.table)
+            items_per_page = request.user.person.preferences[
+                "alsijil__register_objects_table_items_per_page"
+            ]
+            RequestConfig(request, paginate={"per_page": items_per_page}).configure(self.table)
             context["table"] = self.table
         return context