Earleaf

An audiobook player that syncs with your physical books

Visit Website
March 19, 2026 Introducing Earleaf

After 15 years on iPhone, I switched to Android and immediately missed my audiobook app. Clean design, great collections, it just worked. I went looking for something similar on Android and came up short. The main option has been around since like 2011 and it looks like it. Everything else was ad-supported or missing half the features I wanted.

So I built one. Earleaf. Plays locally stored audiobooks on Android. No account, no cloud, no tracking. Point it at a folder, done.

Featurewise, all the basics are covered—sleep timer, chapter navigation, skip intervals, background playback, lock screen controls, Android Auto. I'll skip to the stuff that's actually interesting.

Page Sync
So when I first mentioned this project to a friend, Spotify had just shipped Page Match. He goes: "you know, if you add that, it'd be my go-to app." I laughed. Then I tried it and it turned out to be way more doable than expected.

You take a picture of a page from the physical book (or e-book) and Earleaf finds that spot in the audio. The whole thing runs on-device, nothing leaves your phone.

How it works? First time you use it, a ~40MB speech model downloads. One-time thing. Then the app transcribes your audiobook in the background, fully offline. Every word gets a millisecond timestamp, all stored in an FTS4 index.

Take a photo, ML Kit does OCR on it, the text gets normalized and searched against the index. Top candidates go through fuzzy matching—Levenshtein distance, 70% similarity threshold. You need that tolerance because both the OCR and the speech recognition make mistakes, so you've got errors on both sides. Whole thing takes about two seconds.

This feature gave me real headaches during development though. For a long while it was landing about 30 seconds before the right spot and I could not figure out why. Turned out: rounding error in audio resampling. The speech recognition model wants 16kHz, audiobooks are usually 44.1kHz, and tiny per-sample errors accumulate over a 10+ hour book. Fun.

Nested collections

Collections inside collections, to whatever depth you want. I'm genuinely surprised none of the other players do this? If you've got a big library you probably don't want everything in one flat list.

Listen-through tracking
Every time you start a book, that's a new listen-through with its own position, progress, notes. Abandon something halfway, come back months later, start fresh? New listen-through. Old one still there. Decide you want to go back to where you were on your first attempt? Works fine.

Statistics
Streaks, a day-by-hour heatmap, personal records, speed breakdowns, session history. All local. For the kind of person who wants to know they've listened 47 hours this month at 1.35x average. You know who you are.

Per-book playback speed
Each book stores its own speed. But here's the thing I actually like about it: every time display adjusts for speed. A 10-hour book at 1.5x shows 6:40 remaining, not 10:00. Minor thing. Until you use an app that doesn't do this, and then it bothers you forever.

Privacy
Earleaf doesn't use the internet. Two exceptions, both optional: cover art search (you trigger it yourself, Google Images) and that one-time Vosk model download. No accounts. No analytics. No telemetry. Data stays on your phone.

Not really a philosophical choice. An audiobook player just doesn't need to be online.

Get it

One-time purchase on Google Play. No ads, no subscriptions, no in-app purchases.

Get Earleaf on Google Play.

If you happen to get the app and you like it, a review would mean the world to me. For any questions or feedback, you can reach me at arcadianalpaca@gmail.com. Cheers!

Comment

About

I switched from iPhone to Android after 15 years and couldn't find an audiobook player I liked for local files. The main option on Android has been around since 2011 and it shows. So I built one.