Focus Exe Get the extension
Manifest V3 · v1.3.0 · zero data collection

Focus Exe

A focus timer that appears when you summon it and disappears when you don't. 25/5 focus and recovery cycles, a countdown to your deadline, brown noise and a 60 BPM neuro-metronome — on any site, in any tab.

Chrome 102+ Edge Brave Opera Firefox 115+ Safari 16+ ~33 KB download
0 9 6 2 3 4 8 1 2 2 5 : 0 0

No accounts

Nothing to sign up for. Your settings live in the extension's own storage.

No tracking

No analytics, no telemetry, no network calls at all — you can read the source.

Any website

Summon it on the page you're studying. It holds no standing access to any site.

Works offline

Timers and audio are generated locally, so nothing depends on a server.

Features

Everything a study session needs, nothing it doesn't

No runtime dependencies, no framework, no build-time magic — one small widget that stays out of the way.

25 / 5 focus cycles

Focus for 25 minutes, a 5-minute recovery break, then it flips back automatically and counts the session. Pause, reset or switch early whenever you like.

Deadline countdown

A days / hours / minutes / seconds clock to your exam or deadline, pinned in the widget or popped out in the compact bar.

Brown noise

A soft, low-frequency noise bed generated with the Web Audio API — no looping audio file, no bandwidth, no external request.

60 BPM metronome

A pulsing tick that lines up with a calm breathing rate, scheduled on the audio clock so it never drifts or jitters.

Confirm before you break focus

Starting, pausing, resetting and switching modes all ask first, in the widget or in the compact bar, so a stray click can't cost you a session.

Compact mode

Minimise to a slim bar that keeps the clock, and it collapses by itself the moment you click anywhere else on the page.

How it works

Three steps, then it gets out of the way

Summon it

Click the extension icon, or press Alt+Shift+F. The widget is injected into the current tab only.

Run a session

Confirm the start, put your phone down, and let the flip clock and the metronome carry the session. The audio keeps playing even with the tab in the background.

Dismiss it

Press the shortcut again or click the icon. The widget is removed from the page, audio stops, and only your settings are kept.

Download & install

Pick your browser

One codebase, six builds. Each download is the unsigned package — loading it takes a minute and needs no developer account.

Chrome, Edge, Brave, Opera

Chromium builds are identical. Unzip it, then load the folder unpacked.

chrome://extensions → Developer mode → Load unpacked
  → select the unzipped chrome folder

Firefox

Loads as a temporary add-on, which is perfect for trying it out. Sign the zip with web-ext to install it permanently.

about:debugging#/runtime/this-firefox
  → Load Temporary Add-on → pick manifest.json

Safari

macOS only. Xcode converts the build into an app extension you can enable in Safari's settings.

xcrun safari-web-extension-converter dist/safari \\
  --macos-only --no-open

Everyone else

Chromium 102+, Firefox 115+ and Safari 16+ are the minimums. The build pipeline is in the repository if you want to compile it yourself.

git clone https://github.com/vallimuthuraja-git/focus-exe.git
  && cd focus-exe && npm install && npm run pack

Signed store listings are on the roadmap; until then these self-hosted packages are the supported way to install it. Keep the shortcut handy — you can rebind Alt+Shift+F in your browser's extension shortcut settings.

Privacy & security

Least privilege, by construction

What the extension asks for

  • activeTab — reach the current tab, only after you invoke the extension.
  • scripting — inject the widget into that one tab when you summon it.
  • storage — keep your timer state and audio preferences.
  • notifications — tell you when a session or break ends.

No host permissions, no <all_urls>, no browsing history, no bookmarks, no clipboard, no downloads, no cookies.

What it does with your data

  • Nothing leaves your machine: the package makes no network requests at all.
  • No analytics, no telemetry, no crash reporting, no remote config.
  • No remote code: everything needed is inside the package, no eval.
  • Your settings live in the extension's own storage, not in the page's localStorage, so sites cannot read them.

The UI runs in a closed shadow root in the extension's isolated world. Pages cannot read it, style it, script it, or receive anything from it.

Messages between the widget and the background worker are checked against this extension's own ID, and every value read back from storage is re-validated and clamped before it can reach the interface.

Roadmap

What's coming

Planned

  • Editable focus / break lengths and deadline inside the settings panel
  • Session history and a simple daily focus chart
  • Per-site auto-open list for people who want the widget everywhere
  • Signed Chrome Web Store and Firefox AMO listings

Under consideration

  • Custom sound packs and intensity levels
  • Keyboard-first control without touching the mouse
  • Multiple named deadlines (exam, assignment, mock test)
  • Statistics export so your data stays yours

Have an idea? Open an issue on the repository — feature requests genuinely shape the next release.

Changelog

Every release, in the open

A condensed copy of the repository's CHANGELOG.md — every release ships with its entry, and the full detail lives there.

Support

Built by one person, in the open

Focus Exe is free, has no ads and no upsells, and will stay that way. If it helps you sit down and actually study, a coffee keeps the late-night releases coming.

Buy me a coffee

One-off or monthly. Keeps the store listings, the Safari build and the feature queue moving.

Support on Buy Me a Coffee

GitHub Sponsors

Recurring support for a developer, cancel whenever you like.

Sponsor on GitHub

UPI & other

Prefer a direct transfer? A UPI ID or PayPal link goes straight to the developer.

Prefer not to donate? Starring the repository, reporting a bug or sending a feature idea helps just as much.

FAQ

Common questions

Does it work on every website?

Yes. It has no host permissions at all. When you click the icon (or press the shortcut) the browser temporarily grants access to that one tab, the widget is injected there, and access ends when you dismiss it.

Will the page be able to see or break the widget?

No. The interface is built inside a closed shadow root in the extension's isolated world, so the page has no handle on it. The page's stylesheet cannot reach it either, which is why the widget looks the same on every site.

What happens if I close the tab mid-session?

The timer is kept as a timestamp, not a countdown loop. Reopen the page and summon the widget: if the session finished while you were away it is settled automatically and the counter updated, without firing a stale notification.

Why is there no sound until I click something?

Every browser blocks audio until the page has been interacted with. The first click or keypress inside the widget unlocks the audio context, which is why the toggles ask for a click before you hear anything.

Can I change the 25 minutes, or the deadline date?

They live in src/config.ts — edit and run npm run build. Making them editable in the settings panel is next on the roadmap.

Is it safe to install an unsigned build?

It is the same code that would be submitted for review, and the whole source is in the repository so you can read it before installing. Signed store builds are planned; until then this is the supported install path.