Suppose I have a list of 100+ pieces of data that I'm displaying in a table that's paginating 40 elements per page.

Each row has a 'select' checkbox enabling the user to select/unselect an item. On top of the list, there's also a 'select/unselect all' checkbox. For now, I have the functionality designed so that when the user clicks that checkbox, the toggle selection is performed only on the elements currently displayed on the page. What are the best practices on 'select all'?

Should the action operate on:

a) only the visible elements being paginated, or

b) the entire list?

5 Answers 5


Gmail does something that works pretty well, and has been around for a while.

Firstly, when you search for a particular string (in this case 'ebay' which gave me loads of results to work with) and then choose to select everything on the page (from the checkbox in the top-left) then it produces a message saying:

All 20 conversations on this page are selected. 'Select all conversations that match this search'

In the top-right is a '1-20 of many' text, but when there are a more reasonable number (say, 100 overall) then it'll tell you the actual number, and not just 'many'.

enter image description here

Then, if you choose that 'select all' message it updates your selection to show:

All conversations in this search are selected. Clear selection.

enter image description here

So give the user the ability to select only the ones on screen and also show how many extra ones are available. Give the user the ability to then toggle between the presently viewing list and the complete list before they decide they want to confirm the action.


for tabular data you can also provide an arrow with the check box, where you can provide options to select visible items, all items and deselect items. default action should be select page.

enter image description here


Pagination is flawed when it comes to interaction

Pagination is great in reducing visual load, but involves many functionality issues if records are to be interacted with.

Expected behaviour

You shouldn't select records that the user doesn't see. Doing so is an open door to malfunction (and sometimes data loss).

Use non ambiguous terms

select all is not a good name for the button you are proposing. Something along the lines of select page is much better if only records from the page are selected. You can obviously offer both buttons.

The phpMyAdmin solution

If you have been using phpMyAdmin in development phases of project, this issue pops many times - there are more than 30 records in a table, but only 30 are in the current view. Yet there is a user need to select all records in order to delete or modify them. The way this is achieved within phpMyAdmin is that the user has control over the amount of records per page. So you simply set it to the amount of records, select all, and do what you want.

The Developer's View

If you are designing a web app, you should really consult with your development team to see whether a feature such as select all records is even possible to implement. In most cases, the pagination is done remotely, with only page records being loaded. So programmers may have extreme difficulties implementing a select all feature.


I would stick with how you have it now. You don't want "select all" to allow users to perform an action on items not currently viewable. There are all kinds of unexpected outcomes that can result of that.

  • It really depends on the user need. In some case people want to apply some action for all. Asking people select on each page when there are hundred pages would create a big inefficiency. Or at least there would need to be an option to show all and then select. Commented Sep 26, 2017 at 19:30

I saw a simple solution on mailchimp, see attached image.enter image description here

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.