· 4 min read
How to Move a Reading List Between Apps
Manesh Jayawardhana
CIO & Co-founder
Eleven years of reading records live in a note called “books.txt”. Every line is a book, roughly in the format Author - Title (Year), and about forty of the eight hundred lines are in some other format entirely.
Getting that into a proper library app means parsing it, and the interesting question is what happens to the forty.
Parsing is pattern matching, not comprehension
A parser looks for a structure. Author - Title (Year) splits on the dash and extracts the parenthesised number.
That works until a line contains a dash somewhere else:
Ursula Le Guin - The Left Hand of Darkness (1969)— fineJean-Paul Sartre - Nausea (1938)— the hyphen in the name is not the separatorAnon - The Saga of Grettir - a new translation (2005)— two dashesMoby-Dick— no author, and a hyphen in the title
The first is what the pattern expects. The other three are why a parser that silently guesses produces a library with fields in the wrong columns.
The right behaviour is to flag them. Forty lines to fix by hand is a job; eight hundred entries with forty silently wrong is a corrupted library you discover a year later.
Choose the format for the destination
CSV for spreadsheets and most library apps’ import functions. Nearly everything reads it, and column order can usually be mapped on import.
Markdown table for putting the list in a document or a wiki. Readable as text, which CSV is not.
BibTeX for reference managers and LaTeX. Entries generated from a plain list will have author, title, year and a generated key, and will be missing publisher, edition and ISBN — enough to import and identify, not enough to cite.
JSON for anything you are going to process programmatically.
| Destination | Format | Completeness |
|---|---|---|
| Spreadsheet | CSV | Full for what was in the source |
| Wiki or document | Markdown | Full |
| Reference manager | BibTeX | Skeleton — needs enriching |
| Script | JSON | Full |
Enriching afterwards
A list of author, title and year identifies a book. It does not describe an edition.
Most library and reference apps can look up an ISBN or search by title and author to fill in publisher, page count, cover and subject headings. Importing the skeleton and letting the app enrich it is far less work than assembling complete records by hand.
That also resolves ambiguity — two books with the same title and year become distinguishable once the lookup adds a publisher.
Keep your own annotations
The part of a reading list worth most is rarely the titles.
Ratings, dates read, and one-line notes about why a book mattered are what you cannot reconstruct. A migration that carries the titles and drops those has moved the least valuable half.
If your source list holds them in any consistent position — after a dash, in brackets, on the following line — they can be parsed into their own columns and imported alongside. If it does not, extracting them is manual work, and it is worth doing before the list grows further.
Most library apps have fields for a rating and a private note. Mapping your annotations into those at import is far easier than adding them back one book at a time afterwards.
Common mistakes to avoid
- Using a parser that guesses on malformed lines instead of flagging them.
- Importing without checking the flagged lines, which are the ones most likely to be wrong.
- Expecting BibTeX generated from a plain list to be citation-ready.
- Losing your own annotations — ratings, dates read, notes — because the parser only looked for author, title and year.
- Deleting the original file after import, before verifying the count matches.
How to do it with Reading List Exporter
The Reading List Exporter parses in the browser and reports what it could not read.
- Paste the list; consistency in format matters more than which format.
- Choose the output for where it is going.
- Fix the flagged lines by hand — they are usually titles containing the separator.
- Check the output count matches the input before deleting anything.
Other productivity tools are in the tools directory.
Frequently asked questions
What format should my input be in?
Any consistent one. Author - Title (Year) parses cleanly. The problems come from mixed formats within one list, and from titles or names containing the separator character.
Will the BibTeX work in LaTeX?
It produces valid entries with generated keys, missing publisher and edition fields. Import it into a reference manager and let that enrich the records from an ISBN or title lookup.
Is my list uploaded anywhere?
No. Parsing runs in the browser, so the list stays on your device.
Final thought
Read the flagged lines before importing. Forty lines to fix by hand is an afternoon; forty silently mis-parsed entries is a library you stop trusting.