ISBN Checksum Tool

Validation Result

Yes, “0671657151” is a valid ISBN number

Input form

Enter ISBN number:

Examples

Notes

Use this utility to check if an ISBN number is syntactically correct (as determined by the checksum). Currently only ISBN 11 numbers are supported.

This utility does not check if the ISBN number is registered to an actual publication, rather it merely checks to see if the format of the number is valid.

Authoritative details on ISBN numbers can be found in the ISBN Users' Manual.

Note: Where applicable the links to Amazon, Froogle, et al are provided for convenience only — I don't earn anything from them — rather you can use them to see if the publication actually exists, is in stock, what it's marketable value is, etc.

XML Ping Service

You can now perform ISBN checksum validation using a simple HTTP request from within your own applications. The protocol closely follows the popular TrackBack and XML Ping methods.

Submitting a Request

Here's an example:

POST http://andrewu.co.uk/tools/isbn/pingservice/
Content-Type: application/x-www-form-urlencoded; charset=utf-8

ISBN=0123-456-789&Type=1

The “ISBN” key is mandatory. The format of the value it can accept is quite flexible. For example it will correctly extract the ISBN digits from inputs as diverse as “ISBN=0123-4567-89”, “ISBN=123 456 7890”, “ISBN=ISBN 0 571 08989 5” and “ISBN=isbn 90-70002-04-3”.

The “Type” key is also mandatory and the value is always “1”. It is present for future-proofing in case additional validation features are added at a later stage.

Receiving the Reply

The reply comes in the form of an XML string, of which there are two different versions.

If the request is badly formatted or fails for some other technical reason then a HTTP status code other than 200 is returned along with XML like this:

<?xml version="1.0" encoding="utf-8"?>
<response>
    <error>1</error>
    <message>The error message</message>
</response>

If the request is correctly formatted then XML is returned with a HTTP 200 like so:

<?xml version="1.0" encoding="utf-8"?>
<response>
    <error>0</error>
    <valid>1</valid>
    <parsedisbn>123456789X</parsedisbn>
</response>

If the “valid” node contains a “1” value then the ISBN number is syntactically valid, otherwise a “0” value indicates it is not. The “parsedisbn” node contains the ISBN number that was extracted from the input request — any extraneous characters have been stripped away to leave the 10 raw ISBN digits.

The “error” node is present again to provide some consistency in post-processing. For correctly formatted HTTP requests it always has a value of “0”, for badly formatted HTTP requests (like the first example XML above) it always has a value of “1”. In certain cases the server may return data that is not XML — say if the server is encountering problems beyond my control. Consequently any processing of the received data that you do should check the HTTP return code and attempt to parse the response for XML well-formedness first, only then should you attempt to extract the “error” node value.

Usage Rules

If you're going to send more than a couple of hundred XML Ping requests per day then this service is probably not for you. To use the service you must send an identifiable HTTP User-Agent header with your HTTP request — anonymous user-agents may be blocked by the server software.

Feedback

Voting Panel
Did you find this via a search engine?
or
Did you find any bugs?
or
Could this be improved?
or
Rate this utility: (0 = poor, 5 = very good)
Answers are anonymous, only the combined totals are stored. Uses cookies.