Solve a few quick math problems before distracting sites open.
SolveFirst is a free, open-source browser extension for Chrome, Zen, Firefox and other Chromium/Firefox browsers. When you open a site on your list (X/Twitter and YouTube by default), a full-page gate covers it until you answer a few multiple-choice math problems. Then that site is unlocked for its cooldown, and the gate comes back when time is up, even if you're still there.
- Pick your own sites, each with its own independent timer
- Choose how many problems, how many answer choices, and the difficulty
- Fresh random numbers every time, generated locally (no AI, no servers, no tracking)
- Reloading the page brings the gate back (you can turn that off)
- Video and audio are paused and the page can't be scrolled or clicked while the gate is up
Download the latest files from the Releases page.
- Download
solvefirst-<version>-chrome.zipand unzip it (or clone this repo). - Open
chrome://extensions(Edge:edge://extensions). - Turn on Developer mode (top right).
- Click Load unpacked and pick the unzipped folder (the one with
manifest.json). - Open x.com or youtube.com. The gate should appear.
Keep the folder where it is; Chrome loads the extension from it.
These browsers allow unsigned add-ons:
- Open
about:config, searchxpinstall.signatures.required, set it to false. - Download
solvefirst-<version>-firefox.xpi. - Open
about:addons→ gear icon ⚙ → Install Add-on From File… → pick the.xpi→ Add. - If asked, allow it to access your data on all websites (needed to show the gate on your sites).
Regular Firefox only keeps signed add-ons. For now you can load it until the next restart:
- Open
about:debugging#/runtime/this-firefox. - Load Temporary Add-on… → pick
manifest.json(from the unzipped folder) or the.xpi.
Click the SolveFirst icon in the toolbar (pin it from the puzzle-piece menu), or open the extension's Options/Preferences. Changes save automatically and apply right away, even on tabs that are already open.
| Setting | Default | What it does |
|---|---|---|
| Gated sites | x.com, twitter.com and youtube.com, youtu.be |
One row per site. A row can hold several domains that share one timer. Subdomains count too. Paste a full URL and it gets cleaned up to the domain. Uncheck to pause a site, × to remove it. |
| Cooldown (min) | 10 | Per site. How long that site stays unlocked after you solve the gate. |
| Problems per session | 5 | 1–20 |
| Answer choices | 4 | 2–6 |
| Difficulty | Medium | Easy / Medium / Hard number ranges |
| Show the gate again on every reload / new tab | On | On: the unlock lives only in the page you solved it on; reloading or opening a new tab shows the gate again. Off: solving once unlocks that site in every tab until its timer ends. |
| Problem mix | add 2, subtract 2, multiply 3, percent 3, order of ops 3 | How often each problem type appears. 0 turns a type off. |
Every problem is created on the spot by a small random-number generator (Math.random) in
src/content.js: pick a type, pick random numbers in the difficulty's range,
compute the answer, then add believable wrong answers (off by one or ten, (a+b)×c instead of
a+b×c, a times-table row off, double or half for percents) and shuffle. A wrong pick turns red
and you stay on that problem. Keyboard: A–F or 1–6.
No data leaves your browser. See PRIVACY.md. The extension needs access to all sites only so it can gate the ones you add; on every other site it does nothing.
src/settings.js defaults, difficulty presets, domain matching (shared)
src/content.js the gate, problem generator, per-site timers
src/options.* settings page (also the toolbar popup)
icons/ icons (regenerate with scripts/make_icons.py, needs Pillow)
scripts/build.sh builds dist/solvefirst-<ver>-chrome.zip and -firefox.xpi
Load the repo folder unpacked, edit, then hit reload on the extension card.

