Frequently asked questions
I will try to collect all regular questions (and answers) here. If you have other questions, do not hesitate to contact me on my e-mail (erlend.dahl@gmail.com, on Discord, or on Reddit).
About the app
The main goals of JetReader is:
- to simplify and automate library synchronization with Calibre
- to provide a good reading experience with user-defined shortcuts and easily accessible dictionary/translations/AI explanations
- to provide fun statistics about your reading
- to work well on the eInk screens of eReaders
In addition to this, I always try to make everything as user friendly, as customizable, and as fast as possible.
I wanted three things for my ereading experience: an easy way of getting my Calibre library onto my ereading device, a good reading experience, and interesting statistics about my reading habits. All of these were partially fulfilled by existing apps, but the apps were hard to get onto my old ereading device, and the statistics had to be manually exported.
Instead of living with something imperfect, I spent the next six years developing my own app with all the features I needed. I've been using it for a few years now, and I hope it is finally good enough that it can also be enjoyed by others.
It's also worth mentioning that the app was originally based on OneSync Reader, made by Jan Bareš in his diploma thesis. With his permission, I used it as a base for my app. After six years of development there's not much left of the OneSync Reader code, but it was a very good starting point.
It's based on the initials of my wife, child and myself. Also, I like that it indicates a fast app, and/or that you can read fast with it -- which may be true if I have done my job well enough.
JetReader is continuously developed by Erlend Dahl, an avid reader, statistics fan, and programming enthusiast. I have about 20 years of experience with software development, both as a job and as a hobby, including one fairly popular Android app called MMRemote for users of the MediaMonkey music library application.
General
Currently, it's Android only. The app is developed in a multiplatform framework, so it could probably be usable on other platforms as well (iOS and Windows, at least), but that would require some development and a lot of testing. If you want it, let me know!
JetReader can read the following formats:
- epub
- mobi
- azw/azw3
- fb2
- html/xhtml
- txt (and other text based formats)
If your books are in any other formats, you can use Calibre (or something similar) to convert the formats, and/or let me know which formats you want support for.
Reading
These features have to connect to the JetReader server in order to work, and also requires me to pay for a subscription to an API. Therefore, I need to have some control over who uses these features, and how much.
To prevent excessive usage/costs, there is also an upper limit on the number of requests per month.
A JetReader account is free for now, but I may add a paid tier at a later time, with more AI queries and possibly some other bonus features.
This is an issue with some fonts on some systems. Please try picking another font in the reader settings.
Statistics
Yes! All statistics can be exported as CSV by going to Settings => Reading statistics, and clicking 'Export reading statistics as CSV'.
Yes, you can. JetReader has built-in support for importing stats from Moon+ Reader, as well as a general CSV format.
Importing from Moon+ Reader
In order to import from Moon+ Reader, you need to create a backup from Moon, then import this backup in JetReader.
- In Moon+ Reader, enter Options, and click 'Backup' at the bottom of the window.
- Select whatever backup target you want (Local storage is easiest if JetReader is running on the same device).
- Enter a filename, and keep note of where it is saved. You do not need to check any of the 'Include [something extra]' boxes.
- In JetReader, go to Settings => Reading statistics, and click 'Import from Moon+ backup'.
- Browse your file system, and find the backup file you just made from Moon+ Reader.
- Depending on the filenames and metadata of the books you import, and whether they exist in you JetReader library, you may have to manually tell JetReader which books some of the imported stats belongs to.
Importing from CSV format
If you have your reading statistics in a format that is CSV-like, you can format it in a way that JetReader understands, and import it directly.
JetReader understands the following column headers:
- date (date)
- deviceid (text, a unique device id)
- bookid (text, a unique book id)
- filename (text, the file name of the book)
- booktitle (text, the title of the book)
- bookauthors (text, the author(s) of the book)
- fromprogress (decimal number, at what percentage did you start reading this day)
- toprogress (decimal number, at what percentage did you stop reading this day)
- words (decimal number, the number of words read this day)
- seconds (decimal number, the number of seconds read this day)
- pageturns (integer, the number of pages read this day)
- sessions (integer, the number of times you opened the book this day)
- sessionid (text, a unique id that connects all rows belonging to the same reading session)
- finisheddate (date, when you finished reading this book)
- rating (integer, from 0 to 5)
- comment (text)
- Dates must be in a common format understood by C#'s DateTime class. For example yyyy-mm-dd is safe to use.
- Decimal numbers must use a dot (.) as their decimal separator.
Importing from other apps
If you are using another reading app, let me know which one, and I can help you either convert it to CSV, or create an automated importer for other apps.
Library
There are multiple ways of adding books to your JetReader library:
- Pick books from your device manually, by clicking the 'Add' button and browsing to your book files.
- Change the JetReader library location to a folder where you have already stored your books. JetReader will scan the folder, and add all book files in it. You can also configure JetReader to automatically scan the folder for new or modified files periodically.
- Connect to a Calibre content server and download the books you want. JetReader can send read information back to Calibre if you want it to, to keep you Calibre library updated as you read through your books. You can also configure JetReader to automatically synchronize against one or more Calibre content servers periodically, so that you always have all the books you want on your device.
- Connect to Calibre as a Wireless Device, and send books from Calibre to JetReader. In this mode, book metadata will automatically be updated, and read status will be sent back to Calibre.
- Connect to a Calibre library in Dropbox/OneDrive/Google Drive/WebDAV/NextCloud/ownCloud.
If you want other ways of adding books to your library, please let me know!
No. JetReader has no built-in store, it's just a reading app. You need to buy your books elsewhere, then add them to your JetReader library (or open them with JetReader from another app).
Normally, just tap the cloud icon in the upper right corner of the home screen. This will automatically connect to the first Calibre instance it finds on your local network.
If the content server is password secured, you will get a popup asking for your username and password.
If the automatic connection does not work, you could try these steps:
- Verify that the content server is active in Calibre (Connect/share => Start content server).
- Verify that the device you are running JetReader on is on the same network as the computer you are running Calibre on.
- Verify that there are no firewalls blocking the connection.
If you have a more complex network setup, or if you are connecting to your content server from outside of the network, you can also define a custom Calibre content server connection in JetReader. To do this, go to Settings => Calibre => Add another server, and enter address and port information, and any other relevant information.
Use an existing Calibre connection, or create a new one as normal (go to Settings => Calibre and tap an existing connection or "Add another server" to create a new connection).
Once inside the server editor, make sure the Address is prefixed with https://, and optionally check "Skip certificate validation" in the Advanced section.
Data synchronization
JetReader can synchronize reading progress, reading statistics, and bookmarks between all your devices.
You can pick how you want your data to be synchronized between devices.
- JetReader.net: Data is stored in a database on the JetReader.net server. Stored data will not be shared with any other parties. This is the fastest of the synchronization services, since it uses an optimized API created specifically for JetReader.
- Dropbox: Data is stored in the Apps/JetReader folder in your Dropbox. You need to give JetReader access to your Dropbox account, but JetReader can only read or write data to the Apps/JetReader folder, and cannot see anything else in your Dropbox.
- WebDav: Data is stored in the Apps/JetReader folder on you WebDav server. This works much like the Dropbox service, but WebDav can be self-hosted, and is supported by a multitude of online services.
Due to the overhead of the Dropbox and WebDav client libraries, using these are significantly slower than the JetReader.net API. Normally, however, synchronization happens in the background, and the extra time usage should be irrelevant.
© Erlend Dahl. All Rights Reserved.
Update history Roadmap Feedback Privacy policy Delete me Terms of service
