I used to open Timestripe every so often just to check one specific grid view. Then at some point it wasn't there anymore — buried, changed, or removed, I honestly couldn't tell which. I looked for a bit, gave up, and built my own instead.
Lived is a single page. You type your date of birth, and it draws your life as a grid of dots — one dot per day, week, month, or year, depending on the scale you pick, running from the day you were born to a horizon you choose (90 years by default, because you can always argue about that number later). Dots behind you are filled in solid. The one you're living right now pulses, just so you know where "now" actually is. Everything ahead is an empty outline, waiting.
That's the whole idea. No dashboard, no onboarding flow, no "let's set some goals first." You open it, you type one date, and you're looking at your life.

This isn't a new trick
Tim Urban did this first, more or less — "Your Life in Weeks" on Wait But Why, a grid of 52-week rows stretching out to 90 years, one of those posts that quietly ruins your afternoon in a good way. Timestripe took the same idea and built an actual app around it. Both work for the same reason: your brain is terrible at reasoning about "I have maybe 50 years left" as an abstract number, but weirdly good at reasoning about "look how much of this grid is already dark."
So why build a third one? Because Timestripe, last I checked, has drifted into being a full productivity suite — goals, habits, planning, an account, a subscription. If what you actually wanted was the chart, you now also get a login screen and a pricing page. Lived is my answer to that: just the picture, nothing else, and definitely nothing you have to sign up for.
The one decision that shaped everything
No account. No backend. Nothing about your birth date, your notes, or your milestones ever leaves your browser.
That single constraint decided almost everything downstream. There's no server to save your settings to, so they live in localStorage — and get mirrored into the URL's query string, which means the address bar is always a shareable link back to your exact view. Send someone the URL, and they see your grid, your scale, your style — no export step, no "sign in to view this." The link is the picture.
It also means there's no free tier and no paid tier, because there's nothing on a server to meter. Every export format — PNG, SVG, a configurable PDF, a 1080×1920 Stories card for Instagram — is just as free as looking at the grid on screen, since they all come out of the same <canvas> rendering pipeline with nothing gated behind a paywall.
A couple of things I liked building
The dots don't just redraw when you switch scales — they morph. Flip from Years to Months and the grid visibly splits apart into more, smaller dots instead of just popping into a new layout, so you keep your bearings on where "today" went instead of having to hunt for it again.
There are two ways to lay the grid out: a flowing stream that wraps like text, with a wider gap marking each week/month/year boundary, or compact calendar-style blocks — for Days specifically, an actual Monday-to-Sunday page per month, because at that scale a real calendar reads better than a stream ever would.
And it's an installable, offline-capable PWA, which sounded like a checkbox item until I remembered Turbopack doesn't hook into the webpack-based next-pwa plugin — so the service worker is hand-written, one file, no build-tool magic.
The first time I typed in my actual birth date and looked at my actual grid, the reaction wasn't the calm memento-mori thing I half-expected. It was closer to: I've lived a lot of this already, and done comparatively little with it.
What's next
Honestly, probably nothing dramatic. This is a tool, not a product — no growth plan, no roadmap slide. I've done the basic SEO pass (OG tags, structured data, a sitemap, the usual), and now it's just a matter of seeing whether anyone besides me ever opens it. If it turns out to be useful to exactly one person, that person is me, and the app has already paid for itself in afternoons not spent staring at an abstract number instead.
If you want to see your own grid: lived.m-b.app.
