I am going to spare you the suspense and tell you the result up front: the Pomodoro app I kept using after three months is pomo, a command-line tool of about three hundred lines of Go that I configured once in a ~/.config/pomo/config.yaml and have not touched since. It is not the prettiest, the most marketed, or the one most recommended in productivity Twitter. It just stays out of my way, and after fourteen alternatives, that turned out to be the only feature that actually mattered.
This essay is the long version of that one-sentence answer — why I tested so many, what each one got right and wrong, and the criteria that survived three months of real use rather than thirty seconds of a screenshot tour.
How I ran the test
I am a software engineer working out of a small home setup in Tokyo, splitting time between a Linux laptop, a macOS desktop, and an iPhone. I do four to six hours of focused work per day in roughly twenty-five minute blocks, with longer five-to-fifteen minute breaks between them. For the test, I committed to using one app per week for two weeks, then a second pass of two weeks with the top six finalists. The total span was about thirteen weeks; the methodology was deliberately informal because most published Pomodoro app reviews are written by people who have used each app for fifteen minutes.
The fourteen apps I tested, in alphabetical order:
- Be Focused (iOS, macOS)
- Engross (Android)
- Flat Tomato (iOS)
- Flow (macOS)
- Focus Keeper (iOS, Android)
- Focus To-Do (cross-platform)
- Forest (iOS, Android, browser extension)
- Marinara Timer (web)
- Pomodone (macOS, Windows, web)
- pomo (Linux/macOS CLI, written in Go)
- Pomofocus (web)
- Session (macOS)
- Tide (iOS, Android)
- Toggl Track with manual 25-minute timer (cross-platform)
I evaluated each against five criteria I established before starting, and which I kept refining. The criteria, in order of importance, were:
- Friction to start a session. Less than five seconds from “I want to focus” to the timer running, no exceptions. Anything more and I would procrastinate via app launching.
- Quiet during the session. No notifications, no popups, no animations that move while the timer is running. The app should disappear once the timer starts.
- Honest break enforcement. When the break ends, the app should make it clear that the break is over without escalating into hostile notifications.
- Cross-device continuity. If I start a session on the laptop and walk to the kitchen, the timer should still tick down on the phone or at least be inferrable from the wall clock.
- Doesn’t try to be a project management tool. No tags, no projects, no labels, no statistics dashboard demanding I open it daily to feel guilty.
What I learned about each
Forest is by far the most-recommended Pomodoro app in any list-style review you will find online. It is also the first one I dropped. The tree-growing animation is delightful for about a week, then it becomes another thing demanding emotional engagement from me during the part of my day when I have the least emotional bandwidth. The gamification gradient is wrong: the moment I had a complicated work day with several broken sessions, the killed trees made me feel worse about the work rather than the work itself. Failed criterion 2.
Focus Keeper and Be Focused are nearly identical in feel — clean iOS-native designs, configurable session lengths, decent statistics. Both pushed me toward optional paid upgrades that I did not need. The free tier of Be Focused has more friction than I want at session start (it shows an ad if you go too many sessions without paying). Failed criterion 1.
Forest Pro, Flow, and Pomofocus are all good apps that I would happily recommend to a non-CLI user. Flow is particularly clean and Apple-native on macOS, has a menu-bar mode that stays unobtrusive, and is one of the few apps in this set that does not try to become a project management tool. If I were not a terminal person, Flow would have won.
Tide and Engross are positioned as “deep work + sound + Pomodoro” all-in-one apps. The bundled white noise and lofi tracks felt redundant given that I already run a lofi stream in the background. The Pomodoro feature in both is competent but secondary to their main music-app identity. Better suited for someone who wants one app instead of three.
Pomodone integrates with Trello, Asana, Todoist, and a dozen other task managers. If you are already a heavy Trello/Asana user, this is probably the right pick because it cuts a step out of your workflow. I am not — my task list lives in a plain text file — so the integrations were dead weight.
Marinara Timer is a free web-based timer that does nothing except count down. No login, no account, no analytics, no notifications beyond a browser alert. Of all the GUI apps tested it came closest to my eventual CLI winner: minimal, fast, browser-native. I used it as my second-choice during weeks when I was on a borrowed machine without my dotfiles.
Toggl Track is not a Pomodoro app — it is a time-tracking app — but I included it because some power users build a Pomodoro workflow on top of its manual timer. The setup overhead is high (you need to create the right projects, get the keyboard shortcuts right, etc.), and once it is configured you get richer reporting than any pure Pomodoro tool offers. I dropped it because the reporting started becoming something I would open and feel obliged to study, which is exactly the failure mode of criterion 5.
Session for macOS is the polished pick in this list. It has gentle animations, a thoughtful break-reminders UX, and integrates with Apple Focus modes. It is also $5 or so as a one-time purchase, which is fair. The reason I did not keep it is the same reason I did not keep Flow: I do most of my deep work on Linux, and a macOS-only app means I have to keep two systems in sync, which I will not.
Why pomo won
pomo is a small command-line tool. There is no UI. You run pomo start work and it ticks down silently in your terminal. You can run pomo status from another shell to check how much time is left. When the session ends, it prints a short message in the terminal and optionally plays a system bell — that is the entire feedback loop. It saves session history to a SQLite file that lives in your config directory, which you can query if you want to know how much focused work you did this week, but it never prompts you to look.
The reasons it stuck are exactly the criteria I started with:
- Zero friction: I have
pomo startaliased to a single-character shell command. Total elapsed time from “want to focus” to timer running is about one second. - Silent during the session: the only thing pomo does once started is decrement an integer. No window, no animation, no notification, no anything.
- Honest break enforcement: the terminal bell at end-of-session is direct and not customisable into anything more annoying than a single beep.
- Cross-device continuity: I never solved this properly. When I walk away from the laptop, the timer keeps ticking but I cannot see it. I solved this socially: my work blocks are predictable enough that I know roughly when a session ends without checking a screen. This is a downside compared to a phone-app workflow.
- Doesn’t try to be a project management tool: pomo can tag sessions if you want, but the tags are optional and nothing in the tool prompts you to use them.
I also use pomo’s status command in my Tmux status line, so the bottom of every shell shows me a small countdown if I want to check. This is the only “UI” affordance I have added, and it took ten lines of Tmux config.
The honest caveats
CLI Pomodoro apps are not for everyone. They presuppose that you are already a terminal user, that you have a dotfiles repo, and that you do not mind editing configuration files. If “configure a YAML file” sounds like work rather than relief, none of this applies to you. In that case my second pick is Marinara Timer (free, browser, zero account) for casual users, or Flow for serious macOS users.
A second caveat: Pomodoro is not a universal productivity solution. The 25/5 split helps some people on some tasks; it actively hurts others, particularly on tasks that require thirty-plus minute warm-up phases. I have written separately about Pomodoro variations and about the cases where Pomodoro actively sabotages deep work. If you are a developer doing real engineering work, you should be honest with yourself about whether the timer is helping or whether you are using it as a procrastination ritual.
The final caveat is the meta-observation: I spent three months testing fourteen Pomodoro apps. That is unambiguously procrastination-shaped behaviour. Most of the productivity I got out of the test came not from finding a better timer, but from the period of careful self-observation about when I actually focus, when I actually break, and what kind of stimulus environments support both. The app turned out to be the smallest variable. If you are tempted to start the same test, consider doing one week with whatever timer you already have, and then asking yourself whether you actually need a different one.
The setup I am using today
For completeness, here is what my actual current setup looks like:
- pomo (Go CLI, ~/.config/pomo/config.yaml)
- Tmux status-line showing pomo remaining
- Browser tab pinned to lofistudy247.com running the 24/7 lofi stream
- Phone in another room, on silent, charging
- A single text file open in Neovim with the current task at the top
That is the entire focus stack. No tags, no projects, no statistics dashboard, no integrations. After three months of testing, the lesson is that the right Pomodoro app for most engineers is the one that vanishes once started — and the engineer’s job is to do the work, not to admire the timer.
If you want to try pomo, its source lives on GitHub under kevinschoon/pomo. There are also lightweight community forks adding small features (tray icons, history exports, etc.); use whichever fits your shell. — Marco




