I will spare you the suspense and give you the result up front: the Pomodoro app I was still using after three months is pomo, a command-line tool of maybe 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 option, not the most marketed, and not the one that shows up at the top of any listicle. It just stays out of my way, and after fourteen alternatives, staying out of my way turned out to be the only feature that actually mattered.
This post is the long version of that one-sentence answer — why I tested so many, what each one got right and wrong, and which criteria survived three months of real use rather than thirty seconds of a screenshot tour.
How I ran the test
Some context on me, because it shapes everything below. I write software from a small setup in Setagaya, splitting my day between a Linux laptop, a macOS desktop, and an iPhone. On a normal day I get four to six hours of focused work in roughly twenty-five minute blocks with five-to-fifteen minute breaks between them. I have a habit of measuring things that borders on the compulsive — there is a shelf above my desk with seven notebooks on it, and notebook seven is where this whole experiment lives. One app per week for the first pass, then a second two-week pass with the six finalists, about thirteen weeks in total. The methodology was deliberately informal, because my honest impression is that most published Pomodoro app reviews are written by people who used each app for fifteen minutes and never came back.
The fourteen candidates, so you know what field we are talking about: Be Focused and Flat Tomato on iOS, Engross on Android, Flow and Session on macOS, Focus Keeper and Tide on both mobile platforms, Focus To-Do and Pomodone as the cross-platform heavyweights, Forest with its browser extension, Marinara Timer and Pomofocus in the browser, Toggl Track wired up as a manual 25-minute timer, and pomo on the command line.
Before starting I wrote five criteria in the notebook, in order of importance, and I kept refining them as the weeks went on. The first was friction to start: less than five seconds from “I want to focus” to the timer running, no exceptions, because anything slower and I procrastinate via app launching. The second was silence during the session — no notifications, no popups, nothing animating while the timer runs. The third was honest break enforcement: when the break ends, tell me clearly, without escalating into hostile notifications. The fourth was cross-device continuity, meaning if I start a session on the laptop and walk to the kitchen, I should still be able to know where the timer stands. And the fifth, which I underestimated at first and which ended up eliminating half the field: the app must not try to become a project management tool. No tags demanding attention, no projects, no statistics dashboard asking me to open it daily and feel guilty.
What three months taught me about each
Forest is by far the most-recommended Pomodoro app in any list-style review you will find online. It was also the first one I dropped. The tree-growing animation is delightful for about a week, and then it becomes another thing demanding emotional engagement from me during exactly the part of my day when I have the least emotional bandwidth to give. The gamification gradient points the wrong way: the week I had a genuinely messy sprint at work, with several broken sessions, the little graveyard of killed trees made me feel worse about the work than the work itself did. That failed my silence criterion, just in a subtler register than a popup.
Focus Keeper and Be Focused feel nearly identical in daily use — clean iOS-native design, configurable session lengths, decent statistics. Both kept nudging me toward paid upgrades I did not need, and the free tier of Be Focused shows an ad if you run too many sessions without paying, which put it over my five-second friction budget at the exact moment friction matters most. Flat Tomato sits in the same family: pleasant, iOS-only, a little more opinionated about strict mode, and nothing about it survived contact with my Linux-first workday.
Flow and Pomofocus are the two I would happily recommend to someone who does not live in a terminal. Flow in particular is clean and properly Apple-native on macOS, has a menu-bar mode that stays genuinely unobtrusive, and is one of the very few apps in this set that resists the urge to become a task manager. If I were not a terminal person, Flow would have won this whole thing, and I want to be fair about that.
Tide and Engross position themselves as all-in-one deep work apps — timer plus white noise plus bundled lofi. The Pomodoro feature in both is competent but clearly secondary to their identity as ambient-sound apps, and for me the bundled audio was redundant, since I already keep a browser tab pinned to a 24/7 lofi stream. If you want one app instead of three, they make sense. I wanted the opposite.
Pomodone integrates with Trello, Asana, Todoist, and a dozen other task managers, and if you are already deep in one of those ecosystems it is probably the right pick, because it removes a step from your existing workflow instead of adding one. My task list is a plain text file, so every one of those integrations was dead weight for me. Focus To-Do has the same ambition from the other direction — it is a task manager that grew a timer — and it tripped my fifth criterion within days.
Marinara Timer deserves a special mention. It is a free web timer that does nothing except count down: no login, no account, no analytics, nothing beyond a browser alert. Of all the GUI options it came closest to my eventual winner, and it became my fallback during the weeks I was on a borrowed machine without my dotfiles. Toggl Track is the odd one out because it is not a Pomodoro app at all — it is a time tracker some power users bend into a Pomodoro workflow. The setup overhead is real, and once configured it produces richer reporting than any pure Pomodoro tool. That reporting is exactly why I dropped it. I caught myself opening the dashboard to study my own charts, which is my fifth criterion failing in slow motion.
Session, finally, is the polished pick of the bunch: gentle animations, a thoughtful break UX, integration with Apple Focus modes, and a fair one-time price of around five dollars. I did not keep it for the same reason I did not keep Flow. Most of my deep work happens on Linux, and a macOS-only timer means maintaining two systems in parallel, which I refuse to do.
Why pomo won
pomo has no UI. You type pomo start work and it ticks down silently in your terminal; from another shell, pomo status tells you how much time is left. When the session ends it prints a short message and optionally rings the system bell, and that is the entire feedback loop. History goes into a SQLite file in your config directory, which you can query when you genuinely want to know how much focused work you did this week — but the tool never once prompts you to look, and that restraint is the whole point.
Measured against my five criteria, here is how it landed. Friction is effectively zero: I aliased pomo start to a single character, so the elapsed time from wanting to focus to a running timer is about one second. During the session, the only thing the program does is decrement an integer — no window, no animation, nothing. The end-of-session bell is a single beep that cannot be customised into anything more annoying, which I consider a feature. Sessions can carry tags if you want them, but nothing pushes you toward using them, so the project-management failure mode simply is not available.
The one criterion where it honestly loses is cross-device continuity, and I want to be straight about that because I promised myself this experiment would record failures too. When I walk away from the laptop the timer keeps running but I cannot see it. I never solved this technically; I solved it socially, in that my blocks are regular enough that I know roughly when one ends without a screen. Compared to a phone-based workflow, that is a real downside. My only added affordance is ten lines of Tmux config that put pomo’s remaining time in my status line, so the bottom of every shell shows a small countdown when I want one.
The honest caveats
CLI Pomodoro tools are not for everyone. They presuppose you already live in a terminal, keep a dotfiles repo, and find “configure a YAML file” relaxing rather than laborious. If that is not you, my second pick is Marinara Timer for casual use — free, browser-based, zero account — or Flow if you are a serious macOS user.
A second caveat: the technique itself is not universal. The 25/5 split helps some people on some tasks and actively hurts others, particularly work with a thirty-plus minute warm-up phase. I have written separately about Pomodoro variations and about the cases where Pomodoro actively sabotages deep work, and if you do real engineering work you should be honest with yourself about whether the timer helps or whether it has become a procrastination ritual.
Which brings me to the meta-observation I keep circling back to in the notebook: I spent three months testing fourteen timer apps, and that is unambiguously procrastination-shaped behaviour. I have done this before, in a different costume — back at Waseda I stayed in a study group for a full semester because I was “learning from it,” while quietly losing forty-plus minutes per session to social drift, and it took actually timing the drift to admit it and leave. The genuine productivity gain from this experiment came not from finding a better timer but from thirteen weeks of paying attention to when I actually focus, when I actually break, and what environments support both. The app was the smallest variable in the system. If you are tempted to run the same test, my honest advice is to spend one week with whatever timer you already have and then ask whether you need a different one at all.
The setup I am using today
For completeness, my current focus stack is small enough to describe in one breath: pomo configured once in its YAML file, the Tmux status line showing time remaining, a browser tab pinned to lofistudy247.com running the 24/7 stream, my phone in another room on silent, and a single text file open in Neovim with the current task at the top. No tags, no projects, no dashboard, no integrations. Three months of testing, and the lesson is that the right Pomodoro app for most engineers is the one that vanishes once started — the engineer’s job is to do the work, not to admire the timer.
If you want to try pomo, the source lives on GitHub under kevinschoon/pomo, and there are lightweight community forks adding small conveniences like tray icons and history exports. Use whichever fits your shell. — Marco



