Notebooks
Your own writing about a language — grammar you worked out, notes on how people actually talk, tables you keep coming back to.
What a notebook is
You can use them for whatever you want, but a notebook is a place to keep everything you work out about one language, in your own words. They are not meant for quizzes so much, more for the long-form half of learning, the part you write once and come back to to remember what you learn.
People tend to use them for:
- Grammar notes with your own examples
- Conjugation and declension tables
- Cultural explanations, register, and what not to say
- Pronunciation notes: pitch accent, tones, vowel length
- Vocabulary collocations
- Sentence mining: lines you liked, with the source
- TV show, film, book, and podcast lists/recommendations
- Planning out your studies or a log of what still confuses you
How they are organized
There are three levels, and only the middle one is optional:
| Level | What it is |
|---|---|
| Notebook | The top level, tied to a single language when you create it. The language is what makes a notebook findable, so a notebook that mixes two languages will fight you later. Give it a title and, optionally, a description explaining what belongs in it. |
| Section optional | A folder inside a notebook — “Verbs”, “Particles”, “Media”. Pages do not need one; a page with no section simply sits at the top level of the notebook. Sections are worth adding once a notebook passes a couple of dozen pages and the list stops being scannable and you need a filter. |
| Page the writing | One document, with a title, an optional description, and a rich text body. This is where you actually write. A page can be moved to another section, reordered by hand, and deleted, or put into the trash without losing it immediately. |
Deleting a section does not delete its pages — they fall back to the top level of the notebook. Deleting a notebook, on the other hand, takes its pages with it.
Getting started
- Add the language first. A notebook has to belong to a language you are studying. If yours is not in the list yet, see adding languages.
- Create the notebook from your notebooks. Title and language are required; add a description if you like.
- Add a page. New pages open straight into the editor with an empty paragraph. Nothing else is required to start writing.
- Add sections when you need them — not before. It is easier to sort thirty existing pages into sections than to guess the right six folders on day one.
- Reorder by dragging. Pages keep a manual order inside their notebook, so a grammar notebook can run in teaching order rather than alphabetically or by date.
What makes a page useful
The pages people actually reread tend to be narrow. One page per question — “when does this take the dative?” — beats one enormous page called “Grammar”. Narrow pages also mean the page list doubles as an index, and the headings inside each page feed the table of contents.
Write your own examples rather than copying a textbook's. A sentence you built yourself records what you understood at the time, which is the part worth checking again in six months.
The editor
Page bodies are written in a rich text editor rather than Markdown, and what you see while writing is what the page is. Everything is reachable from the toolbar at the top of the page, and most of it also has a keyboard shortcut. If you prefer to keep your hands on the keyboard, the editor also understands Markdown-style shorthand as you type.
Saving
Pages save themselves. A few seconds after you stop typing the editor sends the page up, and the badge at the top of the editor tells you where things stand:
- Saved — what is on screen is what is on the server
- Unsaved — edited, with a save due
- Saving — in flight
- Failed — the last save did not land; typing re-arms it, and you can retry immediately
If you write without pausing, a save still goes out on a ceiling rather than waiting for a gap in your typing, so you are never more than a short stretch of work from the last save. It is still worth watching the badge before closing a tab on a long session.
Structure
- Six heading levels, paragraphs, blockquotes, horizontal rules
- Bulleted, numbered, and task lists, nested with Tab and shiftTab
- Code blocks with syntax highlighting — useful for writing about romanization schemes, or for anything you want in a fixed-width block that the editor will not reformat
- A table of contents built from your headings, which can sit in a side panel or open as a sheet. Every heading gets a stable anchor, so you can link to a specific section of a long page
Text and emphasis
- Bold, italic, underline, strikethrough, inline code
- Text color and highlight, from a grouped palette (dark, bold, and vibrant ranges) that is legible in both light and dark themes
- Font family — a universal sans, serif, or monospace, each backed by Noto so Japanese, Korean, and Chinese text renders in the matching face instead of falling back to something ugly
- Font size, line height, and text alignment
- Ctrl / ⌘\ clears every mark on the selection, which is faster than toggling four things off
Formatting as you type
You never have to use any of this — every one of these has a toolbar button, and the page is the same either way. But if you would rather not reach for the mouse mid-sentence, the editor recognizes a set of plain-text patterns and converts them the moment you finish typing them. This is the convention called Markdown, and if you have ever typed **really** in a chat app to mean really, you have already used it.
Two things to know before the tables, because they explain nearly every “why didn't that work?”:
- Patterns that change a whole line (headings, lists, quotes) fire when you type the mark and then a space, and only at the very start of the line.
- Patterns that change part of a line (bold, italic) fire when you type the closing mark, so the text transforms as you finish the word rather than when you start it.
Whole-line patterns
Type these at the start of an empty line, followed by a space.
| Type this | To get | Notes |
|---|---|---|
# | A heading | One # per level, up to ###### for the smallest |
## | A smaller heading | Headings are what build the page's table of contents |
- | A bulleted list | * and + work too |
1. | A numbered list | Any number works; the list renumbers itself |
[] | A checklist item with a tickable box | [x] starts it already ticked |
> | A blockquote | Good for quoting a source or an example sentence |
``` | A code block | Name the language to highlight it — ```json |
--- | A horizontal divider | No space needed; three hyphens on their own line |
Inside a list, Tab indents the item one level and shiftTab brings it back out. Enter twice in a row leaves the list.
Mid-sentence patterns
These wrap a piece of text. Type the opening marks, the text, then the closing marks — the formatting appears when you close it.
| Type this | To get | Notes |
|---|---|---|
**bold** | bold | __bold__ does the same |
*italic* | italic | _italic_ does the same |
~~struck out~~ | struck out | Handy for “don’t say this” examples |
`code` | code | Single backticks. Fixed-width, and left alone by the editor |
!!hidden!! | A spoiler — hidden until hovered | Not Markdown, but the same idea. Useful for self-testing |
Symbols and punctuation
The editor also tidies punctuation as you type, so you get typographic characters without hunting for them in a character picker.
| Type this | To get | Notes |
|---|---|---|
-- | — (an em dash) | — |
... | … (a single ellipsis character) | — |
"quoted" | “quoted” (curly quotes) | Apostrophes curl too |
-> | → | And <- gives ← |
<< | « » | French and Russian quotation marks; >> gives » |
!= | ≠ | — |
+/- | ± | — |
1/2 | ½ | 1/4 and 3/4 work as well |
^2 | ² | ^3 gives ³ |
(c) · (r) · (tm) | © · ® · ™ | — |
When you don't want it
Writing about a language means occasionally wanting the characters themselves — underscores in a romanization scheme, asterisks marking an ungrammatical form, a literal pair of hyphens. Two ways out:
- Press Backspaceimmediately. The first Backspace after a pattern fires undoes just that conversion and leaves your literal characters in place. Ctrl / ⌘Z works too.
- Use a code block. None of these patterns apply inside one, so anything you paste or type there stays exactly as written — which is why it is the right place for transliteration tables and glossing conventions.
Linguistics convention and Markdown collide in one unlucky spot: a leading asterisk marks an ungrammatical form, and * at the start of a line starts a bulleted list. Backspace once and the asterisk stays put.
Tools for language notes
These are the parts you will not find in a general-purpose editor. They exist because language notes need to show a reading, a tone, or a meaning without breaking the sentence they are in.
Furigana and pitch accent
Annotate any span of text with a reading, rendered as real <ruby> text above the base — 漢字 with かんじ over it 漢字. Beyond the reading itself you can mark pitch accent: set where the pitch drops and the annotation draws the mora diagram over the reading and names the pattern — heiban, atamadaka, nakadaka, or odaka — with an optional color coding per pattern.
The pattern is derived from the drop position and the length of the reading, so it stays correct if you change either, and it is stored with the page rather than recomputed from a dictionary.
Pinyin and Jyutping
The same ruby annotation, for Mandarin and Cantonese. Pick the dialect, set the tone — 0–4 for pinyin, 0–9 for jyutping — and choose whether to show the tone number as a superscript, color the reading by tone, or both. Tone colors are defined once for the whole app and have separate light and dark values, so a page written in one theme is still readable in the other.
Hover cards
A hover card keeps a short note out of the main line of text: the page shows a trigger word, and the body appears when you hover it. Good for a gloss, a literal translation, or an aside that would wreck the sentence if you inlined it. The body is real editable content — marks, lists, and links all work inside it — not a plain-text tooltip.
Spoilers
Hidden text, revealed on hover. The point is self-testing: write the sentence in the target language, mark the translation or the reading as a spoiler, and the page becomes something you can quiz yourself with instead of a page you merely reread.
Tables
Full tables with header rows, inserting and deleting rows and columns, merging and splitting cells, and per-cell background color. Conjugation and case tables are the obvious use, and cell color is what makes them readable at a glance — one shade for irregular forms, another for the ones you keep getting wrong.
Links
Links are added from the toolbar or edited in place from the bubble menu that appears when your cursor is inside one. A URL typed without a scheme is normalized rather than resolved against this site, so example.com/grammar goes where you meant it to.
Read time and counts
The stats menu reports the page's character count and an estimated read time. Because reading speed varies enormously by script, it also breaks the estimate down for Latin, Chinese, Japanese, Korean, and Arabic text rather than pretending one number fits every page.
Keyboard shortcuts
Ctrl / ⌘ is ⌘ on macOS and Ctrl elsewhere. Every shortcut is also shown in the tooltip of its toolbar button, which is the version that is guaranteed to be current.
| Action | Shortcut | Notes |
|---|---|---|
| Bold | Ctrl / ⌘B | — |
| Italic | Ctrl / ⌘I | — |
| Underline | Ctrl / ⌘U | — |
| Strikethrough | Ctrl / ⌘/ | — |
| Inline code | Ctrl / ⌘E | — |
| Spoiler | Ctrl / ⌘. | Hidden until hovered |
| Clear formatting | Ctrl / ⌘\ | Removes every mark on the selection |
| Action | Shortcut | Notes |
|---|---|---|
| Heading 1–5 | Ctrl / ⌘alt1…5 | — |
| Heading 6 | Ctrl / ⌘shift6 | — |
| Bullet list | Ctrl / ⌘shift7 | — |
| Numbered list | Ctrl / ⌘shift8 | — |
| Task list | Ctrl / ⌘shift9 | — |
| Indent / outdent list item | Tab | shift Tab to outdent |
| Blockquote | Ctrl / ⌘shiftB | — |
| Code block | Ctrl / ⌘shiftP | — |
| Horizontal rule | Ctrl / ⌘alt- | — |
| Action | Shortcut | Notes |
|---|---|---|
| Insert or delete table | Ctrl / ⌘altt | Inserts one, or deletes the table the cursor is in |
| Hover card | Ctrl / ⌘alty | — |
| Increase font size | Ctrl / ⌘shift+ | Steps through the size list |
| Decrease font size | Ctrl / ⌘shift- | — |
| Reset font size | Ctrl / ⌘shift0 | — |
Deleting and recovering
Deleting a page does not destroy it. It moves to the trash, where it stays recoverable for 30 days before being removed for good; until then you can restore it from the trash. A deleted page opens read-only, with a banner saying when it will go, so you can read it before deciding.
Limits
There is a cap on how many notebooks, sections, and pages an account can hold, and on the size of a single page — currently 5 notebooks, 50 sections per notebook, and 250 pages across the whole account. The per-page size limit is generous — on the order of a novella — but markup like tables and color counts toward it as well as words.
The reasoning behind each number, and the exact page size, is on the limits page.