Tools / 2026 / Live in the browser
ChoreShare
A fair chore rota for a shared house or a family. Add who lives there and what needs doing, and ChoreShare splits the jobs by time, rotates the worst ones and writes the group chat message. Suds, a soap bubble, helps you set it up.
01
The problem
Chores are the thing people who live together fight about most. In a Nationwide poll of over 2,000 people who had lived in shared housing, 60% had argued over who is responsible for cleaning, and a Taskrabbit and Wakefield Research survey found 78% of US adults have had a fight about chores. Most rotas count jobs rather than time, so five minutes of bins sits against forty-five minutes of bathroom, and the same person ends up with the bathroom every week.
02
How I approached it
Each chore has minutes and a frequency (daily, three times a week, weekly, every two or four weeks), and the engine expands them into dated jobs over a four-week rota. Each week hands out the longest jobs first to whoever has the lowest running total divided by their share, Graham's LPT rule, which keeps the largest total within 4/3 of the best split. Totals carry across weeks so a heavy week is paid back, a repeat term moves each chore to a different person, and a chore someone hates only lands on them when everyone else is clearly busier. A swap is pinned and the rest rebalances around it. The engine is a DOM-free UMD module that runs the same in the page and under node:test, and share links carry the whole setup in the URL fragment.
03
The outcome
For the starter list in a flat of three, everyone ends the four weeks within 4% of a fair share (375, 350 and 360 of 1,085 minutes), and the bathroom moves between people. The page shows a bar per person against their fair share, a card per person with each job's day, ticks and swaps that persist, a group chat message per week, a share link and a print layout. 13 tests cover the split, half shares, dislikes, swaps, the Monday-based week maths and link round trips. Checked headless in Chrome at 390 px and desktop width.
04
The mascot
Suds is a soap bubble drawn in inline SVG. Suds sleeps until someone is added, then follows the pointer or the field being typed in, blinks, hops when tapped and gives a tip for the current step. Suds greets each new person, catches duplicate names, explains swaps, looks worried when the split drifts more than 10% and blows bubbles when someone finishes their week. Everything goes through an aria-live region, Suds can be tucked away, and nothing moves under reduced motion.
05
What I learned
Counting minutes instead of jobs changed everything. Once the split runs on time, the hard part is making it feel fair week to week, which is why totals carry over and the worst job rotates.
Also shipped the same day: Four older games got real fixes: Snake Arena keeps fast turns and lets you chase your tail, Brick Breaker stops 2-hit bricks breaking in one bounce, Wave Survivor gets its promised upgrade picks, and Grid Defender taps land on the right tile on phones. See the commits ↗