Sign Up Sign In

Is page range inclusive or exclusive?


When writing a bibliography entry, if I want to cite pages 1 up to 10, including both 1 and 10 (i.e., 1, 2, 3, 4, 5, 6, 7, 8, 9, and 10) should I write 1-10 or 1-11?

Why should this post be closed?

This post was sourced from It is licensed under CC BY-SA 4.0.


3 answers


As already stated, page ranges would typically be inclusive.

There's actually an even more illustrative example to show why this is what readers would probably expect.

Suppose the text you're citing starts at the bottom of page 1, takes up the entirety of page 2, and finishes with a single line at the top of page 3.

If the page range was exclusive, you would probably need to cite that as "pages 0-4". Giving that range as "pages 1-4" would be inconsistent, because the beginning of the range would be inclusive but the ending of the range would be exclusive. Since there most likely is no page 0, this would be highly confusing to the reader.

However, if the page range as given is inclusive, you would cite it as "pages 1-3", in order to specify "pages 1, 2 and 3".

If you want to be extraoverespecially specific, you can tack an "inclusive" at the end. For example, "pages 1-3 inclusive" avoids the ambiguity altogether by explicitly calling out the inclusivity of the specified range. This is probably appropriate mostly for technical works where extreme precision matters.



Page ranges are normally inclusive. "Pages 1-5" means pages 1, 2, 3, 4, and 5.

I think most readers would be extremely confused if you wrote "pages 1-5" and mean 1, 2, 3, and 4.

Note that you should include a page in the range even if the relevant text takes up only a small part of the page. Like if the text of interest starts halfway down page 10, takes all of pages 11 and 12, and then concludes with one line on page 13 before the book goes on to another subject, you should say "pages 10-13".

This post was sourced from It is licensed under CC BY-SA 4.0.



I may be wrong, but when I saw this I immediately thought of Python's range, where the number used is the stop number - i.e., stop before you get to that number. That also fits well with the way loops are typically structured in many other computer languages. So from a programming standpoint, this makes perfect sense.

However, unless (and arguably, even if) your readers are computer programmers, the expectation will be that pages x - y means all pages with numbers >= x and <= y. In addition to examples provided by others, the obvious example to me of why it must be that way is the last page of the book. If a book has 100 pages numbered 1 - 100, and you are referencing information on the last 2 pages, the reference will be 99-100. Referencing 99-101 would clearly not make sense since 101 does not exist. Using Python notation, the reference would be range(99,101) but it is a lot simpler to say 99-100.

In fact, a program to extract or otherwise process the pages might be something like extract_pages(x, y) and internally reference range(x, y+1), so that the user of the function would pass the actual first & last page numbers.

There are good reasons why range and similar programming constructs use a stop (termination condition) value rather than a last value, but those are computer science discussions and not really relevant here.


If we're going down that route, might as well point out that C-derived languages typically (if not always) use a loop termination condition, which may or may not have anything to do with a loop counter variable. For example, for(int i=0; getch() != EOF; i++) {} will terminate not when i reaches any particular value, but when a end-of-file is encountered on the input, while i will indicate the number of characters read. for(;;) {} is an endless loop as it lacks a termination condition. aCVn 2 months ago

Even in a more traditional for(int i=0; i<N; i++) {} for some value N, unless interrupted (e.g. by break;), the loop will run for N iterations with i counting from 0 through N-1 inclusive; but nothing about the language actually dictates this construct, and it is equally valid (though non-idiomatic) to write for(int i=1; i<=N; i++) {} for the same number of loop iterations, but with i counting from 1 through N inclusive. aCVn 2 months ago

All true about C-style for loops. I was trying to limit the answer a bit, including (I think) just enough to get the point across. "computer science discussions..." manassehkatz 2 months ago

Sign up to answer this question »