Goodreads CSV converter
Drop in your Goodreads library export and see exactly what is in it. Clean the rows that break importers, filter the shelves you actually want, and download a tidy CSV.
A Goodreads export is messier than it looks. ISBNs arrive wrapped in an Excel formula, unrated books carry a rating of zero, reviews are full of commas and line breaks, and plenty of rows have no ISBN at all.
Your file is never uploaded. Everything happens in this tab.Runs entirely in your browser. The file never leaves your device.
What the converter actually changes
six transforms, each one a checkboxWhat is inside goodreads_library_export.csv
one row per book, 24 columnsFourteen of those columns are worth carrying to another app. The rest are Goodreads bookkeeping or a duplicate of something else in the row. If you have not made the file yet, our guide to exporting your Goodreads library walks through it in about two minutes.
Columns worth keeping
These are the fields the converter reads, checks and cleans. Exclusive Shelf is the one that decides whether a book lands as read, currently reading or want to read.
Columns almost nothing uses
Book Id is a Goodreads internal number, Average Rating is everybody else's opinion rather than yours, and Bookshelves holds your custom shelves, which no reading app has a matching concept for. They stay in the file if you export the Goodreads columns, they just will not do anything.
What a Goodreads export leaves behind
No converter can add data the file does not contain, and it is worth knowing what you are losing before you close your account. Here is what Goodreads keeps to itself.
None of that is a reason to stay. It is a reason to export sooner rather than later, since the file only gets more valuable the longer you have been tracking. If you are still weighing up where to go, we compared the main Goodreads alternatives and wrote a step-by-step guide to moving your data.
Frequently asked questions
Do I need to convert my Goodreads CSV before importing it into booksense?
No. booksense reads the raw goodreads_library_export.csv exactly as Goodreads writes it, on your iPhone, and keeps your ratings, reviews and dates. This converter exists so you can see what is actually in the export before you commit to it, spot the rows that will match badly, and produce a cleaned file for any other app or spreadsheet you want to take it to.
Why does my Goodreads CSV have ="9780316066525" in the ISBN column?
That is Goodreads defending your ISBNs against spreadsheets. Excel and Google Sheets treat a long run of digits as a number and quietly drop the leading zero, so Goodreads wraps each ISBN in an Excel text formula. It works for spreadsheets and breaks a lot of importers, which read the whole thing, equals sign and quotes included, as the ISBN and then fail to match the book. The converter unwraps them to bare digits and drops any that fail their check digit.
Is my Goodreads export uploaded anywhere?
No. The parser, the analysis and the download are all JavaScript running in your own browser tab. Your file is read with the browser file API and the cleaned copy is built as a local blob. There is no server call at any point, no account, no email, and nothing is stored. You can turn your wifi off after the page loads and the tool still works.
Can I use the cleaned file with StoryGraph, Fable or another reading app?
Yes, that is what the two output formats are for. Goodreads columns keeps every original column in the original order, so anything that already understands a Goodreads export still does, just with the ISBNs unwrapped, the zero ratings blanked and the dates in ISO format. Simple columns writes a compact set of plain fields for a stricter importer or a spreadsheet. Check the target app first, since each one accepts a slightly different shape.
Why do I have to export a CSV at all, instead of connecting my account?
Goodreads retired its public API in December 2020 and stopped issuing new keys, so there is no supported way for another app to read your shelves on your behalf. The export file is the only route left. That is fine, because it is your own reading data and Goodreads gives it to you on request. It just means every migration starts with the same download.