Your notes index is an ordinary Opensolr Index, so you can query it yourself. One request with wt=csv gives every note as a CSV file you can open in a spreadsheet or keep as a backup.
- The index name:
notes_<install id>__dense, shown in Settings → Account in the app. - The host of the index: open the index in the control panel; it is on the Overview, under Host.
- The user and password of the index: Index password and security in the app’s Settings opens the place to see or change them. See Default HTTP Auth Credentials.
Replace USER, PASSWORD, HOST and INDEX, then run it in a terminal:
curl -G -u 'USER:PASSWORD' 'https://HOST/solr/INDEX/select' \
--data-urlencode 'q=source_s:opensolr-notes' \
--data-urlencode 'fl=id,note_title_s,title,text,creation_date,updated_l' \
--data-urlencode 'sort=creation_date desc' \
--data-urlencode 'start=0' \
--data-urlencode 'rows=1000' \
--data-urlencode 'wt=csv' \
-o notes.csvThe first line of notes.csv holds the field names, then one note per row, newest first. A text with commas or line breaks is put in double quotes, as spreadsheets expect.
| Field | What it holds |
|---|---|
id | The note’s own id. |
note_title_s | The title you gave the note; empty when you gave none. |
title | The title shown in the list: yours, or the first sentence of the text. |
text | The text of the note, without its formatting. |
textraw_t | The text with its formatting: bold, italic, underline and links as HTML tags. |
creation_date | When the note was written, in UTC (2026-10-23T03:31:24Z). |
updated_l | When the note was last saved, in milliseconds since 1970. |
- rows is how many notes one request returns; start is how many to skip. The next thousand:
start=1000, thenstart=2000, until a page comes back with no rows. - Add
csv.header=falseto every page after the first, so the field names are written once, and append each page to the same file (>> notes.csvinstead of-o notes.csv). csv.separator=;writes semicolons instead of commas, for spreadsheets set to a language that uses the comma in numbers.- For a very large index, read it with
wt=jsonandcursorMarkinstead: a CSV answer carries nonextCursorMarkto continue from.
An export is a search like any other: it counts against the bandwidth of the index, on your plan. It uses no AI requests.
Your notes index
- The index and sync
- The search page
- Exporting to CSV
- Asking your notes
- Signing a phone out