diff --git a/server/ui/controller/unread.go b/server/ui/controller/unread.go
index e0f120a0993c54a9feb0b28c1e8f420341ea3ab3..2c6be4b953a33cd1ea7978c468c781d80b95d0c8 100644
--- a/server/ui/controller/unread.go
+++ b/server/ui/controller/unread.go
@@ -16,18 +16,23 @@ func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, re
 
 	builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
 	builder.WithStatus(model.EntryStatusUnread)
-	builder.WithOrder(model.DefaultSortingOrder)
-	builder.WithDirection(user.EntryDirection)
-	builder.WithOffset(offset)
-	builder.WithLimit(nbItemsPerPage)
-
-	entries, err := builder.GetEntries()
+	countUnread, err := builder.CountEntries()
 	if err != nil {
 		response.HTML().ServerError(err)
 		return
 	}
 
-	countUnread, err := builder.CountEntries()
+	if offset >= countUnread {
+		offset = 0
+	}
+
+	builder = c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
+	builder.WithStatus(model.EntryStatusUnread)
+	builder.WithOrder(model.DefaultSortingOrder)
+	builder.WithDirection(user.EntryDirection)
+	builder.WithOffset(offset)
+	builder.WithLimit(nbItemsPerPage)
+	entries, err := builder.GetEntries()
 	if err != nil {
 		response.HTML().ServerError(err)
 		return