MojoPad

Markdown Pages

MojoPad pages come in three text flavors — rich text, Markdown, and plain text — plus file pages for attachments. Set the default for new pages in the Info palette (Document section); convert any page with Convert Page To (in the menu, or the ⇧⌘P command palette), or flip an entire document at once with All Pages to Markdown… or All Pages to Plain Text…. Converting rich text to Markdown keeps your formatting — headings, bold, lists, and links — as Markdown syntax, rather than flattening it to plain text.

Plain text reaches further, because it is downhill from both shapes: it takes your rich-text pages and your Markdown ones. Each gives up something different, and the confirmation says which before it happens — a formatted page loses its formatting, and a Markdown page keeps every word but gives up the backslashes that only existed to stop Markdown reading a character as markup. Pages already in plain text are left out of the count.

Storyboards and mind maps sit out all of these, and say so. Both store a tree of cards, which is a structure neither Markdown nor plain text can hold, and converting one would quietly flatten it into a bulleted list. To get a board's words out as a document use its own Send to… button; a map has ≣ Save as an outline. Protected pages are never converted either — unlock them first.

What a Markdown page cannot keep, and now says so. A Markdown page is stored as Markdown, so a size or a typeface set on a run of words has nowhere to live in it. The two pickers on the format bar used to apply anyway — it looked right, and the next save took it away with nothing said. They now decline and say what to do instead: a heading gives you size, and a Formatted text page keeps a size or a face you set yourself. Color and highlight are kept on a Markdown page, which is why the two behave differently on the same bar.

Markdown, the way you'd hope

Resized an image? The width rides along in the text itself — ![alt|400](photo.png) — the same dialect other Markdown wikis speak, so a resize survives every reload, export, and other editor.

Markdown pages open as a formatted, fully editable view — headings render as headings, lists as lists, checkboxes as real clickable checkboxes. Type in it, bold things with ⌘B, use the format bar, or type / for a quick-insert menu (see Formatting); your edits are written back to clean Markdown source underneath.

Text color and highlight stick, too. Color a word or highlight a passage on a Markdown page and it survives a save and reload — MojoPad keeps it as a tiny inline <span> in the source (the one scrap of HTML Markdown allows), so it round-trips cleanly. Decoration Markdown genuinely can't express — a custom font or a one-off size — still gives way to the page's own styling.

The HTML a Markdown page keeps: furigana and color. Notes brought in from another Markdown app sometimes carry a little HTML, and two kinds are drawn the way they were meant. Ruby sets a reading small above the words it belongs to — furigana over a name, written <ruby>与田<rt>よだ</rt></ruby>, with or without <rb> around the base and <rp> parentheses for apps that can't draw it. Colored words are written <font color="…">, with any color by name or by number. Saving the page leaves those lines exactly as they are in your file; recolor the words and the new color is kept the way MojoPad keeps any color you choose. Every other tag still shows as the characters you typed, and so does one of these two written in a way MojoPad doesn't read: a ruby tag with anything more inside its brackets, a <font> with no color or with anything besides a color, a typeface and a size, or a tag closed on a later line — and saving the page leaves those in your file as they are, too. A <font>'s typeface and size aren't drawn, but they stay in your file. Your lines are kept the same way wherever you edit the page — a Journal day, any pane, a card on a canvas — and a task that has them keeps them when you move it to another Markdown page or rename it from Tasks.

Ruby counts as its words, once: the reading is left out of the word count but found by search, Read Aloud reads only the words beneath it (from a card on a canvas too), a Word export sets it as Word's own phonetic guide, and an HTML or Markdown export keeps it. A page of formatted text keeps ruby and a <font color> too, except a black or gray one: that is how many other pages write their ordinary text, so those words take your theme's text color and stay readable in a dark theme.

A Markdown page in its formatted view. The pill (top right) flips to source.

The little pill in the top-right corner names the view you're in — Markdown (the raw source) or Formatted (the live, editable view) — and clicking it (⌃⌘P does the same) flips to the other. New Markdown pages open in the Formatted view, ready to write — raw source is always one ⌃⌘P away. An empty page shows a faint “Press / for quick actions” hint that vanishes the moment you start typing.

A new line without a new paragraph. Writing in the Formatted view, ⇧⏎ (Shift-Return) starts a new line inside the paragraph, bullet, numbered or checklist item, quote or heading you are in — to put a sentence's translation on the line under it in the same bullet, say, or to write an address a line at a time. ⏎ still starts a new paragraph or a new bullet. The line stays where you put it: when you scroll, when you go to another page and come back, in the Markdown view and in every export. In the Markdown view, a new line in a paragraph or a quote simply starts the next line. In a bullet, a numbered or checklist item, or a heading, it shows as a short line-break tag, and the words after it stay on the same line. That keeps every bullet on a line of its own, so a copy of MojoPad that hasn't been updated yet — on your other Mac, say — shows the tag as text but never moves a bullet out of its list or changes its level. A Markdown export — File ▸ Export Page As ▸ Markdown…, File ▸ Export Document ▸ Markdown Folder… or a Markdown Compile… — writes standard Markdown line breaks instead, the kind other Markdown apps read. MojoPad reads those too, along with the other ways Markdown and notes apps write a line break, so a page you import from one shows its lines as they were there, and every bullet stays in its list. The page is kept the MojoPad way from the moment it arrives — imported, pasted, added by an AI agent or converted from plain text — so the copy on your other Mac sees the same bullets even before you edit it. Each line keeps its own formatting marks, too: a ~ or ^ on one line never pairs with one on the next, so a range such as 10~20 stays as you typed it. When you convert the page to plain text, each new line becomes a line of the text, and word counts and search read it as the space between two words.

Supported syntax

Headings, bold/italic, inline code, fenced code blocks, links, images, bulleted/numbered lists, nested lists, task lists (- [ ] / - [x] become clickable checkboxes), blockquotes, horizontal rules, ~~strikethrough~~, footnotes, superscript/subscript (x^2^, H~2~O — nothing loose inside the markers), and pipe tables.

Saying “I mean the character, not the markup”. Put a backslash in front of it: \*not italic\* writes the asterisks, \# writes a hash instead of making a heading. It works for every punctuation mark Markdown uses, and — the part that matters — the backslash is still there when you save the page and open it tomorrow. HTML you type in the Formatted view is kept as words the same way: type <span style="color:red"> and that is what the page shows, saved with a backslash before the tag.

And if your text IS the markup. Exporting a page normally protects those characters the other way around, so words you typed arrive as words — 2 * 3 stays arithmetic instead of turning into emphasis. That is right for most writing and exactly backwards if you write Markdown or Org by hand and expect it to arrive as markup. Check I write my own markup in the Info palette and exports hand your text over as written. It is set per document, so a wiki of ordinary notes and a wiki of source can sit side by side.

Other things that now read the way you'd expect. __bold__ works as well as **bold**. Written-out characters like &amp; and &mdash; come through as the characters themselves, and a line you haven't changed is saved with them written out as before — and so are its <br> tags, its colors and the backslashes before its punctuation, exactly as they are in your file. So are a table's column alignment (:---, :---:, ---:) and spacing, a title underlined with --- or ===, a line break in a paragraph written as a backslash or two spaces at the end of a line, a no-break space (even a line of nothing else), and a link's address as you wrote it, including one with a pair of brackets in it, such as a Wikipedia address. Code indented by four spaces or a tab shows as code and keeps its indent, except right after a list, where an indented line is more of the list's last item. In a folder you follow, a note keeps its line endings and the line break after its last line. A heading that closes with its own hashes (## Title ##) drops them. And a fenced code block indented under a list item stays inside that item instead of spilling its backticks into the text.

What is still saved MojoPad's way. Some ways of writing come back in MojoPad's own form even on a line you haven't changed. Among them: bullets made with * or + are saved with -, a list numbered 1. throughout is numbered in order, __bold__ and _italic_ are saved with asterisks, a line of *** becomes ---, a nested list is indented by two spaces, several blank lines in a row become one, a link's title in quotes is saved as words, a line break inside a bullet is saved on the bullet's own line, and a character MojoPad could read as formatting, or a backslash that isn't one of Markdown's escapes, is saved with a backslash in front of it.

A note that is not part of the writing

%% like this %% is a comment — a note kept beside your writing that stays out of word counts, search, exports and anything the AI reads. Type it just like that — it becomes a comment as you close the second pair — or use / ▸ Comment. Written this way in a file, or in another editor, MojoPad reads it as a comment when the page opens. See Comments.

Code blocks and syntax highlighting

Give a fenced code block a language and it's color-highlighted — in the editor, in exports, and on published sites:

```js
const x = 42
```

JavaScript/TypeScript, Python, C-family, JSON, CSS, HTML/XML, shell, SQL, and YAML are recognized; an unknown or missing language renders as plain, un-highlighted code.

Footnotes

Reference a note with [^1] in your text and define it on its own line with [^1]: the note (the id can be a word, like [^why]). References are numbered by first appearance and collected, with back-links, at the foot of the page.

Writing isn't linear, and the numbering keeps up. Insert a citation between two earlier ones — with /footnote or the format bar's + — and every reference renumbers to reading order on the spot: the new one takes its rightful place and the later ones step up, with the notes list reordering to match. Your ids never change, so [^why] stays [^why] in the source.

Cite the same source twice. When the page already has footnotes, /footnote first asks: start a new note (just press Return — it's preselected, so the quick path is exactly two keys) or reuse any existing source, listed by number with a snippet of its text. A reused source shows the same number at both places and keeps a single definition at the foot of the page.

Callouts

Start a blockquote with [!type] to turn it into a colored callout box — the same syntax Obsidian and Joplin use:

> [!warning] Heads up
> This part is important.

Types include note, info, tip, success, question, warning, danger, quote, and example — each with its own color and icon. Add an optional title after the type, or leave it off for a default label.

Callouts only appear rendered in the Formatted view. In the raw Markdown source they stay as plain > [!note] … text — that's expected. Flip to the rendered view with the Markdown ⇄ Formatted pill in the page's top-right corner (or ⌃⌘P); the same toggle covers every Markdown page. Callouts also render in HTML / PDF / web exports and on published static sites.

Embedding pages

![[Page Name]] on its own line embeds another page inline. Because it works the same on rich text pages, the full details now live under Pages and Linking ▸ Embedding pages.

Toggles and bookmarks

A toggle is a collapsible section: type / ▸ Toggle, name it, and tuck content inside — click the ▸ to fold or unfold. In Markdown it's > [!toggle] Title (a trailing -, as in [!toggle]-, starts it collapsed).

A bookmark turns a URL into a rich card with its title, description, and thumbnail: type / ▸ Bookmark and paste a link. Click the card to open it in your browser.

A video embeds a playable player right in the page: type / ▸ YouTube video and paste a YouTube link (watch, youtu.be, Shorts, or Live), a Vimeo link, or a TED talk URL — TED plays through TED's own player. The video plays inline, on your Mac, without leaving your notes. Hover the player and use the − / + buttons beneath it to resize — the size you pick sticks. In Markdown the player is just the bare video URL on its own line, so the source stays plain text.

Pasting Markdown anywhere

Paste text that looks like Markdown into a rich text page and MojoPad renders it as formatted content automatically (toggle in Settings ▸ Editing; ⌘Z undoes to plain text). Paste an article into an empty Markdown page and it switches straight to the formatted view.

One honest limitation

Markdown can't express everything the format bar can. Font colors, sizes, faces, and underline survive on screen but degrade to plain text when a formatted-view edit is saved back to source. If a page needs full styling freedom, convert it to rich text.