diff --git a/README.md b/README.md
index de6f038..e44c450 100644
--- a/README.md
+++ b/README.md
@@ -109,6 +109,17 @@ Your data is stored in `~/.tinyweb/`:
This allows your data to persist between upgrades and stay separate from the application.
+### Backups
+
+Back up the whole `~/.tinyweb/` directory periodically. The two files that matter:
+
+- **`tinyweb_identity`** is your permanent mesh identity. If you lose it, your destination hash changes and every subscriber has to re-subscribe to the new one. Keep it somewhere you trust; the file is `0600` by default.
+- **`index.db`** is your full reading history — every page, note, tag, and synced remote page. Losing it loses everything you've curated.
+
+`models/` and `index.hnsw` are re-derivable (the model will re-download, and the HNSW index rebuilds from the database on next startup with semantic search enabled) so they don't need to be backed up.
+
+The `/export` page produces a JSON dump of your pages. It's a migration aid — it doesn't preserve your identity file, your custom template, or subscription state. A full restore needs a copy of `~/.tinyweb/`.
+
### Docker
Data is stored in the `/data` volume inside the container. Use a volume mount to persist data:
diff --git a/handlers.py b/handlers.py
index 47f38e1..e47520b 100644
--- a/handlers.py
+++ b/handlers.py
@@ -334,6 +334,18 @@ def handle_search(query):
sub_count = ""
if q and remote_rows:
sub_count = f" + {len(remote_rows)} from subscriptions"
+ welcome_html = ""
+ if count == 0 and not q:
+ welcome_html = (
+ ' Your index is empty. tinyweb is a personal search engine for pages you save. '
+ 'The index stays on your machine; so does every search. From here: add a page, '
+ 'get the bookmarklet, or '
+ 'subscribe to another instance.
Remove the following {n} page{'' if n == 1 else 's'}?
" + f"Drag this link to your bookmarks bar. Click it on any page to index it instantly.
" f'' f"Everything is stored locally under ~/.tinyweb/:
tinyweb_identity — your permanent mesh identity. '
+ f'If you lose this file, your destination hash changes and subscribers '
+ f'have to re-subscribe to the new one.index.db — your full reading history: every page, '
+ f'note, tag, and synced remote page.models/ — the semantic search model if you enabled it '
+ f'(redownloadable, safe to delete).Back up ~/.tinyweb/ periodically. '
+ f'Copying the whole directory to another device preserves your identity and index together. '
+ f'The export page gives you a JSON dump of pages only — '
+ f'it does not preserve your identity or subscription state, so it is a migration aid, '
+ f'not a substitute for a full backup.
The slow web is a movement for intentionality over speed, ' f'human curation over algorithmic feeds, privacy over surveillance, '