A gratitude journal that grows a monstera.

You have started one of these before. The paper one is in a drawer, the notes file stopped in the second week, and the one with the monthly bill got cancelled. This is thirty seconds a day — write one to three good things, or say them out loud — and something grows out of it that takes a year.

There is no trial and nothing to cancel. The demo further down is the real app with a year already written in it, and it is not behind anything.

No subscription requiredOffline-firstYour voice never leaves the deviceFree updates foreverInstallable, works offline

why the last one stopped

“Nothing came of it, so I stopped.”

Every entry feeds a monstera, and it is honestly slow. The last of the nine stages needs 430 entries and 300 separate days of turning up — both, so nobody sprints it in a fortnight. On a Wednesday in March you will be able to see that you have been doing this since January, without counting anything.

“I missed four days and it made a thing of it.”

A missed day is quietly forgiven and the warmth dims rather than resetting to zero. There is no lecture, no broken-streak screen, and no way to lose what you have grown: the plant cannot wither, shrink or die, because a journal that punishes you is a journal you stop opening. That is a rule the app is built to, not a setting.

“It was a subscription, and it was reading my diary.”

One payment, no renewal. And the honest version of the privacy answer rather than a slogan: this runs on your device, sync is off until you switch it on, and if you do switch it on we can read what is in your account. The full sentence is further down the page — we would rather you read it now than discover it later.

One line, and where it goes

recorded off the real app ↓

What to watch for: how little there is between opening it and writing — the box is already focused — and then what the entry lands in. No score, no sentiment rating, no prompt telling you what to be grateful for. The plant at the end grew out of the entries above it and nothing else.

gratefull.co · live demo, sample journal

That frame is the running app, not a picture of it. Write something in it. Open the Ledger and the plant from the nav.Open it full-size ↗

Nine stages, and no hurry

about a year to the last one →

Two gates, and both have to be met: cumulative entries and separate days practised. Ranks one to four have plain heart-shaped leaves — the splits and the holes a monstera is known for only arrive from the fifth. That is how the plant actually grows, and it is why a late stage cannot be bought, rushed or written in a weekend.

1. Seed

In the soil, doing nothing visible.

2. Sprout

One furled leaf, still deciding.

3. Seedling

Two plain hearts. No holes yet — that comes later.

4. Juvenile

Broad, glossy, entirely solid.

5. First split

The margin opens. This is the one that surprises people.

6. Fenestrating

Windows, where there was only leaf.

7. Climbing

Aerial roots, reaching for something to hold.

8. Established

Wide enough to change the room.

9. Ancient

Older than the habit that made it.

a year of writing, in twenty-six seconds

Your voice never leaves the device

Speech becomes text on your own machine — the recogniser ships inside the app, so the audio never leaves it and none of it is transcribed in someone else's data centre. What it writes is an ordinary entry: it stays on this device until you switch sync on yourself.

The browser has its own dictation API and this app refuses to use it, because in Chrome it streams your microphone to Google. Ours is a Whisper model served from this site, so the first time you open the app it fetches a 23MB runtime and keeps it. After that the microphone needs no network at all.

And you can see where the words are going

While it is listening, the line your words are about to land on is tinted and carries a caret — blinking while it hears you, running while it writes. What comes out is plain editable text in the same box you would have typed into, so you can fix the word it got wrong before you save.

Small model, ordinary microphone: it is good at a quiet room and ordinary sentences, and it will mishear a name. That is what the editable box is for.

what it never does

  • Tell you that you broke a streak. A missed day dims; it doesn't reset.
  • Send your voice anywhere. The recogniser runs here, on this device.
  • Send you a notification asking where you've been.
  • Compare you to anyone else. There are no leaderboards.
  • Read your entries with a model. No AI prompts, no reflections written for you, no sentiment score.
  • Sell you anything twice.

Also not here, so you find out now rather than after paying: no photos in an entry, no tags to analyse, no calendar reminders, no way to share a page, and no app to install from a store — it is a web app you add to your home screen.

And the one thing it does do, said plainly: your entries live in a file on this device. If you switch sync on in Settings, a copy goes to your own account over HTTPS as plain JSON — it is not end-to-end encrypted, which means we could read a synced journal if we looked. Leave sync off and that never happens.

$69once, forever

Web app, installable, every future update included. No subscription required, no trial to forget to cancel, and no renewal date to dread — the journal you write over the next three years is not rented from anybody.

Buy Gratefull — $69 once

There is also a rental at $18 a week, and we will tell you the truth about it: four weeks of renting costs more than owning it outright, and none of the rent comes off the purchase. It exists for somebody who genuinely wants a month. If you rent five paid weeks the lifetime licence drops to $34.50.

The small print worth reading: your journal is a file on this device and every screen works with the wifi off. The one thing that needs a network is the licence — Gratefull confirms it with our server and then runs offline for 14 days between checks. Stay offline longer and it asks you to reconnect once, owners included. Nothing is deleted when that happens, and the full JSON export needs no account and no connection.