TLDR: A Pomodoro timer is a countdown wrapped around four numbers: the focus length, the short break, the long break, and how many focus blocks come before a long break. Describe those and the transitions between them, ask AI for one self-contained HTML file with a sound alert and a session counter, and you get a working focus timer in one conversation. Use it for a day, give a few specific tuning notes (auto-start the next block, count down in the tab title, track real elapsed time so it does not drift), then publish the file to VisiblePage for a link you can open on your phone, your laptop, and a shared screen.
You do not need another Pomodoro app. You can build a Pomodoro timer with AI in about the time it takes to read the reviews of the ones in the app store, and the one you build will do exactly what you want, with no account, no ads, and no nag screen telling you to upgrade.
The reason this works so well is that a Pomodoro timer is one of the cleanest little programs there is. It is a countdown and a handful of states. AI models write countdowns and state machines in their sleep. The whole job on your side is describing the method clearly and then using the thing for real so you know what to fix.
This guide covers what actually makes a Pomodoro timer good, the prompt that produces a working one, the small tuning passes that turn a demo into something you open every morning, and how to get it out of the chat and onto a link you can use anywhere.
What a Pomodoro timer really is
The Pomodoro Technique is simple on purpose. You work in focused blocks, you rest in short breaks, and after a few rounds you take a longer break. Named after a tomato-shaped kitchen timer, the whole method comes down to four numbers:
- Focus length. The classic is 25 minutes. Deep-work people often use 50.
- Short break. Usually 5 minutes. Long enough to stand up, short enough not to lose the thread.
- Long break. Usually 15 to 30 minutes, taken after a set of focus blocks.
- Blocks before a long break. Classically four.
That is it. The timer counts down a focus block, chimes, counts down a break, chimes, and keeps a tally so it knows when to hand you the long break. If you describe it to AI as that loop of states rather than “a 25 minute timer,” you get a real Pomodoro timer instead of a plain stopwatch.
What makes a Pomodoro timer one you actually keep
Plenty of timers technically work and still get abandoned by lunch. The difference is a short list of details that remove friction. Put these in your first prompt and you skip three rounds of revisions:
- A clear state label. You should always know at a glance whether you are in a focus block or a break. Color the whole screen, not just a word.
- A real sound, inlined. A chime when the block ends is the entire point. It has to be built into the file so it works offline, and it cannot be so harsh that you flinch.
- A session counter. Little dots or a “3 of 4” readout tell you where you are in the set and give a small hit of progress.
- Auto-start, or at least one obvious button. Having to find and click a button between every single block is how people quit. Auto-starting the break, with a pause always available, keeps you in flow.
- Accurate time when the tab is hidden. This is the one that quietly ruins homemade timers, and we will fix it in the prompt below.
The prompt that builds a working timer
“Make me a Pomodoro timer” gives you a coin flip. What works is describing the states, the four numbers, and the small quality details, then asking for the one output format that travels everywhere: a single self-contained file.
Here is a full prompt you can copy and paste into Claude, ChatGPT, Gemini, or any capable model:
Build me a complete Pomodoro timer as a single web page.
The method is a loop of states:
- Focus block: 25 minutes
- Short break: 5 minutes
- Long break: 15 minutes, taken after every 4 focus blocks
Then the loop repeats.
Behavior:
- A big, readable countdown in the center (MM:SS).
- The whole background changes color by state: a calm deep tone for
focus, a lighter restful tone for breaks. Always show the state name.
- A row of 4 dots that fill in as focus blocks complete, so I can see
where I am in the set.
- Play a soft chime when a block ends, with the sound generated in
code (WebAudio) so there are no external files.
- Buttons: start/pause, reset, and skip to the next block.
- Auto-start the next block, but keep pause always available.
Accuracy:
- Track elapsed time against a real timestamp (Date.now), not by
counting ticks, so it stays correct if the tab is in the background.
- Update the page title to show the countdown and current state, so I
can read it from the browser tab when the page is hidden.
Let me edit the three lengths and the blocks-before-long-break, and
remember my settings with localStorage.
Deliver it as ONE complete, self-contained HTML file with all CSS and
JavaScript inlined. No external libraries, no external fonts, no
external audio files. Make it look clean and calm, and work on a phone.Every section of that prompt is pulling weight:
- The method as states is what makes it a Pomodoro timer and not a stopwatch. Naming the loop and the four numbers gives the model the whole algorithm.
- Color by state is the fastest way to always know where you are. It also makes the timer look intentional instead of generic. The same art-direction trick runs through the prompt patterns that make any AI page look designed.
- The chime, generated in code, keeps the whole thing in one file. Ask for WebAudio and the sound travels with the page instead of breaking when you move it.
- The timestamp detail is the pro move. Browsers throttle timers in background tabs, so a timer that counts ticks will drift and be wrong by the time you look back. Measuring against
Date.now()keeps it honest. - One self-contained file is what makes the result portable: openable anywhere, publishable in one paste, nothing to break in transit. If the model wanders off this, there is a whole guide to getting self-contained HTML out of AI.
Use it for a day, then tune
The first build will work and feel 90 percent right. The last 10 percent is what decides whether you still open it next week, and this is where AI shines, because a change that would be a chore to code by hand is one plain-language message.
Run a few real sessions, then send short, specific notes, one idea at a time:
Three small fixes:
1. The chime is too quiet under music. Make it a two-note rising tone,
a touch louder, and play it twice at the end of a focus block.
2. When a break starts, show a one-line suggestion like "stand up and
look out a window." Rotate through a short list.
3. Add a keyboard shortcut: spacebar toggles start and pause.Treat it like giving notes to a developer, not complaining to a customer. “Make it better” gets you nothing. “Auto-focus the start button and add a subtle pulse to the countdown in the last 10 seconds” gets you exactly that. Keep each round short, test by actually using it, and repeat. The same rhythm works for iterating on any AI-generated page.
A few upgrades worth asking for once the core feels good: a task label so the timer shows what you are focusing on, a tiny log of completed blocks for the day, a toggle for a longer 50 and 10 schedule, and a dark theme that follows your system setting. Add them one at a time so you can tell what changed.
Get it out of the chat and onto a link
Here is where most AI-built tools quietly die. The timer runs perfectly in the chat preview, and it never goes anywhere, because the chat is private and a file sitting in your downloads folder is not something you reach for at 9am.
Because the timer is a single self-contained file, publishing it is a paste. Drop the HTML into VisiblePage and you get a live URL on the spot, served fast from the edge, with every button, the chime, and the countdown fully working, because you are sharing the real running page, not a screenshot of it. That link opens on your phone on the desk, your laptop while you work, and a second monitor you glance at, all pointing at the same timer with nothing to install.
It also means you can share it. Send the link to a study group, a coworking Slack, or one focus buddy, and everyone runs the identical timer. Keep it private or password-protected while you are still tuning, then flip it public when it is ready. And when you add that dark theme or a nicer chime, you re-publish to the same URL, so there is never a second version of the timer floating around and everyone always has the latest one.
Where your timer could live: the options
| Option | Works offline | Interactivity intact | Opens on any device | Shareable |
|---|---|---|---|---|
| A screenshot of the timer | No | No, it is a picture | Yes, but it does nothing | Pointless |
| The HTML file in your downloads | Yes, on that one machine | Yes | No, only where the file is | Hard, people must download and open it |
| A full web host and deploy | Yes | Yes | Yes | Yes, after a build and a setup |
| Published as a link on VisiblePage | Yes | Yes | Yes | Yes, paste once, send the link |
For a single-file tool like a timer, the last row is the whole point: no toolchain, no build step, no server. One paste turns the file into something you and anyone you send it to can just open and use.
Try it now: Publish your AI-built Pomodoro timer with VisiblePage and get a live link in seconds.
Frequently asked questions
Can AI build a working Pomodoro timer?
Yes. A Pomodoro timer is a countdown, a short list of states (focus, short break, long break), and a sound alert, and AI writes all three reliably in one conversation. The only things you must specify are the four numbers of the method: the focus length, the short break, the long break, and how many focus blocks come before a long break. Ask for a single self-contained HTML file and you get a timer that runs in any browser with no install.
What is the standard Pomodoro timing?
The classic technique is 25 minutes of focus, then a 5 minute short break, repeated four times, followed by a longer 15 to 30 minute break. Those numbers are a starting point, not a rule. Many people prefer 50 and 10 for deep work. Build it with the standard timing, then ask the AI to make the lengths editable so you can find your own rhythm.
Will the timer keep running if I switch tabs?
It will if you ask for it. Browsers slow down timers in background tabs, so tell the AI to track elapsed time against a real timestamp rather than counting ticks, and to update the page title so the countdown shows in the tab even when it is hidden. Spell this out in your prompt and the timer stays accurate when you look away.
Can I share my Pomodoro timer with my team?
Yes. Once it is a single HTML file, publish it to VisiblePage and you get one link that opens the working timer on any device. Send it to a study group, a coworking channel, or a focus buddy, and everyone runs the same timer. Update the file and re-publish to the same link, so there is never a second version floating around.
Do I need to know how to code to build one?
No. You describe the timer in plain language, the AI writes the HTML, CSS, and JavaScript, and you test it by using it. If something feels off you describe the fix in words, not code. Publishing it as a live link is a paste, so the whole path from idea to working timer never requires opening a code editor.
The short version
A Pomodoro timer is the ideal first thing to build with AI: small, genuinely useful, and done in one conversation. Describe it as a loop of states with four numbers, ask for one self-contained HTML file with a WebAudio chime, a session counter, and timestamp-based timing so it does not drift. Use it for a day, send a few short tuning notes, then publish the file to a link you can open on your phone, your laptop, and a shared screen. A timer built exactly the way you like it, and not one line of code written by hand.