Live Markdown
HelloNotes styles Markdown as you type. Headings grow, emphasis takes effect, lists and task lists gain bullets and checkboxes, tables align — all while the file on disk stays exactly the Markdown you typed. Nothing is rewritten behind your back.
Move the caret onto a line and that line’s raw syntax is revealed so you can edit it; move away and it tidies itself again. Reveal is per line, so the rest of a multi-line blockquote or list keeps its formatting while you work inside it. This is the “caret-driven concealment” you may know from Obsidian or Bear.
Formatting commands are in the Format menu, with the shortcuts you would expect — see Keyboard shortcuts. They act in Edit; in Preview, Markdown and Split they are dimmed. On iPad they are also on the row iPadOS floats over the keyboard, and on iPhone on a bar of their own directly above the keys.
View modes
| Mode | What it shows |
|---|---|
| Edit | The live editor. This is where you write. |
| Preview | Read-only, rendered exactly as GitHub would render it. |
| Markdown | The raw source, unstyled. |
| Split | Source and rendered page side by side — or one above the other, where the pane is taller than it is wide. |
The four buttons at the bottom of the note switch between them, as do ⌘1 to ⌘4 and the View menu.
The Preview is rendered with cmark-gfm, the same engine GitHub uses, so a note that looks right here looks right in a README.
Lists, blank lines and room to write
- Return continues a list. The next bullet appears — the next number in a numbered list, and an empty box after a task. It works in Edit and Markdown alike, inside a quote too, and never in code.
- Return on an empty item ends the list. A nested item moves out a level; one at the list’s own level leaves a blank line with the caret below it, ready for a paragraph.
- Tasks can be ticked in Edit.
- Every blank line you type shows in Edit. One between two paragraphs is the usual gap, and each one after it is an empty line. Preview closes a run of them up to that one gap, as GitHub does.
- A long note scrolls on past its end, in every view, until its last line is about halfway up — so the line you are writing need not sit at the bottom edge of the window.
The text column
How wide the text runs is a setting, and it applies in every view — Edit, Preview and Markdown lay the note out in the same column, so switching between them does not move the text sideways. The controls are in Settings ▸ Appearance, under Text width:
- Reading width — the longest a line of text gets: Narrow (60 characters), Normal (80), Wide (90), or Full width. A column held to one of these is centred in the pane.
- Editor width — how much of the pane you write in: Full pane, 90%, 75% or 50%, left-aligned.
- Wrap guide — a line drawn at 72, 80 or 100 characters while you edit. It is a guide you can see, not a wrap point.
Whatever the column, the note fills its pane: the scroll bar stays at the pane’s edge, and scrolling over the margin scrolls the note.
Code, maths and diagrams
- Code blocks are syntax-highlighted by language, using the GitHub theme.
- LaTeX maths renders natively —
$inline$and$$display$$. - Mermaid diagrams in a
```mermaidblock are drawn inline, natively. The View diagram button in a diagram’s corner shows it larger, with zoom; in Edit, clicking the diagram itself opens its source.
In Edit none of these is a web view, so they scroll and type as smoothly as plain text. Preview — and the page half of Split — is one, rendering through the same engine GitHub uses.
Callouts, comments and properties
Obsidian-style callouts work as you would expect, with icons and collapsible bodies:
> [!note] Worth remembering
> The body of the callout goes here.Text wrapped in %%double percent signs%% is dimmed as a comment. YAML front matter at the top of a note is presented in the right panel’s Properties view as typed, editable fields — text, number, checkbox, date and list — rather than raw YAML.
Finding and replacing
⌘F — or Find & Replace in Note, under the magnifying glass in the bar — opens the find bar over the current note, with Replace and Replace All. Return goes to the next match, the arrows step back and forward, and Done or Esc closes it. Finding works in the Edit view, so from another view ⌘F switches to Edit first.
The .* button makes the search a regular expression, and stays on until you turn it off:
\d+finds numbers;^and$match at the start and end of every line.- A pattern ignores case, as a plain search does, unless it starts with
(?-i). - In the replacement,
$1is the first group in brackets ($0is the whole match), and\nand\tare a new line and a tab. Finding(\w+)@(\w+)and replacing with$2 for $1turns me@home into home for me. - A pattern that cannot be read shows Invalid pattern where the count goes, and one that runs for more than half a second shows Too slow and stops rather than holding up your typing.
To search across every open collection instead, choose Search Notes under the same magnifying glass, or press ⌥⌘F — see Organising notes.
Images and attachments
Paste an image and it is written into your collection as a PNG with a relative Markdown link — by default into an assets folder beside the note, which you can change in Settings ▸ General. Non-Markdown files in the folder (PDFs, images, CSVs) appear in the tree when View ▸ Show Non-Note Files is on, and open in a native viewer.
Pasting rich text from a browser converts it to clean Markdown rather than pasting HTML.
Tabs, windows and export
- Notes open in tabs in the bar over the editor.
- Open in New Window — in the Note menu and in Note Actions — puts a note in its own window for side-by-side work.
- File ▸ Export as HTML… and File ▸ Export as PDF… write the current note out.
- A note with Marp front matter gains Present as Slides in Note Actions: a slide-deck preview.
Statistics and outline
Summary & Outline, the first view of the right panel, shows the note’s word, character and paragraph counts and its reading time, and lists its headings — click one to jump straight to that section.