International Standard Book Number ▪ Sale
A 13-digit ISBN, 978-3-16-148410-0, as represented by an EAN-13 bar code.

The International Standard Book Number (ISBN) is a unique numeric commercial book identifier based upon the 9-digit Standard Book Numbering (SBN) code created by Gordon Foster, Emeritus Professor of Statistics at Trinity College, Dublin, for the booksellers and stationers W. H. Smith and others in 1965.

The 10-digit ISBN format was developed by the International Organization for Standardization (ISO) and was published in 1970 as international standard ISO 2108. (However, the 9-digit SBN code was used in the United Kingdom until 1974.) An SBN may be converted to an ISBN by prepending the digit "0". ISO has appointed the International ISBN Agency as the registration authority for ISBN worldwide and the ISBN Standard is developed under the control of ISO Technical Committee 46/Subcommittee 9 TC 46/SC 9. The ISO on-line facility only refers back to 1978.

Since 1 January 2007, ISBNs have contained 13 digits, a format that is compatible with "Bookland" EAN-13s.

Occasionally, a book may appear without a printed ISBN if it is printed privately or the author does not follow the usual ISBN procedure; however, this can be rectified later.

Another identifier, the International Standard Serial Number (ISSN), identifies periodical publications such as magazines.

Overview

An ISBN is assigned to each edition and variation (except reprintings) of a book, for example an ebook, a paperback, and a hardcover would each have a different ISBN. The ISBN is 13 digits long if assigned after 1 January 2007, and 10 digits long if assigned before 2007. An International Standard Book Number consists of 4 parts (if it is a 10 digit ISBN) or 5 parts (for a 13 digit ISBN):

The parts of a 10-digit ISBN and the corresponding EAN‑13 and barcode. Note the different check digits in each. The part of the EAN‑13 labeled "EAN" is the Bookland country code.

for a 13-digit ISBN, a prefix element - a GS1 prefix: so far 978 or 979 have been made available by GS1

1. the registration group element, (language-sharing country group, individual country or territory)
2. the registrant element,
3. the publication element, and
4. a checksum character or check digit.

The 13 digit ISBN separates its parts (prefix element, registration group, registrant, publication and check digit) with either a hyphen or a space. Other than the prefix element and the check digit, no part of the ISBN has a fixed number of digits.

The 10 digit ISBN also separated its parts (registration group, registrant, publication and check digit) with either a hyphen or a space.

ISBN issuance

International Standard Book Numbers issuance is country-specific, in that ISBNs are issued by the ISBN registration agency that is responsible for that country or territory. The ranges of ISBNs assigned to any particular country are based on the publishing profile of the country concerned - e.g. the number of books and the number, type and size of publishers that are active. Some ISBN registration agencies are based in National Libraries or within Ministries of Culture and thus may receive direct funding from government to support their services. In other cases the ISBN registration service is provided by organisations such as bibliographic data providers who are not government funded. In Canada the stated purpose of issuing International Standard Book Numbers for no cost was to encourage Canadian culture. In the United Kingdom, United States, and some other countries, where the service is provided by non-government funded organisations the issuing of International Standard Book Numbers is a chargeable service.

Australia: In Australia ISBNs are issued by the commercial library services agency Thorpe-Bowker, and prices range from $42 for a single ISBN (plus a$55 registration fee for new publishers) through to $2,890 for a block of 1,000 ISBNs. Canada: In Canada Library and Archives Canada, a government agency, is the responsible entity, and there is no cost. Works in French are issued an ISBN by the Bibliothèque et Archives nationales du Québec. Pakistan: National Library of Pakistan is responsible for ISBN registrations for Pakistani Publishers, Authors, Universities, Institutions and Government Departments who are responsible for publishing books. India: In India, Raja Rammohan National Agency for ISBN is responsible for registration of Indian Publishers, Authors, Universities, Institutions and Government Departments who are responsible for publishing books. United Kingdom and Ireland: In the United Kingdom and Ireland the privately held company, Nielsen Book Services, part of Nielsen Holdings N.V., is the responsible entity, and there is a charge. ISBNs are sold in lots of ten or more. United States: In the United States the privately held company RR Bowker is the responsible entity, and there is a charge, which varies depending upon the number of ISBNs purchased, with prices ranging from$125.00 for a single number.

Publishers and authors in other countries need to obtain ISBNs from their respective national ISBN registration Agency. A directory of ISBN Agencies is available on the International ISBN Agency website.

Registration Group identifier

The registration group identifier is a 1 to 5 digit number. The single digit group identifiers are: 0 or 1 for English-speaking countries; 2 for French-speaking countries; 3 for German-speaking countries; 4 for Japan; 5 for Russian-speaking countries, 7 for People's Republic of China. An example 5 digit group identifier is 99936, for Bhutan. The allocated group IDs are: 0–5, 600–621, 7, 80–94, 950–989, 9927–9989, and 99901–99972. Books published in rare languages typically have longer group identifiers.

The original standard book number (SBN) had no registration group identifier, but affixing a zero (0) as prefix to a 9-digit SBN creates a valid 10-digit ISBN.

Registrant element

The national ISBN agency assigns the registrant element (cf. Category:ISBN agencies) and an accompanying series of ISBNs within that registrant element to the publisher; the publisher then allocates one of the ISBNs to each of his books. Generally, in most countries a book publisher is not required by law to assign an ISBN, however, most book stores only handle ISBN-bearing merchandise.

A listing of more than 900,000 assigned publisher codes is published, and can be ordered in book form (1399, US1959). The web site of the ISBN agency does not offer any free method of looking up publisher codes. Partial lists have been compiled (from library catalogs) for the English-language groups: identifier 0 and identifier 1. Publishers receive blocks of ISBNs, with larger blocks allotted to publishers expecting to need them; a small publisher may receive ISBNs of one or more digits for the registration group identifier, several digits for the registrant, and a single digit for the publication element. Once that block of ISBNs is used, the publisher may receive another block of ISBNs, with a different registrant element. Consequently, a publisher may have different allotted registrant elements. There also may be more than one registration group identifier used in a country. This might occur once all the registrant elements from a particular registration group have been allocated to publishers. By using variable block lengths, registration agencies are able to customise the allocations of ISBNs that they make to publishers. For example, a large publisher may be given a block of ISBNs where the digits allocated for the registrant element are few and there are many digits allocated for the publication element; likewise countries publishing a large output of titles have few allocated digits for the registration group identifier, and many for the registrant and publication elements. Here are some sample ISBN-10 codes, illustrating block length variations. ISBN Country or area Publisher 99921-58-10-7 Qatar NCCAH, Doha 9971-5-0210-0 Singapore World Scientific 960-425-059-0 Greece Sigma Publications 80-902734-1-6 Czech Republic; Slovakia Taita Publishers 85-359-0277-5 Brazil Companhia das Letras 1-84356-028-3 English-speaking area Simon Wallenberg Press 0-684-84328-5 English-speaking area Scribner 0-8044-2957-X English-speaking area Frederick Ungar 0-85131-041-9 English-speaking area J. A. Allen & Co. 0-943396-04-2 English-speaking area Willmann–Bell 0-9752298-0-X English-speaking area KT Publishing Pattern English-language publisher codes follow a systematic pattern, which allows their length to be easily determined, as follows: Item number length 0- group identifier 1- group identifier Total From To Publishers From To Publishers 6 digits 0-00-xxxxxx-x 0-19-xxxxxx-x 20 1-00-xxxxxx-x 1-09-xxxxxx-x 10 30 5 digits 0-200-xxxxx-x 0-699-xxxxx-x 500 1-100-xxxxx-x 1-399-xxxxx-x 300 800 4 digits 0-7000-xxxx-x 0-8499-xxxx-x 1,500 1-4000-xxxx-x 1-5499-xxxx-x 1,500 3,000 3 digits 0-85000-xxx-x 0-89999-xxx-x 5,000 1-55000-xxx-x 1-86979-xxx-x 31,980 36,980 2 digits 0-900000-xx-x 0-949999-xx-x 50,000 1-869800-xx-x 1-998999-xx-x 129,200 179,200 1 digit 0-9500000-x-x 0-9999999-x-x 500,000 1-9990000-x-x 1-9999999-x-x 10,000 510,000 Total 557,020 Total 172,990 730,010 Check digits A check digit is a form of redundancy check used for error detection, the decimal equivalent of a binary check bit. It consists of a single digit computed from the other digits in the message. ISBN-10 check digit calculation The 2001 edition of the official manual of the International ISBN Agency says that the ISBN-10 check digit – which is the last digit of the ten-digit ISBN – must range from 0 to 10 (the symbol X is used instead of 10) and must be such that the sum of all the ten digits, each multiplied by the integer weight, descending from 10 to 1, is a multiple of the number 11. Modular arithmetic is convenient for calculating the check digit using modulus 11. Each of the first nine digits of the ten-digit ISBN – excluding the check digit, itself – is multiplied by a number in a sequence from 10 to 2, and the remainder of the sum, with respect to 11, is computed. The resulting remainder, plus the check digit, must equal 11; therefore, the check digit is 11 minus the remainder of the sum of the products. For example, the check digit for an ISBN-10 of 0-306-40615-? is calculated as follows: \begin{align} s &= (0\times 10) + (3\times 9) + (0\times 8) + (6\times 7) + (4\times 6) + (0\times 5) + (6\times 4) + (1\times 3) + (5\times 2) \\ &= 0 + 27 + 0 + 42 + 24 + 0 + 24 + 3 + 10 \\ &= 130 = 12\times 11 - 2 \end{align} Thus the check digit is 2, and the complete sequence is ISBN 0-306-40615-2. Formally, the check digit calculation is: $(10x_1 + 9x_2 + 8x_3 + 7x_4 + 6x_5 + 5x_6 + 4x_7 + 3x_8 + 2x_9 + x_{10})\mod{11} \equiv 0.$ The value $x_{10}$ required to satisfy this condition might be 10; if so, an 'X' should be used. The two most common errors in handling an ISBN (e.g., typing or writing it) are an altered digit or the transposition of adjacent digits. The ISBN check digit method ensures that these two errors will always be detected. However, if the error occurs in the publishing house and goes undetected, the book will be issued with an invalid ISBN. Alternative calculation //PHP function is_isbn_10_valid(ISBN10){
if(strlen($ISBN10) != 10) return false;$a = 0;
for($i = 0;$i < 10; $i++){ if ($ISBN10[$i] == "X"){$a += 10*intval(10-$i); } else {//running the loop$a += intval($ISBN10[$i]) * intval(10-$i); } } return ($a % 11 == 0);
}

#Python
def is_isbn10(isbn10):
if len(isbn10) != 10:
return False
r = sum((10 - i) * (int(x) if x != 'X' else 10) for i, x in enumerate(isbn10))
return r % 11 == 0

#Ruby
def is_valid?(isbn)
(isbn.length == 10) && (isbn.split('').inject([10,0]){|a, c| i,s = a; [s+i*c.to_i,i-1]}.first%11==0)
end


ISBN-13 check digit calculation

The 2005 edition of the International ISBN Agency's official manual describes how the 13-digit ISBN check digit is calculated.

The calculation of an ISBN-13 check digit begins with the first 12 digits of the thirteen-digit ISBN (thus excluding the check digit itself). Each digit, from left to right, is alternately multiplied by 1 or 3, then those products are summed modulo 10 to give a value ranging from 0 to 9. Subtracted from 10, that leaves a result from 1 to 10. A zero (0) replaces a ten (10), so, in all cases, a single check digit results.

For example, the ISBN-13 check digit of 978-0-306-40615-? is calculated as follows:

s = 9×1 + 7×3 + 8×1 + 0×3 + 3×1 + 0×3 + 6×1 + 4×3 + 0×1 + 6×3 + 1×1 + 5×3
=   9 +  21 +   8 +   0 +   3 +   0 +   6 +  12 +   0 +  18 +   1 +  15
= 93
93 / 10 = 9 remainder 3
10 –  3 = 7


Thus, the check digit is 7, and the complete sequence is ISBN 978-0-306-40615-7.

Formally, the ISBN-13 check digit calculation is:

$x_{13} = \big(10 - \big(x_1 + 3x_2 + x_3 + 3x_4 + \cdots + x_{11} + 3x_{12}\big) \,\bmod\, 10\big) \,\bmod\, 10.$

This check system – similar to the UPC check digit formula – does not catch all errors of adjacent digit transposition. Specifically, if the difference between two adjacent digits is 5, the check digit will not catch their transposition. For instance, the above example allows this situation with the 6 followed by a 1. The correct order contributes 3×6+1×1 = 19 to the sum; while, if the digits are transposed (1 followed by a 6), the contribution of those two digits will be 3×1+1×6 = 9. However, 19 and 9 are congruent modulo 10, and so produce the same, final result: both ISBNs will have a check digit of 7. The ISBN-10 formula uses the prime modulus 11 which avoids this blind spot, but requires more than the digits 0-9 to express the check digit.

Additionally, if the sum of the 2nd, 4th, 6th, 8th, 10th, and 12th digits is tripled then added to the remaining digits (1st, 3rd, 5th, 7th, 9th, 11th, and 13th), the total will always be divisible by 10 (i.e., end in 0).

// Java
public static boolean isISBN13Valid(String isbn) {
int check = 0;
for (int i = 0; i < 12; i += 2) {
check += Integer.valueOf(isbn.substring(i, i + 1));
}
for (int i = 1; i < 12; i += 2) {
check += Integer.valueOf(isbn.substring(i, i + 1)) * 3;
}
check += Integer.valueOf(isbn.substring(12));
return check % 10 == 0;
}

//JavaScript
function isValidISBN13(ISBNumber) {
var check, i;

ISBNumber = ISBNumber.replace(/-\s/g,'');

check = 0;
for (i = 0; i < 13; i += 2) {
check += +ISBNumber[i];
}
for (i = 1; i < 12; i += 2){
check += 3 * +ISBNumber[i];
}
return check % 10 === 0;
}

//PHP
function is_isbn_13_valid($n){$check = 0;
for ($i = 0;$i < 13; $i+=2)$check += substr($n,$i, 1);
for ($i = 1;$i < 12; $i+=2)$check += 3 * substr($n,$i, 1);
return $check % 10 == 0; }  # Ruby def isbn_checksum(isbn_string) digits = isbn_string.split(//).map(&:to_i) transformed_digits = digits.each_with_index.map do |digit, digit_index| digit_index.modulo(2).zero? ? digit : digit*3 end sum = transformed_digits.reduce(:+) end def is_valid_isbn13?(isbn13) checksum = isbn_checksum(isbn13) checksum.modulo(10).zero? end def isbn13_checksum_digit(isbn12) checksum = isbn_checksum(isbn12) 10 - checksum.modulo(10) end  # Python def is_valid_isbn13(isbn): check = (10 - (sum(int(digit) * (3 if idx % 2 else 1) for idx, digit in enumerate(isbn[:12])) % 10)) % 10 return check == int(isbn[-1])  // C/C++ bool is_valid_isbn13(char digits[13]) { int i, check=0; for (i=0; i<13; i+=2) check += digits[i]; for (i=1; i<12; i+=2) check += 3*digits[i]; return check%10==0; }  -- PL/SQL - for validation in Oracle database FUNCTION validate_isbn_13(isbn VARCHAR2) RETURN INTEGER IS checksum INTEGER; weight INTEGER; modular INTEGER; valid INTEGER; reminder INTEGER; BEGIN valid := -1; checksum := 0; FOR i IN 1 .. 12 LOOP IF MOD( i, 2) = 0 THEN weight := 3; ELSE weight := 1; END IF; checksum := checksum + weight * TO_NUMBER( SUBSTR( isbn, i, 1 ) ); END LOOP; modular := MOD( checksum, 10 ); IF modular = 0 THEN reminder := 0; ELSE reminder := 10 - modular; END IF; IF TO_CHAR( reminder ) = SUBSTR(isbn, 13, 1 ) THEN valid := 0; END IF; RETURN valid; END validate_isbn_13;  # Bourne-Again Shell function is_valid_isbn13 () { declare ISBN="${1//[^[:digit:]]}"
declare -i CheckDigit=0

for i in $(seq 0 12); do CheckDigit+=$((${ISBN:$i:1}*(1 + 2*(i % 2))))
done