Markdown Editor

Markdown files (.md, .markdown, .mdx) open in a live rendered editor. You edit the formatted output directly: headings, bold text, lists, tables, math, and code blocks render as you type.

Formatting toolbar

The toolbar provides one-click formatting:

  • Bold, italic
  • Headings (H1, H2)
  • Bulleted and numbered lists
  • Blockquote
  • Code block
  • Horizontal rule
  • Link, image, and table insertion

Guided insertion

  1. Select the text you want to linkify.
  2. Click the Link button in the toolbar.
  3. Enter a Destination in the Insert Link dialog.
  4. Click Apply.

The destination can be any of these:

DestinationExample
Section in the same document#installation
Relative file, optionally with a section../guide.md#setup
File URLfile:///Users/you/notes/todo.md
Web addresshttps://example.com
Emailmailto:team@example.com

If no text is selected, CrispyVibe shows Select text first to add a link. and inserts nothing. The dialog rejects other schemes with Only section, file, HTTP(S), and email links are supported.

To change an existing link, right-click it and choose Edit. The Edit Link dialog opens with the current destination prefilled; click Update to save it.

Images

  1. Click the Image button in the toolbar.
  2. Search for an image in the picker (case-insensitive filtering).
  3. Select an image. The path resolves automatically.
  4. Edit the alt text.

Tables

  1. Click the Table button in the toolbar.
  2. Specify the number of rows and columns (default 3 × 3).
  3. A markdown table with header and separator rows is inserted.

Tables stay GFM pipe tables after rich-mode edits, including column alignment and escaped pipe characters.

Section links navigate within the current file. Links to other Markdown files open in the same view, while web and email links follow the choices below:

Link typeClickRight-click
#sectionScrolls to the matching heading and briefly highlights itGo to Section, Edit, Copy, Remove
Relative or file: linkOpens the file in the same CrispyVibe view. A #section in the link scrolls to that heading after the file renders.Open in Crispy, Default App, Edit, Copy, Remove
HTTP(S) linkFollows your Markdown Web Links setting (see below)Open in Crispy, Default Browser, Edit, Copy, Remove
mailto: linkShows the link actionsOpen in Default App, Edit, Copy, Remove

Section jumps and linked Markdown files share one navigation history. Press Cmd+[ to go back and Cmd+] to go forward. Compact Spotlight and Terminal Board views also show Back and Forward buttons.

When you open another Markdown file through a link, the view’s title, folder, comments, and file actions follow the file currently shown. Pinning the view or moving it between the board, Spotlight, and Detailed view keeps the current file and its navigation history.

  • Remove unwraps the link and keeps its visible text.
  • Copy copies the link destination.
  • Option-click a link to place the caret inside it and edit its text without following it.
  • Focus a link with the keyboard and press Return to activate it. Press Escape to dismiss the link actions.

Section links match headings by a generated slug: lowercase text, punctuation removed, spaces turned into hyphens. Duplicate headings get -2, -3, and so on. The second ## Setup is #setup-2.

Choose where web links open in App Settings > Appearance > Markdown Web Links > Open web links in:

OptionBehavior on click
Ask Each Time (default)Shows a small popover with Open in Crispy, Default Browser, Edit, Copy, and Remove
Crispy BrowserOpens the page in CrispyVibe’s built-in browser
Default BrowserOpens the page in your macOS default browser

Right-clicking a web link always shows every action, whatever you choose here. Section links and linked project files always stay inside CrispyVibe.

CrispyVibe refuses to follow these and shows a short explanation instead:

  • javascript:, data:, and other unsupported schemes
  • Protocol-relative links (//example.com)
  • Web addresses with embedded credentials (https://user:pass@example.com)
  • Malformed or empty destinations
  • Local files that do not exist, or that point to a folder

In Source mode, links are plain Markdown text and are never activated.

Math

Inline and display math render with KaTeX in rich mode:

  • $E = mc^2$ — inline math
  • $$ … $$ — display math
  • \\(2 + 3 = 5\\) — inline math that starts with a number

Currency stays as editable text. $8M, $2M, $16,655.00, and amounts with K, M, B, or T suffixes are never treated as math, so a sentence with two prices does not turn into an equation. CrispyVibe saves math in the delimiter form you wrote, so a \\(…\\) equation is still math when you reopen the file.

Rich/Source toggle

Switch between the rendered view and raw markdown source at any time. Content state is preserved across toggles, so edits in one view appear in the other.

Line numbers

In Source mode, line numbers appear in the gutter with the default Source Editors setting.

To see line numbers in rich mode too, set App Settings > Appearance > Line Numbers > Show line numbers to All Text Views. Each paragraph, heading, list, table, and block then shows the source line it starts on. Wrapped lines do not get extra numbers. The labels follow your theme and text size, sit beside the comment indicators, and are never saved into the file.

Text size

Use Cmd++ or Cmd+= to enlarge, Cmd+- to shrink, and Cmd+0 to reset to 13 pt. The same commands are in the View menu. Rendered text, tables, code, diagrams, math, and dialogs resize in place. The document does not reload, and your caret, scroll position, and unsaved edits stay put.

Find and replace

Press Cmd+F to open find and replace. Features:

  • Case-insensitive matching
  • Match highlighting
  • Navigate between matches
  • Replace next or replace all

Code blocks

Fenced code blocks render with language-aware syntax highlighting based on the language identifier.

Autosave

Changes save automatically after approximately 450ms of inactivity. An unsaved indicator appears in the tab while changes are pending. Typing, table edits, and comment updates keep your caret where it is while CrispyVibe syncs the document in the background.

Troubleshooting

ProblemSolution
Link does nothingSelect text first. CrispyVibe needs a selection to create a link.
Section not found appearsCheck that the fragment matches the heading slug: lowercase, punctuation removed, spaces as hyphens, with -2, -3 for duplicates.
A web link is blockedUse a complete http:// or https:// address without a username or password in it.
A relative file link does not openCheck that the target exists relative to the current Markdown file and is a file, not a folder.
Clicking a link follows it when you want to edit itOption-click the link, or right-click it and choose Edit.
An equation that starts with a number shows as plain textWrite it as \\(…\\) in Source mode instead of $…$.
A table was saved as HTMLUpdate CrispyVibe and reopen the file. Rich-mode table edits are saved as GFM tables.
The editor shows blank contentThe editor recovers automatically. If it stays blank, close and reopen the file.