Setting Up a Reading Tracker That Actually Survives
I spent three weeks trying to make a reading journal that didn't fall apart, and the final version came together mostly by accident. The approach is simple enough but there are enough moving parts in Goodnotes that you'll break something if you skip the structural steps. Goodnotes doesn't have a native spreadsheet engine, so you're working with what amounts to a canvas with hyperlinks and gesture controls. The trick is building a master index page that links out to individual reading entries, and each entry pages has its own forward navigation back to the index. Pages without return links become dead ends in your notebook. I found this out when I accidentally created a 40-page reading log with no way back to the table of contents, and had to delete half of it and rebuild. Here's the structure that actually works. Start with a cover page, then an index page, then a divider page for each month or section. Under each divider, create individual reading entry pages. That's it. Don't add decorative pages between functional pages. Goodnotes renders navigation slowly when there are too many objects per page, and once you hit around 80 objects on a single page, hyperlinks start dropping or becoming unresponsive.
Building the index page
Create a new page and type a header like "Reading Log." Below that, make a simple table using horizontal lines and text boxes. Each row gets a title for the book, a start date, an end date, and a rating field. The critical part is hyperlinking each book title to its dedicated entry page. Select your text box, go to Insert > Link, and choose the destination page. Test every single link before you add more content. I usually link twelve books per index page, which keeps the object count manageable and makes scrolling feel responsive. Each entry page should contain three sections. The top section is metadata: title, author, genre, date range, and star rating. The middle section is your notes area. The bottom section is a brief summary or reflection. Keep the notes area as a blank text box with the grid background turned off. Grid backgrounds on large pages add rendering overhead that slows down app performance significantly. For ratings, don't use star stickers. They're PNG files that multiply your object count. Instead, type "4.5" or use a simple numeric scale written in pen tool. If you want visual ratings, use a very small five-star template image that you duplicate only where needed. One template image repeated across twelve pages counts as one asset in Goodnotes' memory management, not twelve.
Navigation and cross-linking
Every entry page needs a return link back to the index. Add a small text box at the bottom that says "Back to Index" and hyperlink it to your index page. Without this, your journal becomes linear and unusable after ten entries. I also add a "Next Entry" link that points to the following month's section or the next available empty page. This lets you flow through the journal sequentially without jumping around. Use the Bookmarks panel to tag each major section. Open the sidebar, click Add Bookmark, and name it "January 2025" or whatever your division scheme is. Bookmarks are separate from hyperlinks but serve the same organizational purpose. When you have thirty or more pages, bookmarks become your primary navigation method because they load instantly while page thumbnails take longer to render.
Get the Full Details

Importing reading lists from other sources
If you track books in a spreadsheet or a dedicated app like Goodreads or StoryGraph, exporting to CSV and converting to a list you can copy-paste into Goodnotes saves about twenty minutes per session. Paste the list into a text file, import it as a PDF page into your journal, then manually hyperlink the titles. The import process turns text into selectable content rather than an image, which means you can add hyperlinks to it afterward. After adding about fifty reading entries, my notebook started lagging noticeably. Transitions between pages took two to three seconds instead of the usual half-second. The culprit was image-heavy pages. I had been pasting book cover images directly into entry pages. Each cover image was around 2MB uncompressed. Fifty covers meant roughly 100MB of image data stored inside a single .GOODNOTES file. Goodnotes handles this poorly. The workaround was to remove all book cover images and replace them with a single external folder reference. I created a folder on my iPad called "Reading Covers" and stored the images there. In Goodnotes, I added a text line under each entry pointing to the file path. When I needed a cover, I opened the Files app and dragged it into the entry. This kept the notebook file under 50MB total, which is well within the comfortable performance zone. The tradeoff is that covers aren't embedded in the notebook anymore, but the app runs smoothly instead of crawling.
What this system doesn't do well
There's no automated date tracking. You have to manually enter start and end dates for each book. There's no statistics dashboard or reading goal calculator. If you want to know you've read 24 books in a year, you're counting them yourself. There's also no search functionality across all your entries beyond the search bar, which only indexes text that you've typed, not text that's part of imported PDFs or images. Stylus input on entry pages can become inconsistent. The pen tool sometimes lags when you're writing rapidly in a large text box, especially on older iPad models. If this happens to you, switch to typing instead of handwriting for the notes sections. Handwrite only the titles and ratings where precision matters more than speed.
Template recommendations
If you want to skip building this from scratch, there are pre-made templates available on the Goodnotes template gallery and on Etsy. Search for "reading journal Goodnotes template" and you'll find options ranging from simple one-page layouts to full-year systems with over two hundred pages. A well-built template with proper hyperlinks and bookmarks will save you about an hour of setup time. The ones that don't work properly usually lack return links or have object-heavy pages that cause the lag described above. When evaluating a template before buying, check the page count and the number of objects per page. Anything over sixty objects per page will perform poorly on an iPad Pro 2020 or earlier. Templates designed for iPad Pro 2022 and newer M-series chips can handle more because those devices have better rendering pipelines, but the performance gap is still noticeable beyond eighty objects per page.
