No folders. No “new post” button. You drop small things in as they happen and turn them into something readable whenever you feel like it.
Every note you add is one timestamped scrap. A page is a few of them, grouped.
A line, a voice memo, a snap, a table. One line is enough.
It lands on your timeline — timestamped, auto-tagged, colour-matched.
Pick the entries that belong together, choose how they read.
Article, chapter, vlog or poem. Reorder and edit any time.
Not ready to group anything? Just keep adding. The timeline is meant to be a messy stream until a thread appears.
Your entries, pages and media sit in this browser’s storage, compressed as they land — no account, no server, nothing to worry about running low on. Settings shows your real, live number.
Settings → Backup saves your whole library as one small, compressed .weft file — private entries stay locked inside it. Also on this screen: a readable .zip copy, and an opt-in sync to a Google Drive you own. Keep a backup somewhere safe; import a .weft on another device and the same passphrase opens the private ones again.
Deploying the site includes only the entries you marked public.
So how small is that?
Text is squeezed 3–4× before it is written, so a lifetime of writing stays in single-digit MB. Photos, audio and video are not squeezed further — they are already compressed — so a media-heavy library weighs about what its media weighs. Either way, Settings shows your real, live number: there is no storage tier, because there is nothing to sell you more of.
Stored as-is. Published to your site. Anyone with the link can read it.
Locked with strong encryption before it touches storage. Until you unlock, you see only the time and a padlock. Set a passphrase in Settings first.
Locked with a key that a named group shares. It sits in the open as scrambled text; only members can open it. No self-service join — the only way in is a one-time invite link from someone already in the circle. Each circle also has a thread: a private chat that syncs between members.
⚠ Keys live only in memory and are never sent anywhere. Lose a passphrase or an invite link and that content is gone for good — keep a copy in a password manager.
Content moves between people the same way the app itself does — no server in the middle. A circle invite is a link; a whole library (public, private, and circle content together) moves as one small .weft file via Settings → Export/Import.
Mark an entry private and it is locked with AES-256 — the encryption a bank uses — before it is ever written to disk. The key is worked out from your passphrase on this device and forgotten the moment you lock up. A backup file, or a copy synced to a Drive you own, is unreadable noise to anyone else.
The method is public — only your key is secret, the way real encryption is meant to work. Every lock gets a fresh random salt and nonce. The key is never stored and never sent; there is no Weft account to break into.
A strong passphrase — or a hardware passkey — makes guessing your file open out of reach. A weak one is the weak link; no encryption fixes that. And if you lose it, the locked entries are gone for everyone: there is no reset, because there is no one who could reset it.
| Drop three quick notes about your day | + Add |
| Add a voice memo or a photo | + Add → 🎙 / 📷 |
| Turn back and read the timeline | ☰ Timeline |
| Group two notes into an Article | ☰ Timeline → group |
| Try a table with a running total | + Add → ▦ table |
| Set a passphrase, then export a backup | ⚙ Settings |
One note, from the moment you write it to the moment someone reads it.
No server in the middle. It only ever holds the parts you chose to make public.
Substack / Ghost / Medium are wonderful for reach and polish. Notion and Obsidian Publish are great for notes-to-web. Static-site generators give you full control. Weft trades some of each for one thing: your writing lives on your device, costs nothing to keep or publish, and carries private, group and public in the same timeline.
| Hosted Substack · Ghost · Medium | Notes→web Notion · Obsidian | SSG Hugo · Astro | Weft | |
|---|---|---|---|---|
| Monthly cost | $0–$50+ | $0–$10 | $0 | $0 |
| Where your data lives | their servers | their servers | your repo | your browser |
| Works fully offline | no | partly | no | yes |
| Private + group tiers | paywall only | basic | no | built in |
| Structure | fixed post | pages | files | grows as you write |
| Storage footprint | opaque quota | opaque quota | plain files | compressed, real number shown |
| Lock-in | high | medium | low | none — one file out |
Each of the others is genuinely better at something.