Readest is a modern open source ebook reader designed for readers who want more than a basic EPUB viewer. It combines support for multiple ebook and document formats with annotations, customizable reading layouts, text-to-speech, translation, side-by-side reading, library management, and cross-device synchronization. It is available across Windows, macOS, Linux, Android, iOS, and the web.
Readest is built around the idea of making digital reading feel consistent across devices. Instead of maintaining separate applications for desktop, mobile, and web reading, users can keep the same library and reading progress across supported platforms.
The project is a modern rewrite of Foliate and uses Next.js and Tauri as part of its technology stack. It is released under the AGPL-3.0 license, making the source code available for inspection, modification, and contribution.
Key Features of Readest
Wide Format Support
Readest supports a broad range of formats, including:
This makes it useful as a general reading application rather than an EPUB-only reader.
Customizable Reading Experience
Readers can adjust typography, fonts, margins, spacing, themes, and reading layouts. Both scrolling and paginated reading modes are available, allowing users to choose an experience that suits the book and device.
Parallel Reading
One of Readest's most interesting features is Parallel Read. It allows two books or documents to be displayed side by side with synchronized navigation.
This is particularly useful for comparing translations, studying textbooks, reading technical documentation, or working with two related documents.
Notes and Highlights
Readest provides tools for highlighting passages, creating notes, and bookmarking important sections. These features make it suitable for studying and research as well as casual reading.
Annotations can also be exported, while integrations with services such as Readwise and Hardcover provide additional ways to manage reading information.
Text to Speech
The built-in text-to-speech functionality allows users to listen to supported books instead of reading them manually. Readest supports on-device, browser, and cloud TTS options depending on the platform and configuration.
Translation and Lookup
Readers can select passages and use integrated tools for translation or terminology lookup without leaving the book. DeepL, Wikipedia, and Wiktionary integrations make this particularly useful for language learners and readers working with unfamiliar subjects.
Cross-Device Sync
Readest can synchronize reading progress, highlights, notes, and library information across supported devices. It also supports integration with OPDS catalogs and personal Calibre libraries.
The project also supports synchronization with KOReader, which is especially useful for users who read on dedicated e-ink devices.
Local-First Approach
Readest emphasizes privacy and control over personal reading data. The application can be used locally, while cloud synchronization is available when users want it. The project states that it does not require forced accounts or data harvesting.
Web Version
A web version makes it possible to access the reading experience without installing a desktop or mobile application. This complements the native applications and makes the platform more flexible for users working across different devices.
Download Readest v0.12.20 - Software Mirrors |
|---|
Readest v0.12.20 for WindowsReadest_0.12.20_x64-setup.exe | 59.33 MB Readest_0.12.20_x64-portable.exe | 92.57 MB Readest_0.12.20_arm64-setup.exe | 57.83 MB Readest_0.12.20_arm64-portable.exe | 83.61 MB |
Readest v0.12.20 for macOSReadest_0.12.20_universal.dmg | 68.13 MB |
Readest v0.12.20 for LinuxReadest_0.12.20_arm64.deb | 174.65 MB Readest_0.12.20_amd64.deb | 171.68 MB Readest_0.12.20_amd64.AppImage | 203.57 MB Readest_0.12.20_aarch64.AppImage | 194.36 MB Readest-0.12.20-1.x86_64.rpm | 136.47 MB Readest-0.12.20-1.aarch64.rpm | 134.98 MB |
Readest v0.12.20 for AndroidReadest_0.12.20_legacy.apk | 117.64 MB Readest_0.12.20_armv7.apk | 44.54 MB Readest_0.12.20_arm64.apk | 55.02 MB |
Others Download related to Readest v0.12.20send-to-readest-0.2.1.zip | 468.4 kB Readest_0.12.20_universal.app.tar.gz | 67.79 MB Readest-0.12.20.crosspoint-plugin.zip | 8.65 kB Readest-0.12.20.calibre-plugin.zip | 80.48 kB Readest-0.12.20-1.koplugin.zip | 5.57 MB |
Readest v0.12.20 Source Code
Readest v0.12.20 Source code (zip)
Readest v0.12.20 Source code (tar.gz)
|
Readest v0.12.20 Release Notes: Release Highlights- Vocabulary: You can now build a vocabulary list, mark words as Learning or Mastered for Word Lens hints, and sync with Anki
- Statistics: Added a reading statistics dashboard so you can see your reading habits at a glance
- Reading: Added Page Flip and paper curl page turns, a page preview while dragging the progress slider, a straight-line reading ruler, and keyboard-only text selection
- Styling: You can now ignore publisher fonts, make white image backgrounds transparent, and adjust dialogue highlighting
- Text-to-Speech: You can now preview voices, pick a default voice per language, and sync downloaded read-aloud audio across devices
- Library: You can now import pasted text and Word or RTF files, share collections as bundles, search for covers in the app
- Sync: Added Grimmory, Obsidian, and CrossPoint 2.0 highlight sync, a new view of where your reading data goes, and a switch for servers with self-signed certificates
- Dictionary: You can now resize the dictionary popup, customize AI context lookups, edit word hints, and choose your lookup app on Android
- PDF: Text is now sharper, especially on iOS and Android, with smoother pinch zoom, panning, and gapless horizontal scrolling
- More: The KOReader plugin can sign in with a QR code, iPhone Duo gets book mode on its inner display, and stylus annotation and sync are more reliable
What's Changed
Click to expand
- feat(library): show the full book or group title on hover by @chrox in #6785
- fix(reader): keep the footer bar off the horizontal scrollbar when zoomed by @chrox in #6786
- fix(sync): keep imported annotations through the next sync (#6762) by @chrox in #6787
- fix(reader): release closed reader views from the cached book document, closes #6710 by @chrox in #6788
- fix(tts): skip bare superscript note markers when reading aloud by @chrox in #6791
- chore(agent): maintenance loops with a Reply Desk, lessons and acceptance rules by @chrox in #6796
- fix(reader): let the battery percentage follow a custom footer text color by @chrox in #6798
- fix(layout): clip nowrapped lines along the line only, keeping footnote icons whole by @chrox in #6801
- fix(sync): push a highlight made right after a notes sync by @chrox in #6802
- chore: declare tsx for the worktree scripts and clean up merged worktrees in the triage loop by @chrox in #6807
- chore(deps): bump the github-actions group with 8 updates by @dependabot[bot] in #6812
- fix(deps): resolve open Dependabot alerts by @chrox in #6813
- fix(reader): highlight long and nested quoted dialogue by @chrox in #6814
- fix(layout): keep the indent on paragraphs with a footnote icon by @chrox in #6828
- fix(android): tighten the e-ink device identity whitelist by @k6G52m4Dz75W in #6833
- fix(i18n): improve Turkish translations and add missing keys by @AlBPanda in #6830
- fix(android): force light native chrome on e-ink devices by @k6G52m4Dz75W in #6799
- fix(bookshelves): list filter values only from books still in the library by @jadhavgaurav in #6835
- ci: guard the e-ink identity whitelist against Rust/Kotlin drift by @k6G52m4Dz75W in #6834
- fix(reader): leave a footnote marker out of a double-click or long-press word by @chrox in #6808
- fix(annotator): run quick actions on a selection made in the footnote popup by @chrox in #6809
- fix(koplugin): give the Readest Library menu KOReader's UI for CoverBrowser by @chrox in #6845
- fix(annotations): import ReadEra backups that split documents across docs_N.json by @chrox in #6846
- fix(tts): hold the view still while a note is being typed during Read Aloud by @chrox in #6849
- fix(tts): keep the sentence being read across the paragraph look-ahead by @chrox in #6860
- fix(reader): open external links with their query string by @chrox in #6861
- fix(reader): follow a link inside a table instead of zooming the table by @chrox in #6862
- fix(reader): don't make a table that fits scroll because of a link at its edge by @chrox in #6882
- fix(annotator): look up the next word in the footnote popup on desktop by @chrox in #6886
- fix(md): render $ and $$ math in Markdown books by @chrox in #6887
- fix(reader): break the page for page breaks in inline styles by @chrox in #6888
- fix(reader): keep book colors that only start like #000 by @chrox in #6883
- fix(reader): let a book's own hover style underline its links by @chrox in #6884
- fix(reader): show the toolbar on a center tap in a scrolled comic by @chrox in #6885
- fix(tts): keep a note's focus when a navigation ends during Read Aloud by @chrox in #6889
- fix(desktop): drag the window from an unfocused title-bar search field by @chrox in #6893
- fix(epub): bound native zip entry reads during import by @chrox in #6817
- fix(api): validate DeepL and AI gateway request limits by @chrox in #6818
- chore(agent): lessons from 2026-10-14 to 10-15 by @chrox in #6842
- fix(reader): normalize section media types before sanitizing by @chrox in #6819
- fix(library): park a finished book as unread when an updated build is re-keyed by @k6G52m4Dz75W in #6871
- fix(reader): keep the chosen sidebar tab while Read Aloud plays by @chrox in #6847
- fix(reader): sanitize book markup rendered in the app window by @chrox in #6815
- fix(reader): don't fail opening a book whose section is still loading by @chrox in #6903
- fix(kosync): send and read FB2 positions in crengine's FictionBook form by @chrox in #6905
- feat(sync): per-server switch for self-signed certificates by @chrox in #6822
- refactor(sync): share the note merge rule between Readest Cloud and file sync by @chrox in #6843
- fix(sync): verify a redirect off a self-signed server's origin by @chrox in #6931
- fix(tts): support Xiaomi MiMo chat-completions speech synthesis by @izengyx in #6863
- fix(tts): accept a pasted speech endpoint as a custom TTS base URL by @chrox in #6906
- fix(reader): drive the percent readout from the continuous reading fraction by @k6G52m4Dz75W in #6876
- fix(nix): stabilize the dev shell and share Linux runtime dependencies by @Kasifrasi in #6851
- fix(storage): check the quota after reserving the row and keep clients off files writes by @chrox in #6820
- fix(translate): keep long sentences whole for Yandex and retry rate-limited chunks by @Columpio in #6919
- fix(reader): limit pdf zoom in preview to MAX_ZOOM_LEVEL by @jelly-afk in #6904
- fix(tts): prepare the next paragraphs' first sentence while one plays by @smist37 in #6910
- fix(eink): master scrim switch for capture-blocking overlays by @k6G52m4Dz75W in #6922
- fix(proxy): normalize hostnames and validate resolved addresses by @chrox in #6821
- fix(opds): drop decoded-body headers from proxied error responses by @chrox in #6942
- fix(opds): vary cached proxy feeds on the Authorization header by @chrox in #6946
- fix(metadata): reject impossible publication dates by @kelvinalfaro in #6937
- fix(reader): pinch a PDF spread without jumping sideways on release by @chrox in #6943
- fix(reader): show the every-occurrence toggle's state on e-ink by @chrox in #6948
- fix(hardcover): preserve legacy mappings when migration writes fail by @kelvinalfaro in #6938
- fix(reader): keep word-final apostrophes inside single-quoted dialogue by @chrox in #6950
- fix(reader): detect the language of Markdown and HTML books with none declared by @chrox in #6952
- fix(reader): keep the bars hidden when the window gives focus back by @chrox in #6954
- fix(tts): read PDF words across line breaks, and hyphenated words whole by @chrox in #6955
- fix(sync): say when the device clock keeps changes from syncing by @chrox in #6956
- fix(kosync): send and read MOBI positions in crengine's HTML form by @chrox in #6951
- fix(translate): leave ruby readings out of the text sent to the translator by @chrox in #6953
- fix(pdf): keep PDF text sharp at fractional display scales by @chrox in #6949
- fix(reader): keep word-final apostrophes before a dash inside single-quoted dialogue by @chrox in #6957
- fix(tts): read a PDF aloud in the language of its page by @Armone0 in #6944
- fix(reader): dismiss the selection toolbar on a click beside the text by @chrox in #6961
- fix(reader): keep the mouse Back button in the book when it's released off the page by @chrox in #6963
- fix(pdf): don't select text while a drag pans the page by @chrox in #6962
- fix(reader): add touch-accessible web fullscreen by @kelvinalfaro in #6964
- fix(reader): use the correct form of 2 in Chinese footer numbers by @RaphaelFakhri in #6966
- fix(reader): pinch a PDF spread with one finger on each page by @chrox in #6968
- fix(reader): keep the tabular-nums utility effective below Chromium 119 by @k6G52m4Dz75W in #6970
- fix(reader): give the remaining-info readout tabular-nums like its siblings by @k6G52m4Dz75W in #6971
- fix(android): keep the reading position when the screen wakes by @chrox in #6972
- fix(library): wrap the select-mode action bar instead of clipping it by @chrox in #6973
- fix(library): keep the title bar draggable in select mode by @chrox in #6978
- fix(reader): turn a fixed-layout page by a drag across the page, not the cell by @chrox in #6983
- chore(deps): bump the github-actions group with 6 updates by @dependabot[bot] in #6981
- fix(ios): play narration and TTS through the native player on iPad by @chrox in #6979
- fix(reader): hide the bars when the pointer crosses their edge strip into the book by @chrox in #7005
- feat(library): add .rbooks collection bundle export and import by @Armone0 in #6945
- fix(reader): show selection toolbar after off-text mouse release by @kelvinalfaro in #6988
- fix(import): name the files a mixed drag-drop skips by @k6G52m4Dz75W in #6991
- fix(reader): dismiss footnote popup in Paragraph mode by @kelvinalfaro in #6996
- fix(reader): keep Russian prepositions with quoted words by @kelvinalfaro in #6998
- chore(deps): bump webpki chain for the emSign/eMudhra intermediate CA distrust by @k6G52m4Dz75W in #7002
- fix(tts): play stored narration audio in place instead of copying it by @chrox in #7004
- fix(deps): resolve open Dependabot alerts by @chrox in #7007
- fix(import): map a ZIP with no book inside to "format not supported" by @kelvinalfaro in #6997
- chore(deps): bump the dompurify override floor to 3.4.17 by @k6G52m4Dz75W in #7003
- fix(android): play stored narration audio in place from the book file by @chrox in #7010
- fix(handwriting): keep undo history and new strokes when a drawing syncs by @chrox in #7014
- fix(pdf): keep a pan going past the page edge and turning at the end by @chrox in #7012
- feat(stats): add reading statistics dashboard by @realdanvanth in #6986
- fix(docker): bump node base image to 24.22.1 for the 2026-10 Node security releases by @k6G52m4Dz75W in #7016
- fix(reader): keep the header with the pointer on the top edge of a maximized window by @chrox in #7017
- fix(ios): play stored narration audio in place from the book file by @chrox in #7019
- fix(koplugin): connect over IPv4 in forked sync workers on macOS by @chrox in #7021
- Import pasted text into the library by @kelvinalfaro in #6992
- feat(notion): colour highlight quotes and send notes as callouts by @chrox in #7029
- fix(rsvp): keep Bengali vowel signs and conjuncts with the focus letter by @chrox in #7028
- fix(handwriting): re-measure the page after a push page turn by @chrox in #7030
- fix(deps): bump next to 16.4.2 for the open Dependabot alerts by @chrox in #7032
- fix(annotator,notion): keep a highlight's colour on Annotate; Notion note template; working sync links by @chrox in #7031
- fix(reader): fit cover image to page in paginated mode and preserve aspect ratio by @Armone0 in #7027
- ci(android-e2e): retry the emulator system image install by @chrox in #7036
- Add native Android paper curl and stabilize page turns by @sadikh94 in #7001
- fix(audiobook): stream paired local audio through the media proxy on desktop (#6848) by @chrox in #7037
- feat(ios): turn pages with the native paper curl by @chrox in #7046
- fix(tts): resume a mid-sentence pause in place from media keys by @chrox in #7069
- feat(tts): keep the chosen sleep timer for the rest of the app launch by @chrox in #7070
- fix(sync): keep a position read just before closing the book by @chrox in #7071
- fix(layout): keep a percentage-width image next to text at its size by @chrox in #7072
- feat(library): accept docx and rtf imports via silent EPUB conversion by @k6G52m4Dz75W in #7050
- fix(reader): jump to a typed page when the field loses focus by @chrox in #7080
- fix(storage): delete a book file uploaded under its hash name by @chrox in #7063
- feat(library): Manage Cache on desktop by @chrox in #7066
- fix(build): turn off the Turbopack build cache that Next 16.4 enables by @chrox in #7082
- fix(dictionaries): create the database folder before opening it by @chrox in #7076
- fix(tts): step back into the previous page at its last sentence by @chrox in #7077
- fix(library): sort a subgroup by its own name inside a parent group by @chrox in #7081
- fix(annotator): keep a dragged selection handle on its line by @Armone0 in #7053
- fix(tts): open the Workers Edge TTS socket over cloudflare:sockets by @smist37 in #7056
- fix(library): open a .zip of images as a comic by @chrox in #7078
- feat(reader): calibrate the page-number readout with real screen counts by @k6G52m4Dz75W in #7060
- fix(reader): keep native curl pages when a turn redraws unchanged highlights by @chrox in #7112
- feat(reader): preview the page under the progress slider while dragging by @chrox in #7110
- fix(handwriting): keep the pen fine on wide desktop pages by @chrox in #7109
- fix(reader): keep the screen awake after the window is refocused on Linux by @chrox in #7108
- fix(novel): recognize 第N頁 and traditional chapter units in chapter titles by @chrox in #7107
- fix(reader): keep a note's own styling in the footnote popup by @chrox in #7111
- fix(reader): compare curl overlay markup in paint order and check new overlays by @chrox in #7114
- fix(reader): keep native curl pages when progress sync starts by @chrox in #7115
- fix(library): retry a synced cover whose download failed by @chrox in #7116
- fix(reader): never open the media viewer for note-reference markers or chapter-length tables by @doublex640 in #7083
- fix(build): make pnpm preview serve pages and rewrites again by @chrox in #7141
- fix(reader): stamp sections loaded after a theme switch with the live theme by @chrox in #7121
- fix(reader): show the page's own rendering in the image viewer by @doublex640 in #7096
- fix(reader): give volume keys back when Use Volume Keys is turned off by @chrox in #7140
- ci: pin the Playwright jobs to ubuntu-24.04 by @chrox in #7151
- chore(deps): bump the github-actions group with 7 updates by @dependabot[bot] in #7149
- feat(reader): Page Flip page-turn style on Android, iOS and desktop by @chrox in #7160
- fix(crosspoint): link a reader's copy to an Audiobookshelf ebook (#7086) by @ts-eva in #7087
- test(reader): unmount each image-gallery test's viewer by @chrox in #7163
- fix(kosync): sync an Audiobookshelf ebook under its file's id (#7088) by @chrox in #7161
- fix(hardcover): reuse journal entries already on Hardcover instead of duplicating them by @chrox in #7162
- fix(hardcover): sign in through Readest's own Hardcover OAuth app by @chrox in #7165
- fix(reader): stop translation DOM work after the hook unmounts by @chrox in #7167
- feat(library): page count badge on covers as a per-bookshelf option (#6909) by @Armone0 in #7142
- feat(ios): book mode on iPhone Duo's inner display by @wemcdonald in #7137
- feat(tts): let custom TTS services set their audio format and voices by @sunnymodi21 in #7155
- fix(annotations): save exports to storage on Android and clear the bottom inset by @chrox in #7169
- fix(ios): keep the orientation lock when the scene is resizable by @wemcdonald in #7146
- fix(tts): upload existing downloaded packs when sync is on, skip listening cache by @chrox in #7176
- fix(nix): add missing build/runtime dependency by @dastarruer in #7170
- fix(kosync): read xpointers with explicit [1] steps from newer crengine by @bercedev in #7172
- test(kosync): check both xpointer forms against crengine at two DOM versions by @chrox in #7178
- feat(reader): swipe past a zoomed PDF page's edge to turn, like Photos by @sunnymodi21 in #7175
- fix(sync): stop opening a "Sync failed" dialog for file-sync errors by @chrox in #7183
- fix(ui): stop the plan cards clipping on iOS 16, closes #7181 by @chrox in #7184
- fix(tts): stop caching, packing and syncing the same sentence twice by @chrox in #7187
- fix(desktop): reopen the in-app browser window at its last size and position by @NeilN1 in #7185
- fix(tts): give up on a silent Edge connection after 30s on every transport by @chrox in #7188
- feat(sync): sync downloaded read-aloud audio through Readest Cloud and every file-sync backend by @chrox in #7177
- fix(android): keep the page-turn cover below the keyboard, closes #7171 by @chrox in #7191
- feat(sync): record each book's synced read-aloud packs in its config by @chrox in #7190
- feat(koplugin): sign in with a QR code; fix the logged-out label and global logout (#7186) by @chrox in #7192
- fix(sync): list every page of a book's cloud files for synced data by @chrox in #7199
- fix(reader): disable separate cover in scroll layouts by @kelvinalfaro in #7195
- fix(reader): hide dismissed footer immediately by @kelvinalfaro in #7197
- fix(reader): keep the screen awake while speed reading plays by @chrox in #7200
- fix(reader): wrap long text in scroll mode by @kelvinalfaro in #7196
- ci: run the web browser tests in their own job by @chrox in #7202
- chore(agent): update agent memories by @chrox in #7203
- fix(android): continue recorded narration while screen locked by @kelvinalfaro in #7194
- feat(settings): search the font lists in Font settings by @chrox in #7204
- fix(library): keep two FB2 documents that share a title and author (#7150) by @chrox in #7205
- fix(tts): keep the page when Read Aloud reads text the book hides by @chrox in #7207
- feat(reader): improve stylus annotations and finger navigation by @chrox in #7213
- fix(koplugin): wait for Wi-Fi before pulling on wake by @chrox in #7215
- feat(reader): choose tap or long press to open the image viewer per book by @chrox in #7208
- fix(library): add stable colored placeholder covers by @chrox in #7222
- fix(opds): allow trusted private catalogs at runtime by @chrox in #7225
- fix(tts): start Storyteller narration at the current text by @chrox in #7223
- fix(windows): make Explorer thumbnails opt-in by @chrox in #7220
- fix(android): open linked images on touch hold by @chrox in #7221
- fix(tts): publish downloaded audio records without a page turn by @chrox in #7224
- fix(opds): match equivalent trusted IPv6 literals by @chrox in #7226
- fix(reader): navigate paragraphs with volume buttons by @chrox in #7227
- fix(reader): allow gapless horizontal PDF scrolling by @chrox in #7232
- fix(tts): keep skipped utterances from aborting replacement speech by @chrox in #7233
- fix(tts): show a custom TTS voice's listed name instead of its id by @onedge in #7229
- test(novel): make failed image placeholders deterministic by @chrox in #7236
- fix(sync): ignore stale duplicate reading positions by @chrox in #7231
- fix(reader): highlight continued multi-paragraph dialogue by @chrox in #7238
- test: use four workers for unit tests by @chrox in #7242
- fix(tts): play local AAC narration natively on Linux by @chrox in #7240
- fix(ios): capture readable shared pages when loading stalls by @chrox in #7241
- feat(dictionary): customize context prompts and response limits by @chrox in #7244
- fix(security): remediate Dependabot dependency alerts by @chrox in #7248
- fix(library): preserve original filenames and use PDF filename titles by @chrox in #7237
- fix(reader): release volume keys while reader controls are open by @chrox in #7254
- fix(reader): highlight long punctuated single-quoted dialogue by @chrox in #7255
- feat(reader): add dialogue highlighting weight options by @chrox in #7256
- feat(kosync): support original filename checksums by @chrox in #7253
- feat(library): add searchable history dropdown by @chrox in #7261
- fix(account): require explicit confirmation before deleting account by @chrox in #7258
- fix(ios): decode imported file URL basenames once by @chrox in #7263
- test(reader): handle cancelled paginator previews in browser tests by @chrox in #7267
- feat(ios): add fullscreen system dictionary setting by @chrox in #7269
- fix(library): ignore leading English articles in title sorting by @chrox in #7271
- feat(reader): make white image backgrounds transparent by @chrox in #7270
- feat(reader): show background textures in footnote popups by @chrox in #7268
- feat(android): choose the system dictionary lookup app (#4937) by @chrox in #7272
- perf(web): run the web Worker near Supabase with Smart Placement by @chrox in #7273
- perf(api): stop hot sync routes loading the TTS engine and DOMPurify by @chrox in #7274
- feat(translator): add a Thinking setting to custom LLM translators, fix translator field sync by @chrox in #7275
- fix(sync): sign bucket-root listings with a trailing slash by @gilgamesh-tkh in #7278
- fix(dictionary): stream context dictionary responses by @chrox in #7285
- fix(sync): support provider downloads and generic transfer history by @chrox in #7289
- feat(reader): add a straight-line reading ruler by @chrox in #7288
- feat(vocabulary): vocabulary builder and Learning/Mastered marks for Word Lens by @chrox in #7284
- feat(metadata): search for book covers in app by @chrox in #7290
- fix(koplugin): collect sync workers before KOReader exits by @chrox in #7293
- fix(reader): keep the sidebar button top-left on tablets, tidy the transparent-image row by @chrox in #7294
- chore(agent): update memories by @chrox in #7295
- fix(bookorbit): let the web proxy run on Cloudflare Workers by @chrox in #7296
- feat(reader): vim-style find to start and extend a selection from the keyboard by @you-gao in #7282
- fix(library): refresh external sources without a Readest login by @chrox in #7297
- fix(reader): use platform-specific spread defaults by @chrox in #7299
- perf(reader): subscribe the vim command line to the store fields it uses by @chrox in #7301
- feat(reader): ignore publisher font names by font category by @chrox in #7298
- fix(reader): draw PDF text at the screen's full resolution on iOS and Android by @chrox in #7300
- fix(reader): preserve publisher font lists and category fallbacks by @chrox in #7302
- fix(bookdrop): keep received file names inside the inbox by @chrox in #7304
- fix(auth): keep the sign-in callback URL out of logs by @chrox in #7305
- fix(annotator): line the note card up with its popup box by @chrox in #7310
- feat(annotator): draw a global annotation's copies as a dashed underline by @chrox in #7309
- fix(send): allow PATCH through CORS so the apps can approve a sender by @chrox in #7312
- fix(sync): sync a re-enabled or cleared custom TTS field to other devices by @BEMELON in #7307
- feat(tts): read aloud with Speech Dispatcher voices on Linux by @chrox in #7314
- feat(vocabulary): redesign the mobile header by @chrox in #7315
- feat(crosspoint): sync CrossPoint 2.0 clippings with Readest highlights by @chrox in #7317
- fix(annotator): clear a moved highlight's old anchors on the server too by @chrox in #7319
- fix(sync): give HTML chapter files their own sync identity by @chrox in #7321
- fix(reader): reach the last page when a book ends partway into a spread by @chrox in #7320
- feat(tts): preview voices and pick a default voice per language by @chrox in #7322
- feat(library): remove selected books from the device only by @chrox in #7324
- fix(sync): stop idle notes pushes and keep what a push leaves out by @chrox in #7326
- chore(deps): bump actions-rust-lang/setup-rust-toolchain from 2.0.0 to 2.0.1 in the github-actions group by @dependabot[bot] in #7331
- fix(kosync): follow a percentage-only position on PDFs and push 1-based pages by @chrox in #7334
- feat(vocabulary): sync with Anki on Android by @chrox in #7328
- feat(reader): vim-style find selects text in PDFs too by @chrox in #7333
- ci(codeql): use advanced setup and skip Rust analysis on PRs without Rust changes by @chrox in #7335
- fix(reader): shrink default list indent under Override Book Layout by @chrox in #7338
- chore(tts): shorten Readest Voice download windows to 16 sentences or 512 chars by @chrox in #7339
- fix(wordlens): hint a word that ends where an inline element starts or ends by @chrox in #7340
- feat(sync): add a Grimmory integration (#7337) by @chrox in #7341
- fix(tts): preview voices at the player's speed by @chrox in #7345
- fix(reader): keep native curl pages in step with the toolbars and panels by @chrox in #7343
- feat(reader): move menu options to Settings and add Vocabulary to the view menu by @chrox in #7348
- fix(sync): match books for Grimmory stats alone, and undo a failed connect by @chrox in #7347
- fix(tts): play Media Overlay clips whose text target is an image by @chrox in #7352
- feat(dictionary): resize the dictionary popup from a corner grip (#7344) by @chrox in #7354
- feat(integrations): sync highlights into an Obsidian vault on desktop and Android by @chrox in #7349
- fix(wordlens): hint Learning phrases of two or more words by @chrox in #7350
- fix(auth): send password sign-in through a Worker on readest.com by @chrox in #7355
- fix(dictionary): give the popup's resize grip a 32px hit area by @chrox in #7357
- test(dictionary): drag the resize grip from a hit-tested point outside the popup by @chrox in #7359
- feat(dictionary): edit a Learning word's hint in the dictionary popup by @chrox in #7356
- fix(wordlens): match phrases on token edges, retry after a rejected match by @chrox in #7358
- fix: reader search, e-ink paging, cache and koplugin delete from user reports by @chrox in #7360
- fix(reader): apply Open Images to every book and to tables by @chrox in #7363
- chore(agent): update agent memories by @chrox in #7365
- feat(integrations): show where reading data flows and what is working by @chrox in #7366
- fix(tts): stream staged narration audio so a long chapter can't kill the app on Android by @chrox in #7367
- release: version 0.12.20 by @chrox in #7368
New Contributors- @AlBPanda made their first contribution in #6830
- @izengyx made their first contribution in #6863
- @Kasifrasi made their first contribution in #6851
- @jelly-afk made their first contribution in #6904
- @Armone0 made their first contribution in #6944
- @RaphaelFakhri made their first contribution in #6966
- @realdanvanth made their first contribution in #6986
- @sadikh94 made their first contribution in #7001
- @doublex640 made their first contribution in #7083
- @wemcdonald made their first contribution in #7137
- @sunnymodi21 made their first contribution in #7155
- @bercedev made their first contribution in #7172
- @NeilN1 made their first contribution in #7185
- @onedge made their first contribution in #7229
- @gilgamesh-tkh made their first contribution in #7278
- @you-gao made their first contribution in #7282
- @BEMELON made their first contribution in #7307
Full Changelog: v0.12.16...v0.12.20 |
Performance and User Experience
Readest has a clean interface that focuses on reading rather than surrounding the user with unnecessary controls. The application feels closer to a modern productivity tool than a traditional ebook utility.
Its biggest strength is the combination of simple reading features with tools aimed at deeper study. Side-by-side reading, annotations, translation, TTS, and customizable typography make it useful for everything from casual novels to technical books and academic material.
The project is also developing quickly. Recent releases have improved library performance, PDF support, reading layouts, synchronization, OPDS management, and accessibility.
Because Readest is still actively evolving, users should expect some features and interfaces to change over time.
Pros
Free and open source.
Supports EPUB, PDF, MOBI, AZW3, FB2, CBZ, and TXT.
Available on Windows, macOS, Linux, Android, iOS, and the web.
Clean and customizable reading interface.
Side-by-side Parallel Read mode.
Highlights, notes, and bookmarks.
Text-to-speech support.
Translation and dictionary tools.
Cross-device synchronization.
OPDS and Calibre support.
KOReader synchronization.
Local-first and privacy-focused design.
Active development.
Cons
Some advanced functionality is still evolving.
Cloud-based features may require additional configuration or services.
Users looking for a very minimal ebook reader may find the feature set extensive.
The ecosystem is smaller than established commercial ebook platforms.
Who Should Use Readest?
Readest is an excellent choice for students, researchers, developers, language learners, academics, and anyone who reads across multiple devices.
It is particularly appealing to people who want more control over their ebook library while still having modern conveniences such as synchronization, text-to-speech, annotations, translation, and OPDS support.
For users who already have a Calibre library or use KOReader on an e-ink device, Readest is also worth considering because of its interoperability with those ecosystems.
Final Verdict
Readest is one of the most impressive open source ebook readers currently available. It combines the simplicity of a traditional reader with features normally found across several separate applications.
The ability to read multiple formats, compare books side by side, annotate documents, translate passages, listen through TTS, and synchronize reading progress across platforms gives Readest a strong advantage over basic ebook readers.
It is not simply trying to replace a conventional EPUB viewer. Its focus on deep reading, study, interoperability, and cross-platform access makes it a compelling choice for anyone who wants a more complete reading environment while keeping their books and data under their control.
Post a Comment/Report Broken Link: