PHP class to validate and convert ISBNs and EANs
Clone or download


Build Status

This package can be used to :

  • validate an ISBN code
  • convert codes between ISBN-10, ISBN-13 and EAN (without hyphens) formats
  • calculate the checksum digit
  • show the registration agency (country or language)


Install with composer:

$ composer require biblys/isbn:~2.0



use Biblys\Isbn\Isbn as Isbn;

// Create an ISBN object from an EAN code
$isbn = new Isbn('9791091146098');

// Check if input is a valid ISBN code
if ($isbn->isValid()) {

  // Print the code in ISBN-13 format
  echo $isbn->format('ISBN-13');

  // Print the code in ISBN-10 format
  echo $isbn->format('ISBN-10');

  // Print the checksum digit
  echo $isbn->getChecksum();

  // Print the registration agency
  echo $isbn->getAgency();

} else {

  // Show validation errors
  echo $isbn->getErrors();


Run tests with PHPUnit:

$ composer install
$ composer test

ISBN ranges update

New ISBN ranges may be added from time to time by the International ISBN Agency. Whenever it happens, this library must be updated. If a range update is necessary, please open an issue on Github. You can also open a pull request after updating the ranges your self with the following commands:

$ composer install
$ composer run update-ranges


2.0.6 (2017-11-22)

  • Fixed #6: Error when validating ISBN-10 with X as a checksum digit

2.0.5 (2017-11-07)

  • Update ISBN ranges

2.0.4 (2017-06-29)

  • Fixed error when no rule is found (eg. for ISBN 9790706801940)

2.0.3 (2016-07-06)

  • Added 978-99978 range for Mongolia

2.0.2 (2016-04-12)

  • Fixed #3: Bug in the 978-613 range
  • Added a composer script to update ISBN ranges from

2.0.1 (2016-03-01)

  • Fixed #2: added LICENSE file and copyright information
  • Added Travis configuration file

2.0.0 (2016-03-01)

  • Revamped library as a Composer package

1.1.0 (2015-08-21)

  • Fixed #1: ISBN-10 checksum character calculation
  • Added phpunit tests
  • Updated ISBN XML ranges file

1.0.1 (2014-04-21)

  • EAN-13 checksum character calculation bug fix

1.0.0 (2014-04-19)

  • First release