Goodreads to StoryGraph - CSV Migrate
Turn your Goodreads export into a clean StoryGraph-ready CSV. Fixes the ISBN quirk that breaks imports. All in your browser.
- Works on
- Chrome
- Version
- 3.0.3
You exported your Goodreads library, fed it to StoryGraph, and the ISBNs arrived blank or the import stopped partway. Goodreads wraps every ISBN so spreadsheets keep the leading zeros, and the importer reads that literally. Drop the file here for a version it can take.
Moving from Goodreads to StoryGraph? StoryGraph can import a Goodreads CSV, but the export has a quirk that quietly breaks it: Goodreads wraps every ISBN like ="9780..." so spreadsheets keep the leading zeros, and that makes ISBNs import blank or fail. This fixes that.
Pick your Goodreads library export and this cleans it into a StoryGraph-ready CSV: it un-wraps the ISBNs, drops rows with no title (which can make the whole import fail), and tidies stray spacing — keeping every book, rating, review and shelf. Then you upload the clean file to StoryGraph.
Everything happens in the popup, in your browser. Your library is never uploaded anywhere and the extension asks for no permissions.
Independent extension, not affiliated with StoryGraph or Goodreads.
Screenshots

What it does
Fixes the ="..." ISBN wrapping that makes Goodreads imports drop ISBNs.
Skips title-less rows that can fail the whole import, and reports how many.
Keeps ratings, reviews, shelves and dates intact.
No account, no permissions, no servers
your library stays in your browser.
When you'd reach for it
Switching from Goodreads and taking the whole shelf history
Pick the export file or drag it onto the popup. Every column Goodreads wrote is carried across with the original header row, which is what the importer on the other side matches against, so ratings, review text, shelves, date read and date added stay attached to the right book. Only the ISBN and ISBN13 cells are rewritten, from the wrapped form to plain digits.
An import that failed and never said why
A single row with an empty Title is enough to stop the whole file. Rows like that are removed and counted, and the status line tells you how many books were kept and how many rows were dropped before you upload anything. Stray leading and trailing spaces in every cell are trimmed at the same time.
Checking the file before you hand it over
The result downloads as storygraph-import.csv, an ordinary text file. Open it in a spreadsheet or a text editor and you can see the ISBN column as bare digits and the row count matching what the popup reported. If something still looks off, you can re-run the original export through it again — the source file is never modified.
How to use it
- 01In Goodreads: My Books › Import and export › Export Library — download the CSV.
- 02Click this extension, choose that CSV, and download the cleaned StoryGraph CSV.
- 03In StoryGraph: Manage account › Import, upload the cleaned file.
Permissions & privacy
Single purpose
Single purpose: Convert a Goodreads library-export CSV into a cleaned, StoryGraph-ready CSV, entirely in the popup. Permissions: NONE. The extension declares no permissions and no host permissions. It reads the file the user picks via a file input and writes the result via a local download. Remote code: None. All code is bundled in the package; nothing is fetched or eval'd at runtime. Data collection / transmission: None. The chosen CSV is processed in memory in the popup and never uploaded, stored, or transmitted.
This extension declares no special permissions. Installing it gives it access to nothing on any site.
The extension reads the CSV file you choose, cleans it, and lets you download the result. Nothing is uploaded, stored, or sent anywhere. It requests no browser permissions. It runs only the code shipped inside the package — no remote code is fetched.
Questions people ask
How do I import my Goodreads books into StoryGraph?
In Goodreads, go to My Books, then Import and export, and click Export Library to download the CSV. Open this extension, choose that file, and download the cleaned version. Then in StoryGraph go to Manage account, choose Import, and upload the cleaned file.
Why are the ISBNs blank after importing a Goodreads CSV?
Because of how Goodreads writes them. Each ISBN is exported inside a spreadsheet formula guard so Excel does not eat the leading zero, and an importer reading the raw cell sees the guard rather than the number. The cleaner strips that wrapper from the ISBN and ISBN13 columns so the values are plain digits again.
The cleaned file has fewer books than my export. Why?
Rows with no title were removed, and the count is shown in the popup after the file is processed. Those rows are the ones most likely to stop the import, and they carry no book to identify anyway. Everything else from the export is still there, including books with no ISBN.
What permissions does the manifest declare?
None. The manifest lists no permissions and no host permissions at all — the whole conversion runs in the popup window. You pick the CSV through an ordinary file input, the rows are rewritten in memory, and the result comes back as a download called storygraph-import.csv. The export file you selected is left exactly as it was.
Are my ratings, reviews and shelves preserved?
Yes. The rewrite touches only the ISBN columns and surrounding whitespace, and it keeps the Goodreads header row exactly as exported. Star ratings, review text, bookshelves, read count and both date columns come through unchanged, so what you upload matches what you had.
Related extensions
GitHub 한국어 (GitHub Korean)3K+ usersTurns GitHub's menus, buttons and settings labels into Korean as the page loads. Dev terms stay in the form you actually say, plus release and status alerts.
KoreaDropdown800+ usersA Chrome extension that automatically selects 'Korea' in dropdown menus on websites.
Naver Blog & Cafe Image Downloader9 usersSave every image from Naver Blog, Cafe, and Post in one click. Full-resolution originals in one folder, no context menu needed.
Happy Pet - Virtual Pet7 usersA cute virtual pet companion for your new tab page
Review Signal for Coupang — Review Trust Analyzer2 usersTrust signals for Coupang reviews: sponsored ratio, date bursts, duplicate text, rating skew. Suspicion signals, not a verdict.
Auto Refresh - Reload Tab on TimerAutomatically reload the current tab on a timer, from 30 seconds to any interval. No ads, no tracking, no site permissions.