A speed reader for your phone


To allow you to read entire books on your mobile phone without developing a squint.

for the download, skip to the bottom


BookReader is the MIDlet that displays the books on the mobile phone. The concept is based on a speed reading applet from Trevor Smith but none of his code has been used (or looked at). To summarize the theory: what slows you down the most when reading is the movement of the eyes, so the aim is to show only one word at a time in the same place, with the hope that the eyes can apprehend the whole word without moving. Trevor Smith got the idea from The Reading Lab.

BookReader is my take on the matter. Now, because I have a Sony Ericcson T610, that is what is it designed for. Fortunately that’s pretty primitive in its support of java, so if you have java on your mobile phone, you can probably run it. To let me know about successes / failures send me an email at i @ Because the screen on the T610 (and most mobiles) is taller than wide, the words are displayed in a nice big clear font vertically – you’ll need to turn your phone, or your head, or your world view to read.

Inside BookReader, the keys are:

Fire Pause / Unpause
Up Slows down
Down Speeds up
Right Skips forwards
Left Skips backward
Game A (7 on the T610) sets the bookmark
Game B (9 on the T610) goes to the bookmark
Game C (# on the T610) skips back a chapter
Game D (* on the T610) skips forward a chapter

If you’re thinking that that those are quite weird keys, bear in mind that you’ll be using it with the phone turned sideways.

The Book menu allows you to change book (although I’ve had difficulty with that on a RAZR), to see how fast you’re reading, how long you’ve got left at the current rate approximately) where you are, and if the book is loaded and has chapters defined it allows you to jump to a chapter.

Bear in mind that seeking in files is very slow on the T610 and probably some other phones, so be patient with it, and don’t try to give it too much to do at once.

There’s an indicator light in the bottom left of the screen (when turned). Red for busy, blue for paused, green for running. Some activities will pause it automatically and when seeking, you might be well advised to pause it first and unpause it when you’re done.

The progress bar shows how far you are through the file, and has lines marked on for chapters (blue) and a line for your bookmark (red). When you exit properly, although it may take a while, your phone will remember your last position as your bookmark, so you can skip straight back when you reload the book.


BookReaderDeployer is a packaging app for BookReader, it’s very basic at the moment, but it gives a user interface that allows you to set which books you want, to set the chapters and to change the typeface used.

BookReaderDeployer is packaged as an executable jar file, so just double click on it or java -jar it. It requires the verified directory to be in the current directory (the same directory its in if you double clicked) and the MIDlet with be exported to a directory output in the current directory. Existing files will be overwritten.

When you fire up BookReaderDeployer, you’ll see very little until you add a book. You can do this from the File menu. Books must be plain txt files although you may want to do a little reformatting in a text editor before loading it in. If you’re stuck for books try The Gutenberg Project.

Once a book is loaded, you can set the book name in the text field at the top right (you don’t need to turn your computer screen for this). You can also change the type face used by selecting Edit->Charset… If you wish to add other books too, they will appear in the combo box when you add them.

Note: I recently tried this MIDlet on an SE k800i, it largely worked, but I found that it would sometimes freeze on initialising when you defined chapters as described below.

The only thing left to do before you export the MIDlet is to define chapters. Manually, you can select the point that you would like to start the chapter in the text pane, and then click new. After that, you can define the name for the chapter (this appears in the menu on the phone) and make sure it’s working by click Go, or get rid of it by clicking Del. The more advanced way of doing it however is to use the Auto button and a regular expression. This defaults to CHAPTER as it happens to be very useful for the book I’m testing with (Poirot in the Styles case). If you’re feeling advanced, and don’t want your chapters to be automatically named Chapter 1 up, you can use a group in the regex. For example, in the Poirot book I’m using, you could use (CHAPTER w{1,4}) to name the chapters correctly.

Once everything is done, you can select File->Export MIDlet, and a jad and jar file will be created in output in the current directory (probably the same one you ran it from). You should then be able to install it onto your phone and try it out.

Other Ideas For Speedreading

Perhaps in the future, words could be assigned colours. We know that it’s easier to read the word Red if it’s actually coloured red. BookReader pauses slightly after every full stop, it could also do this in other appropriate cases (perhaps long words?, or sentences with too many clauses). Since the idea is that you shouldn’t need to move your eyes, long words should probably be broken up. It’d be interesting to assign specific intervals and pitches to every word in English (with similar ones for similar meanings), and add sound as an extra cue to assist reading quickly. A 3D stack of words that you descend through, but you can still see a few words below and above with transparency and stuff. Showing the words before and after above and below. An online version for reading emails and webpages. Develop an ideogram for every word in English and display that to see how using pictures impacts speed reading / recall of things you’ve read. Beyond these ideas, there are obviously a bunch of technical things to do with tidying the code and UI, perhaps adding a buffer for faster seeking etc. Perhaps a find facility.


You’re free to use both BookReader and BookReaderDeployer for your own personal use. If you plan to actually sell products or make any money directly or indirectly through the use of any of this code, you need to receive my permission first. Contact me at kybernetikos @ and we’ll discuss it. If you want the source code to play around with, the only reason I haven’t released it already is because I’d have to tidy it a little and javadoc it. If there are people out there interested in helping me improve it, I’d be more than happy to do it, just contact me.

If you redistribute these files or anything derived from these files, you also need to include this statement unaltered


You can download a zip file containing the Jar and preverified binaries from here.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s