Today I stumbled upon this pagination concept and I found it fascinating: Fibonacci-based Pagination Concept.

It's actually an old shot but it made me think as I'll need to paginate some content in the near future.

Pages will soon become hundred and eventually thousands, so I'll need some "clever" pagination [in groups] (10-30 | 31-32-33...37-38-39 | 40-70) instead of just listing pages from 1 to 200.

As mentioned before, I find this approach fascinating but I also feel that the user needs to be able to reach the page that he wants to with the least possible number of steps.

I'm not a UX expert so you'll be the judge: would you consider this a good or a bad approach? And what use case is this a good or a bad approach for?


I'm unaware of the creator's use case. I'm showing a content that is ordered by time but the time variable is irrelevant to the user. Pages are there just to fragment content.

User by itself doesn't need to go to a specific page as items have a permalink.

Say that I have posts which contain aphorisms: they have been posted in different times so I can list them and order them and eventually split them into pages, but the date/time itself is irrelevant.

  • 6
    My brain hurts! 90 is not part of the Fibonacci Sequence... Aug 11, 2014 at 19:14
  • 33
    The property about the Fibonacci Sequence, which helps keep the number of clicks down is that the Fibonacci Sequence is growing approximately exponential. But there are other sequences, which grows approximately sequential, and are more intuitive. For example 1, 2, 5, 10, 20, etc. In your pictures, the second one looks wrong to me. Shouldn't it be using small steps close to the page you are on and larger steps, the further you get away from that page?
    – kasperd
    Aug 11, 2014 at 19:58
  • 51
    How does the user get to page 7? They're on page 6 and 7 is nowhere in sight.
    – JLRishe
    Aug 11, 2014 at 20:33
  • 8
    @JørnE.Angeltveit 90 is the last page perhaps?
    – Toni Leigh
    Aug 11, 2014 at 22:14
  • 3
    @JLRishe - they use the plus button, but that's pretty rubbish, maybe it work better if it followed the sequence up and down from the current position?
    – Toni Leigh
    Aug 11, 2014 at 22:15

12 Answers 12


What problem are you solving with this?

This seems like a developer's solution to a problem they think exists. Let's actually look at how users use pages.

They want to go to:

  • a specific page
  • the first page
  • the last page
  • a specific item held within one of the pages
  • going to the next or previous page (oops, forgot that, thanks 3nafish)

Jumping 10 pages ahead at random? Why? If your user has to do that, you're not solving the problem the correct way.

  • 3
    I agree with you in that I don't think that pagination by Fibonacci is solving any problem. Pagination should be intuitive to the point where no real thought or explanation is needed. See mistake 2 from this Smashing Magazine post. Consider all the types of users this site is expecting. For example, my wife is totally non-mathematical and would be confused (and possibly annoyed) by a Fibonacci sequence describing discretely ordered content.
    – Trav
    Aug 11, 2014 at 19:27
  • 9
    The only reason I can think of for using Fibonacci numbers for something like pagination is when your users are extreme nerds and care more about interesting numbers than whether the site works.
    – trysis
    Aug 12, 2014 at 1:49
  • 4
    Jumping 10 pages is a legit use case. I find myself doing this when I am looking for some obscure search terms in Google and can't find a relevant result on the first few pages.
    – Adnan Khan
    Aug 12, 2014 at 3:11
  • 11
    +10 pages -> Looking for a specific time period on a forum
    – Izkata
    Aug 12, 2014 at 15:20
  • 3
    @Izkata - It's still not the best possible solution. Why not have a date/date range search then? Aug 12, 2014 at 16:13

If you really want to provide a possibility to choose any page from even 3000, there is an old soulution from karaboz. The idea is to make a page choosing like a scroll bar. For example, how it looks for 50 pages: enter image description here

You can move the scroll pointer (gray) very fast to reach a group of pages you really need at this momet. The orange marker - page wich is chosen now. One click to change page.

For 100 pages: enter image description here

You can find samples and sources on the web by name of this - "Paginator 3000"


Except for few edge cases, I think pagination is a bad idea, especially when it comes to forums.

Edit: Looking back at this after 4 years! Now infinite scrolling (I called it dynamic loading) seems to be the go-to solution for modern apps. Case in point: Reddit.

Question: How would a user know that there is an interesting cat picture in post 3 of page 1534?

They don't. Users requiring to access a specific page is a non-existing requirement in common forum formats. What users want is to skip those noisy posts ("Great post", "WOW", "LOL", "Thanks"), and (hopefully) get to that cat picture somebody may have posted.

In the forum (or similar) formats, content after (say) page 10 is typically unusable to the general public of the Internet. I think we should design websites such that the system discourages users to lengthen a thread to gazillion pages.

Then how can we scale our forum without pagination?

Discourse has a fascinating way of displaying lengthy threads: It fetches content dynamically when users scroll to the bottom of the page.

Another thing you can do is trying to suppress noisy/unpopular stuff, so most of relevant, interesting stuff fits in the first page. Reddit does this.

What if user really wants to go to a specific page/post?

One interesting idea from comments was that,

user would know that there's an interesting cat picture in page 1534, because someone told them.

But see how this can break with pagination: By the time user goes to page 1534, the picture has moved to page 1531, because moderators deleted some spam posts in the thread.

Rather, we can use the concept of permalink. How would permalink work with dynamic loading? Well, you can show the user the post corresponding to permalink, associated with few posts before and after to give some context. Twitter sort of does this. User always can scroll up or down to load additional posts.

Twitter showing a tweet with context

Rough navigation up and down the thread

Another requirement from comments:

I want to know about something that happened six years ago, I want to jump in about 60% of the way through and start looking from there.

There's a very popular social media website that does this with dynamic loading. Check this out:

Facebook displays its timeline with dynamic loading. Users can jump to specific time periods using a scale in the side of the thread

But, dynamic page loading is inefficient. How can you solve that?

As comments has pointed out, dynamic page loading can be very processor-intensive, making browsers to crash sometimes. A remedy would be to delete the older content which user has already read from the page. In typical conversations, it is unlikely for users to go back in the thread.

  • 14
    > It fetches content dynamically when users scroll to the bottom of the page. I find this is a terrible system without some other way of jumping to posts from a specific point in time. I can do a kind of manual binary search by jumping pages, but it's completely impossible in many of the dynamically-loading systems I've seen. That's probably one of the edge cases you mention. It's also intensive (both memory and processor usage) when a lot of content is loaded - I've actually had browsers crash from this, by going over memory limits.
    – Bob
    Aug 12, 2014 at 5:18
  • 4
    Let's not harp on Discourse, shall we? It was just an example. The main point of the answer was that pagination is a broken concept. And I presented the idea of dynamic page loading. And Bob has shown some downsides of dynamic page loading, which is a good point. Aug 13, 2014 at 4:03
  • 5
    While I think infinite scroll sounds like a good fit for the requirements that @XCore mentions in the question, I think calling pagination "a broken concept" is unfair. Imagine a physical phone book being in one continuous scroll; in that case, looking up a name beginning with a specific letter would be extremely time consuming. Ideally, pagination on the web should help like it does in the real world to provide spatial awareness. Infinite scroll/lazy loading does make a lot of sense if the content is already intrinsically ordered in a way that suits the user's need (e.g. Twitter).
    – Kit Grose
    Aug 13, 2014 at 10:34
  • 5
    Users may wish to access intermediate pages if the data is sorted in some way: for example, by time or alphabetically by name. If, for example, the data is a list of events in the last ten years, and I want to know about something that happened six years ago, I want to jump in about 60% of the way through and start looking from there. Dynamic page loading is hideous in all circumstances where the user might actually want to get to the end. Aug 13, 2014 at 17:27
  • 5
    Infinite scroll is really annoying because it breaks the behaviour of the back button. So many times I go: read to bottom, wait for content to load, read to bottom, wait, read, click a link, when I'm done hit "back": oh, my browser is not able to return me to where I was because it's only loaded the top "page" of content. Pagination with different URLs works much better.
    – AlexC
    Aug 14, 2014 at 15:59

I think it stops after the cool factor. It's one of those "just because you can, doesn't mean you should" type of situations.

It's best to follow what's conventional. Jumping ten steps forward or backwards is most common (after moving one, of course). I would think the next large number to move through multiple pages would be a common number we jump to in other situations, such as 25, 50 or 100. Your best bet is to user test, of course.

Edit: I've seen some comments claiming that pagination is generally bad, so I feel compelled to point out that pagination is frequently a good experience. Here's a snippet from Nielsen Norman Group:

Where pagination comes in handy is for listings, such as e-commerce category pages, search engine results pages (SERP), article archives, and photo galleries. Here, a user’s goal is not to peruse the full list, but rather to find a specific item and click through to that destination page.

Assuming that you can prioritize the list items, users are likely to find what they want close to the top. To focus users’ attention and improve response time, you can start by showing a fairly short list, and then offer pagination options for progressing further down the list if needed.

Users' Pagination Preferences and 'View All'

Infinite scrolling can be particularly bad on e-commerce sites when a user is frequently diving into detail pages and backing out. Here's an article that points out several issues with the technique: http://www.nngroup.com/articles/infinite-scrolling/

I myself have frequently suffered through the pain of infinite scrolling while shopping on my phone; because when I back out of a product’s detail page, the page of listed products refreshes and does not retain the page location at which I was previously. I usually leave the site.

  • Many thanks for this. The article doesn't even mention the issue that most irritates me about infinite scroll (breaking the "back" button as I describe on Krumia's answer), but the "inaccurate scrollbar", "locating a previously found item" and "sense of completion" points are all valid and frustrating too.
    – AlexC
    Aug 14, 2014 at 16:03
  • Yes, AlexC, your back button frustration is my biggest complaint. I'm wondering if that wasn't mentioned in the article because it isn't always a problem. Krumia mentioned lazy implementation. If that's the case, there's A LOT of laziness when it comes to implementing infinite scrolling. And I also hate waiting for it to load; it's not really an infinite scroll if you're waiting.
    – Michelle
    Aug 17, 2014 at 18:45

This is an issue of scaling, which is a common problem in data visualisation :) Your Y axis has data (page numbers), and ideally you would want to display all of it at once - but that won't fit, so you scale it.

We scale by log(10) usually, because it is one of the easiest transformations for people to conceptualise - but you could go by any scaling sequence! One way to test a given sequence would be to calculate:

- The most clicks required to reach a page in list
- The mean clicks to reach any page in list
- The modal clicks to reach any page in list

Using the variables:

 - Total number of pages
 - Number of options/jumps available to choose from
 - Scaling approach

Different scaling approaches will have different outcomes given different list lengths and different number of jumps. The calculation of these scores is also a traveling sales man problem, so it might become a pain to calculate for large lists (where this data would be most useful). Still fun though.


It's an interesting idea, but the use of the Fibonacci sequence seems fairly arbitrary. With the assumption that the user wants to find a specific item that is positioned uniformly across the pages, and they know about the rank order of the item, the most efficient algorithm would be a binary search algorithm. So, it would be more suitable to use the following pagination:


For example, if you had 64 pages and wanted an item on page 42. Bracketed number shows the user's current page:

16 (32) 48 --> 40 (48) 56 --> 36 (40) 44 --> 42 (44) 46 --> 41 (42) 43.

So the user only has to view 5 pages to find their item. Every time the user clicks a page further along, you take that instruction literally and adjust the pagination range. Whether or not this is useful for mainstream applications is debatable, but it might be useful for specific tasks to find items. You could also extend this quite simply from showing 3 pages to n pages by selecting them uniformly.


Taking a page from the our usual video player, a 'fast-forward' and 'fast-rewind' button can be added for faster navigation through the pages. But Fibonacci? Doesn't make any sense to me.

enter image description here


That may be a good idea if you assume that a user want to move to pages, possibly jumping. But still, it does not have to be a Fibonacci sequence. You can have a logarithmic scale of any base.

But actually in the first place, I don't think any buttons of the kind other than "previous" and "next" (or equivalents) would make any sense. If users had a particular page in mind they want to jump to, then they should type that in a input box rather than reach that page through successive clicks of navigation buttons. Otherwise (if a user does not have a particular page in mind), the user should be interested in looking though all the pages one by one, and it does not make sense to jump certain pages, so "previous" and "next" would be enough.

  • In particular, with the Fibonacci Sequence, subsequent entries will be approximately 1.6 times the previous one. Aug 12, 2014 at 22:34

I also feel that the user needs to be able to reach the page that he wants to with the least possible number of steps.

fibonacci numbers are cool but the least possible number of steps is by getting the number of the page that the user wants and jump there.

If I know that something is in page 1512, I'd rather do that than play binary search with fibonacci numbers (in fact, I'd try to bypass the navigation by modifying the url)


You might consider using a drop-down menu (AKA a pop-up menu).

This gives a quick indication of the size of the result-set, as well as allowing the user to jump to the first, last, and any interim page, with reasonable ease.

edinburghbicycle.com pagination

This is from http://www.edinburghbicycle.com/browse/clothing/mens-clothing

In user testing, I found the most important thing was to have massive next/previous buttons.

Lazy-loading is a better solution - but that's easy to say...


An interesting idea for sure, but if you plan to have hundreds or thousands of pages, browsing through all of them will probably be an unpleasant experience regardless.

The cynic in me believes the creator's use case was showcasing the ability to solve a common programming challenge in writing an algorithm that prints the Fibonacci sequence.


If this is pagination for a search result, keep in mind that the most relevant results are in the first couple of pages (I never really paginated Google search results beyond 2-3). So, the best experience is to show the most relevant results at the top and keep the focus on pagination low.

If you are displaying an archive, then categorization is preferred to simple pagination. Example: Alphabetical, by author, last-modified, tags etc., Hope that helps

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.