Importing books
Bring in a spreadsheet, another app’s export — Goodreads, StoryGraph, LibraryThing, Readerware or your own — or a MARC file, and see what comes across.
Import a whole shelf (CSV)
Import brings in a spreadsheet of books at once — handy when moving from another cataloguing app or your own spreadsheet. Goodreads, StoryGraph, LibraryThing, and Readerware exports are recognized automatically and their columns are mapped for you. Any other file — including a CLZ Books export, whose columns you choose yourself when exporting — works too: you’ll map your columns in one step (only title is required; authors, ISBN, publisher, year, page count, price, Dewey number, LC classification, call number and language are optional — a "Dewey" or "Call_Number" column is recognised by name, and so is a Language column headed in English, Greek or Russian). A language is stored as its two-letter code whether the cell says "Greek", "Ελληνικά", "el" or "gre"; a value that names no language we know is left empty rather than stored as written. If your library has defined custom fields, any column named after one of them is carried into that field on every copy the import creates — which is how our own CSV export re-imports its custom columns.
- Export your list from the other app (Goodreads: My Books → Import and export → Export Library; StoryGraph: Manage Account → Export Library; LibraryThing: More → Import/Export; Readerware: File → Export, TAB delimited or CSV with quotes on, header line on). LibraryThing’s and Readerware’s exports are tab-separated — upload them as-is.
- Upload it on the Import page — My Library → Library tools → Books → Import books.
- For Goodreads and StoryGraph files, choose which shelves or reading statuses to bring in (“to-read” is left out by default, since those aren’t books you own yet). A Readerware file instead previews how many rows will become want-list entries, loans, or carry a status other than Own.
- Check the first few books the confirm step shows — title, authors and ISBN, exactly as they will be stored. That is where a column matched to the wrong field, or a letter read from the wrong text encoding, is visible while it still costs nothing. If the file was not written in UTF-8, the page says which encoding it guessed, shows three titles and authors as it read them, and lets you choose another encoding — the sample changes straight away.
- Choose how to handle books you already own — skip them (recommended) or add the import as an extra copy. A Readerware row’s Copies count is skipped or added as a whole.
- Review the report once the import finishes: matched, newly created, skipped, and failed rows, plus — where the file carried them — additional copies, want-list entries, loans, tags, shelves created, rows per Readerware status, rows whose values could not be read, rows whose ISBN a spreadsheet had changed, codes we did not look up, any lines that did not line up with the header, and the columns that were not transferred.
If the import button is unavailable, the reason is written beside it. Usually it is that no column matched a title — pick one from the column list, which is offered even for a file we recognised — or that nothing is currently selected to import. The one that needs a new file is a CSV exported without quotes around its fields: a comma inside a cell, as in an author written "Strindberg, August", shifts every later value one column across, so we count those lines and stop rather than filing your books under the wrong fields. Export again with quotes switched on, or as TAB-separated. A handful of such lines does not stop the import — they are left out and listed in the report with their line numbers.
Opening an export in Excel or another spreadsheet and saving it again can quietly change its ISBNs: a long number is rewritten as 9.78E+12, which has lost its digits, and a leading zero is dropped. Those books still import, without an ISBN, and the confirm step and the report say how many rows were affected. Nothing is guessed back — export again from the original app and import that file without opening it first, or add the ISBN on the book page afterwards.
An ISBN column sometimes holds a code that is not an ISBN, such as a shop’s own price label or a product barcode. A product barcode is kept as the book’s UPC, and any other code is kept exactly as written under "Other code (not an ISBN)" in the book’s details. Neither is looked up or matched as an ISBN, so it cannot pull in the wrong book. An ISBN whose check digit does not add up is kept as the ISBN for you to check, but it is not looked up either: the answer would be nothing, or another book. The report lists every such row under "Codes we did not look up", with its line, the code as written and the reason, and you can correct the code on the book’s page (see Adding a missing ISBN, UPC or LCCN).
How a recognised export writes its column names makes no difference: TITLE, Title and title are one column, and so are Call_Number and "Call Number". A file that is not written in UTF-8 is read in the older encoding its letters fit — Windows-1252 or Mac Roman for Latin text, Windows-1253 or ISO-8859-7 for Greek, Windows-1251 or KOI8-R for Cyrillic — and the confirm step says which, so a Swedish title or a Greek author keeps its letters instead of arriving as nonsense. If the letters still read as nonsense under the guess, the import is held, with the reason beside the button, until you choose the encoding the file was saved in.
Moving from Readerware
A Readerware export with its header line is recognized by its column names and mapped without any manual step. Beyond title, authors (Author–Author6), ISBN, LCCN, publisher, year, pages, format, languages, edition, series, categories (as topics), description, and list price — and Editor, Translator and Illustrator as the book’s contributors (never as its authors), every language in Content_Language ("English, Ancient Greek" keeps both), a DVD or other non-book Format as what the item is, Disk_Count above one as its number of discs, and Reading_Level and Lexile_Level — the copy-level columns come across too: Copies becomes that many copies; Location becomes a shelf of that name (created in your library if it does not exist); Item_Condition and Cover_Condition, Signed, Purchase_Price/Date/Place, Item_Value and Valuation_Date, and My_Comments land on each copy; Dewey lands on the book as its class number — 221.93 from "221.93 ADA" — and Call_Number on the copy; a row with no Call_Number gets the whole Dewey cell ("221.93 ADA", "REF 220.3 ALE") as its call number, because that is the spine label. Keywords become your tags. Date_Entered becomes the copy’s added date; Pub_Place, Dimensions, Weight, Media_URL and Alt_Title fill the book’s place of publication, size, weight, link and original title; ISSN and AM_ASIN are kept with its identifiers; and Rowkey is remembered on the copy, so importing the same file again adds nothing twice. A row with a Read_Count or a Date_Last_Read adds one finished read to your own reading log — the confirm step says how many. Status routes each row: Own is an owned copy, Want and Ordered go to the want list (never as owned copies), and For Sale, Sold, Withdrawn, and Missing are kept as owned copies with a readerware:… tag and a first notes line saying so. Loan_To with its email, phone, loan date, and due date becomes an active loan on the first copy.
When a row’s ISBN is missing or was damaged by a spreadsheet, its AM_ASIN (an ASIN is the book’s ISBN-10) or Barcode is tried instead, and becomes the ISBN only when a catalogue lookup finds a book with the same title, or when the Library of Congress record for the row’s LCCN names that same ISBN; otherwise it is shown on the book page as a possible ISBN for you to check. A row with an ISSN and no ISBN is a magazine issue: it is added under its magazine (found by that ISSN, or created from the row’s title), with Series_Number as its issue number and the release date as its cover date. Not transferred: My_Rating and Favorite (ratings AllMyBooks does not keep), and columns with no landing place such as Type, Inventory, or the marketplace price columns New_Value, Used_Value and Collectible_Value. A language name the import does not recognise is left out and counted in the report rather than guessed. User1–User10 and User_Number are carried into custom fields when you define fields with exactly those names before importing. The report names every column that did not come across.
How Readerware spells its column names does not matter — a file headed TITLE, AUTHOR, CALL_NUMBER is read exactly like one headed Title, Author, Call_Number, and a space instead of an underscore ("Call Number") is the same column again. A full export is 98 columns wide and every one of them is either mapped, read, or named in the report.
Covers are the one thing the export cannot bring. Readerware's manual lists IMAGE1_FILE and similar columns, but real exports do not contain them, and they would only be file paths on your old computer in any case. Covers fill in from the catalogue after the import; the backup ZIP Readerware writes is the only copy of your own images, so keep it.
Importing a MARC file
A UTF-8 MARC 21 bibliographic file — the .mrc or .marc export LibraryThing offers beside its tab-delimited one, or a small library system’s export — is read as MARC whatever it is named: the file’s own bytes decide, so a MARC file called catalogue.txt still takes the MARC path and a CSV is read exactly as before. Each record becomes one copy in the library you are in, matched to the catalogue by its ISBN and other numbers like any other import, and the record’s own number is remembered on the copy, so importing the same file again adds nothing twice — even if you chose to add duplicates as extra copies. A book already in the catalogue keeps its details; where the record says something different (another page count, publisher, edition, year, Dewey number or LC classification) the report names the record and the field, and nothing is overwritten.
What is read: ISBN (020), LCCN (010), ISSN (022), the author (100/110/111) and co-authors, translators, editors and illustrators (700/710/711 with their roles), the title (245), edition (250), place, publisher and a clean four-digit year (260 or 264), page count from an unambiguous extent (300), languages (008/041), LC and Dewey classes (050/082), a simple series statement (490) and the summary (520). A LibraryThing export is recognised by its organisation code and read with its own profile: its local 090 and 092 fields become LC and Dewey candidates that fill a new book’s classification (never a copy’s call number), and its 923 collection labels decide what is imported — “Your library” records become owned copies; a record only on the Wishlist is left out unless you tick “add Wishlist records to the want list”, and even then it is a want-list entry, never an owned copy; records only in reading collections, or only in collections of your own, are shown as groups for you to decide, left out by default. A collection name is never stored as a shelf or a tag. You can switch the profile in the preview if the detection is wrong.
The preview comes before anything is written: the record count, the profile, the encoding, the first records as they will be imported, every warning, and a count per tag of what will not be transferred to the catalogue (subject headings and notes, for instance). Those untransferred fields are not lost: they are kept privately with each copy — visible only to this library’s members, never on a public page or in search — so a later version can read more from them without asking you to export again. LibraryThing writes its publication statement in one piece (“Vintage (1990), Edition / Reissue, 304 pages”), so nothing from it is stored as place or publisher; the preview offers the publisher and edition it can read as suggestions, written only if you tick them. Cancelling at the preview changes nothing.
What is refused, with the reason beside the upload: a MARC-8 file (the older character set — export it as UTF-8/Unicode instead; nothing is guessed from it), MARCXML, UNIMARC, and MARC holdings or authority files, which are copy records and name records rather than books. A record the file damaged — cut short, or with a field that runs past its end — is left out and listed by record number when the next record can be found with certainty; otherwise the import stops at that record and says so. A file is read up to 25 MB and 20,000 records.
