Skip to content

Latest commit

 

History

History
299 lines (209 loc) · 31.5 KB

Usage-Guide.md

File metadata and controls

299 lines (209 loc) · 31.5 KB

Usage Guide: Online Markdown Editor with Live Preview

This guide explains how to use Markdown Viewer as a browser-based Markdown editor, viewer, reader, and live Preview tool. For deeper implementation notes and renderer limits, see Features. For data handling, see Privacy and Security.

Workspace Layout for Editing and Previewing Markdown

The app has seven main areas:

Area What It Does
Header Shows the app name and primary New, Export, Share, Live Share, Sync, Copy, About, and Workspace settings actions.
Files sidebar Organizes stored Markdown files without an application count limit in fixed Workspace and Secret Workspace roots, with nested folders, All files, Recent, Favorites, and search.
Tab bar Preserves quick switching and drag-to-reorder for open documents.
Formatting toolbar Inserts Markdown syntax, opens helper modals, starts Find and Replace, toggles fullscreen, and switches review/view modes.
Editor pane Plain-text Markdown textarea with line numbers, custom undo/redo, list continuation, and find highlights.
Preview pane Sanitized rendered Markdown with math, diagrams, maps, models, music, alerts, and syntax highlighting.
Status bar Centers reading time, word count, and character count, and shows Saving or All changes saved at the right.

Use the view buttons to switch between Editor, Split, and Preview. Split view is the main live Markdown preview workflow: type, paste, or open Markdown on one side and read the rendered result on the other. Sync scrolling can keep the source and preview aligned while you write. Drag the divider to change the pane widths. The app prevents either side from becoming too narrow. On small screens, the document sidebar opens as a full-height drawer and the mobile menu exposes the remaining main actions without forcing a cramped split layout.

To compare or edit two files, open a file menu and choose Open in split view, then select the second document. A shared control switches both sides between Edit and Preview. Preview mode supports Markdown, math, diagrams, maps, STL, and ABC rendering. Use the combined tab menu to exit this view.

Fullscreen on Safari and Mobile

Select Fullscreen in the formatting toolbar (scroll the toolbar horizontally on narrow screens), or use F11 / Cmd+Option+F where the browser permits these shortcuts.

  • Desktop browsers and supported iPad Safari versions use native fullscreen. Safari versions before 16.4 use its prefixed API.
  • On browsers without page fullscreen, including iPhone Safari, the button opens Expanded view. This hides the app header and fits the workspace to the visible viewport as the window, orientation, or keyboard changes. Safari's address and navigation bars remain under the browser's control.
  • Select Exit expanded view or press Escape to restore the normal layout. If a dialog has focus, Escape closes it first. The exit button stays available after switching to Release Notes or closing all tabs.

Native page fullscreen on iPhone depends on browser support and cannot be enabled by a website fix. WebKit tracks it in bug 206854; Safari 16.4's release announcement describes support on macOS and iPadOS.

Document Outline

Select the book-text button to open Document Outline. The formatting toolbar places these controls in order: Emoji | Find & Replace | Full Screen | Document Outline. On narrow screens, scroll the toolbar horizontally to reach them. The right sidebar lists the current document's H1–H6 headings in a nested tree, with indentation and subtle hierarchy guides. It updates automatically as you edit, import, or switch documents. Headings inside code blocks do not appear.

Use a heading's chevron to collapse or expand its children. Headings without children have no chevron. Collapsed branches stay collapsed as you edit; collapsing a parent preserves the states of its nested branches.

The header's Collapse all headings / Expand all headings button controls every branch, using the same folding icons as the File Sidebar. It collapses all groups when any group is expanded, then changes to Expand All when all groups are collapsed. It keeps the outline panel open and is disabled when there are no parent headings.

Use Copy table of contents in the header to copy a TOC from the current Markdown, including collapsed branches. By default it copies H2–H4 as a nested list of links, omitting the usual H1 document title and H5/H6 detail. The settings button beside Copy exposes minimum and maximum heading levels (H1–H6), bulleted links, hierarchical numbered links (1., 1.1, 1.1.1), or plain indented text. It can also wrap linked output in a <details> block. Plain text contains no wrapper or links. These settings affect copied output only; the outline still shows all headings. Settings remain in effect while the page is open.

Skipped levels keep their real indentation (H2 → H4 indents twice); enable Normalize heading levels to indent each existing parent/child relationship once instead. All headings in the chosen range are included, even a heading named “Table of Contents.” Copy is disabled when the range contains no headings; the settings show an explanation.

The TOC reads the Markdown AST, excludes code blocks and YAML front matter, and strips inline formatting while keeping display text, including emoji and non-Latin characters. It ignores raw HTML heading blocks. GitHub-compatible anchors are generated in document order before depth filtering, so duplicate headings keep their correct -1, -2 suffixes. Underscores and Unicode letters are preserved; punctuation and emoji are removed without collapsing adjacent hyphens. For example, 🚀 Getting Started links to #-getting-started. Symbol-only headings use heading, heading-1, etc. as a fallback; external GitHub rendering may use an empty anchor for those exceptional headings. The preview uses the same generated IDs as Copy TOC.

Copying does not edit the document or depend on the preview finishing. Paste the result wherever needed; a pasted TOC is ordinary text and must be copied again after headings change.

Document Outline and Find & Replace use text-only header titles and the same default width of 340px. On desktop and tablet, drag either panel's inner edge to resize it, using the same handle as the File Sidebar. With the handle focused, use Left/Right Arrow to move the edge by 10px, or Shift+Arrow for 25px. Home or a double-click restores the default width, subject to the available document space. Widths stay between 220px and 420px, and docked panels leave room for the document. On mobile, both panels fit the screen and the resize handles are hidden.

Select a heading to jump to that section while staying in your selected mode: Editor moves the caret and scrolls the source, while Preview and Split scroll the rendered document. The current section is highlighted as you scroll; if it is inside a collapsed branch, the visible parent is highlighted. On small screens, the outline closes after navigation so you can read the selected section. Close it with the toolbar button, the close button, or Escape while focus is inside the sidebar. Opening Comments closes the outline, and opening the outline closes Comments.

The outline is generated locally from the current document and is not saved separately or included in exports.

Files, Folders, and Autosave

  • Select Workspace, Secret Workspace, or a folder, then use the clearly labeled New file or New folder button. The selected row shows where the item will be created; the plus menu beside an unlocked workspace or folder creates directly inside it.
  • Workspace roots are fixed. Create nested folders inside Workspace or the password-protected Secret Workspace.
  • The first time Secret Workspace is opened, create a password of at least eight characters. Files and folder names are encrypted locally. Use its menu to lock it when finished; the password cannot be recovered.
  • When multiple files are selected, dragging any selected file moves the full selection and the drag preview shows the file count. Expanded folders accept drops across their visible contents, not only on the folder name.
  • Drag a file row onto a folder or workspace to move it. Use Move to… from the file menu as the keyboard and touch-friendly alternative. Dropping local Markdown files onto a folder imports them there.
  • Use All files for the hierarchy, Recent for recently opened or edited files, and Favorites for starred files.
  • Document titles, folder names, and Move-dialog destinations use natural numeric ordering, so names such as Untitled 2 appear before Untitled 10.
  • On desktop, one click selects a sidebar document and a double click opens it. On touch layouts, one tap opens it and closes the drawer.
  • The active Document is the one shown in the primary Editor/Preview, used by formatting, review, import-into-current, export, Share Snapshot, and Live Share actions. Opening a second Document in the two-Document view does not make it the active Document.
  • Each document menu supports Open, Rename, Duplicate, Favorites, Move, Open in split view, Download Markdown, and Delete. The tab strip supports quick switching, drag-to-reorder, and close commands for one or several tabs.
  • To close a document tab, point at it and press the mouse's scroll wheel down (middle-click). The scroll wheel acts as the middle mouse button on a typical mouse. Pressing it is different from rotating it: rotating the wheel over the tab strip scrolls through tabs without closing them. You can also use the tab's Close (X) button or its context-menu close commands.
  • Ctrl/Cmd-click selects separate Explorer items; Shift-click or Shift+Arrow selects a range. When only files are selected, the context menu can Open all or Move to…. Deleting selected files moves them directly to Trash; deleting a selection that contains folders still asks for confirmation.
  • Deleting a file moves it directly to Trash without confirmation. Open Trash from the Explorer toolbar or Workspace settings to restore a selected item, permanently delete a selected item after confirmation, or empty all items after confirmation. Valid deleted items are permanently removed automatically after 30 days; records with missing or corrupt retention metadata are kept for manual review instead of being auto-purged.
  • Deleting a folder tree moves all files inside it to the workspace root before removing the folders.
  • Dragging or selecting several local Markdown files shows a small import-progress popup at the bottom of the screen until processing finishes.
  • Closing a normal tab keeps its saved Document and draft in Explorer. Closing all tabs leaves an empty editor; select a Document in Explorer to reopen it.
  • Normal tabs autosave as independent browser records or desktop vault files. Only the opened document content is loaded.
  • Markdown Viewer does not impose a document-count limit; available browser quota or filesystem capacity is the practical limit.
  • Temporary Share Snapshot and Live Share tabs are not saved to the recipient's workspace.
  • Use Private mode from Workspace settings to pause normal Document-state persistence for the current page session. A red incognito status remains visible while it is active; reload or exit resets the mode and resumes normal persistence. Existing normal and Secret Workspace documents remain intact.
  • Use Storage and Backup to inspect usage and file counts, view the browser's read-only persistence status, export or import a folder-preserving ZIP, or open the fixed desktop vault.
  • Use Reset workspace only when you intend to permanently delete all workspace files, folders, settings, Secret Workspace data, history, and trash. The confirmation links directly to Backup.
  • Right-click blank Explorer space to create a file or folder. Right-click the empty Quick Start area to open its five actions. Right-click an editor or preview to use the relevant clipboard and document commands.

Backup: Browser site-data clearing remains destructive. Use Storage and Backup to export a portable ZIP. Importing a ZIP permanently replaces the current workspace. Secret Workspace records remain encrypted and still require the original access key after import. Trash, desktop history, and recovery journals are not included.

Normal Workspace storage is local. Managed media, GitHub import, remote renderers, stored Share Snapshot, Live Share, external assets, map tiles, and uncached web libraries use the network.

Editing Tools

The toolbar can:

  • Format text as bold, italic, strikethrough, quote, inline code, fenced code, terminal block, headings, lists, and horizontal rules.
  • Insert links, images, reference links, date/time stamps, emoji shortcodes, symbols/entities, GitHub alerts, and diagram templates. The table action offers an 8×8 quick selector with pointer and keyboard navigation plus a Custom table dialog for dimensions up to 20×20; row counts include the header.
  • Change selected text to title case, uppercase, or lowercase.
  • Insert left, center, or right aligned HTML blocks.
  • Switch document direction between LTR and RTL.
  • Open Find and Replace, Help, About, and fullscreen.

The editor also supports list continuation on Enter, two-space indent on Tab, outdent on Shift+Tab, and custom undo/redo. View-only shared tabs block editing actions and keep reading, find, help, and fullscreen available.

With the Editor focused, Page Up and Page Down scroll smoothly without shifting the workspace sideways. Hold Shift while paging to extend the text selection. This also works in the secondary document Editor. The app respects your device's reduced-motion preference and keeps synchronized panes aligned during paging.

Slash Commands

Type / at the very start of an Editor line to open Insert block. Type a command name to filter the list, use Arrow Up/Down to choose, press Enter to run it, or press Escape to close the menu. You can also click or tap a command.

The menu includes headings, paragraphs, lists, quotes, horizontal rules, code and terminal blocks, math, links, references, date/time, alerts, tables, diagrams, and images/media. Reference, alert, table, diagram, and media commands open their existing chooser so you can finish the insertion. Typing / after indentation or other text, inside a URL, or while composing text with an IME does not open the menu. Slash commands work in either Editor of the two-Document view and follow RTL placement.

Copying a Document

Use Copy Markdown in the navbar or mobile menu, or press Ctrl/Cmd+Shift+C, to copy the entire active document's raw source. This command ignores partial selections and works in Editor, Preview, and Split modes. With two documents side by side, first click or focus the document you want to copy; toolbar clicks retain that target.

To copy a selection, right-click an Editor or Preview, or open its context menu with a long press on touch devices, and choose Select All. It selects the entire document in that pane using the browser's text selection. With a mouse or keyboard, the menu closes and focus returns to the pane: press Ctrl/Cmd+C, or reopen the menu and choose Copy. With touch, the menu stays available after Select All so you can tap Copy, which closes it. You can also press Ctrl/Cmd+A while a pane has focus. This works in either pane of the two-Document view and in read-only documents.

On touch devices, tapping the surrounding background dismisses the menu while keeping the text selected. Tap the highlighted text to reopen the menu and choose Copy. This also works with partial selections. Swiping still scrolls, and tapping unselected text lets you change the selection or position the Editor cursor normally. Touch presses on selected text do not drag the document text.

  • Editor: Copy provides the selected raw Markdown, including Markdown syntax. Paste inserts clipboard text at the cursor or replaces the selection; rich text is not automatically converted into Markdown.
  • Preview: Copy provides formatted HTML and a plain-text alternative. Paste into a rich-text app such as Google Docs to retain supported headings, emphasis, links, lists, tables, and code blocks. Partial selections and the browser's native Copy command also retain formatting. Preview toolbars and action buttons are excluded.

Ordinary Copy or Ctrl/Cmd+C with no selection leaves the clipboard unchanged. Preview is read only: it supports selection and copying, but Paste, Cut, and typing do not change the document.

Copying runs locally through the system clipboard. The receiving app determines which formatting it accepts; plain-text fields and Paste without formatting use the text alternative. For example, copying **Hello** from the Editor pastes those Markdown characters, while copying Hello from the Preview supplies bold text plus the plain-text alternative Hello. Browsers without rich clipboard support fall back to plain text.

Comments

Use Comments when you want to leave anchored feedback without editing the Markdown source.

  1. Open Comments from the desktop document toolbar or mobile menu.
  2. Select text in a heading, paragraph, list, quote, or code block, or click an image, rendered diagram, map, model, or math expression.
  3. Choose New in the Comments panel. A temporary blue highlight previews the selected anchor; choosing Cancel removes it.
  4. Enter the comment, then choose Submit or press Ctrl+Enter/Cmd+Enter.
  5. Click a comment card or its highlighted document content to activate and synchronize both sides. Hovering either side temporarily highlights the other.

Open, Resolved, and All filters keep completed feedback available without letting it dominate the panel. Comment cards show the author, comment, and date without repeating the selected document text. Active cards reveal nested replies and a compact Reply field; resolved cards also show their closed time. Comments can be edited, resolved, reopened, or deleted. The interface uses a side panel on desktop, a drawer on tablet, and a bottom sheet on mobile. Opening a new tab closes Comments automatically.

Comments stay with normal local tabs and are excluded from document exports, duplicated tabs, and Share Snapshot links. Owner comments use Author. Live Share comments and replies use the participant display name and follow later name changes while the room is active, including for view-only participants. Private mode pauses new local persistence, workspace backups retain comment data, and Reset workspace deletes it. Legacy stored comments and suggestions remain readable.

Find and Replace

Open Find and Replace with the toolbar, Ctrl+F, or Cmd+F. Open replacement focus with Ctrl+H or Cmd+H.

Supported options:

  • Case-sensitive search.
  • Whole-word search.
  • Regular expressions.
  • Regex capture replacements such as $1 and $<name>.
  • Preserve-case replacement.
  • Search only within the selected text.
  • Scope matching to the whole document, headings, code, Mermaid, or LaTeX.
  • Replace current match or replace all.
  • Diff preview before bulk replacement.
  • Floating, docked, draggable, and resettable panel positions.

Scope matching uses Marked's lexer and is best-effort for unusual Markdown.

Importing Documents

Local Files

Use Import > From files, the mobile import button, or drag and drop to save local Markdown files in Explorer. Imported documents remain closed until you select one in Explorer, so large imports do not fill the tab bar. Dropping a file on an Explorer folder imports it there; dropping it elsewhere imports it at the default workspace root. Folders expand after a short drag hover, and the Explorer scrolls automatically near its top and bottom edges.

Paste an image or GIF from the clipboard, drop an image/GIF/video file, or use the media dialog to insert it at the current editor cursor. A progress toast shows preparation and upload status. Still images are optimized, animated GIFs retain their original animation, and MP4, WebM, or Ogg videos are inserted as playable HTML5 media. After first-use consent, the app uploads the file to managed public media storage and inserts a short HTTPS link. Anyone with that unguessable URL can retrieve the media for up to 90 days; after expiry the reference remains in Markdown but the media stops rendering. Documents containing older inline base64 raster images offer to convert them to short links without changing their alt text or title.

  • Managed still images are limited to 300 KiB after optimization.
  • Animated GIFs are limited to 5 MiB, and managed videos to 10 MiB.
  • Supported file types are .md, .markdown, and text/markdown.
  • An individual local Markdown file is limited to 10 MB.
  • Extension matching is case-insensitive.
  • Dragging over the app shows a compact notice without blocking the editor or Explorer drop targets.
  • The app scans the first 8 KB for null bytes and rejects likely binary files.
  • Local file content stays on the device unless you later share it.
  • The 90-day media expiry uses the same duration as stored Share Snapshot links, but each feature keeps separate KV records.

GitHub

Use Import > From GitHub and paste one of these URL types:

  • https://github.com/owner/repo
  • https://github.com/owner/repo/tree/main/docs
  • https://github.com/owner/repo/tree/release/2026/docs
  • https://github.com/owner/repo/tree/758cbeda07ac15093520c803c11140ae9b1f4a2c
  • https://github.com/owner/repo/blob/main/README.md
  • https://raw.githubusercontent.com/owner/repo/main/README.md

Direct Markdown file URLs import immediately into Explorer. Repository, tree, blob, and raw URLs can identify the default branch, an explicit branch (including names containing /), a tag, or a commit SHA. The importer resolves that reference to an immutable commit SHA before listing files. A standard GitHub /commit/<sha> page URL is not an import URL; use a repository tree or blob URL containing the commit SHA instead. After a valid URL is submitted, the Import button shows a spinner while the repository/ref resolves; the modal then expands from its original 520px URL width to the original 760px selection width and shows a shimmer tree until Markdown discovery completes. The searchable, collapsible tree contains every Markdown file found and uses the same compact type scale as other application modals. In the reduced-height repository row, the repository name stays on the left while a wider resolved branch/ref badge and linked short commit are grouped on the right; when the supplied reference is a commit SHA, only the commit is shown, and truncated refs reveal their full value on hover. The toolbar places its lightweight selected-file indicator and matching borderless select/deselect-all and collapse/expand-all controls directly beside the search field. Default-branch imports use a repository-named Explorer folder. Nested GitHub directory paths are preserved, and imported files remain closed until you select one in Explorer.

Public repositories need no credentials. For a private repository, expand Private repository access, enter a recognizable name of up to 60 characters and either a fine-grained or classic PAT, and select Add access. The app accepts both PAT formats automatically. After adding, the form closes and a dropdown lets you select among as many as 50 named tokens before choosing Import. Use the icon controls to add another token or remove the selected one. The importer first tries public access and sends the selected token only to api.github.com when authenticated access is needed. Private file content is downloaded through GitHub's Contents API rather than the raw-content host.

GitHub access tokens survive refreshes and app restarts until you remove them. The app stores each credential payload only as AES-GCM ciphertext and keeps its encryption key in local browser/app data, so no protection passphrase or unlock step is required. Clearing this site's/app's local data also removes access. GitHub validates a token when it is added. Adding, removing, or rejecting a token is reported in a GitHub-branded toast. Local removal does not revoke a PAT on GitHub, so revoke it separately in GitHub settings if it may have been exposed.

Export Markdown to PDF, HTML, PNG, and MD

Export names use the active tab title when possible.

Export Behavior Main Limitations
Markdown Saves the raw .md text. Browser downloads or desktop native save dialog only.
HTML Saves standalone rendered HTML with sanitized content, styles, renderer support hooks, a restrictive CSP, and a remembered Light or Dark appearance. External content referenced by the document may still load remotely when opened.
PDF: Browser Print Builds a Light or Dark off-screen snapshot, prepares all supported rich content, then calls window.print() without changing the visible app theme. Recommended for most long documents. Browser print engines vary; author-specified colors inside diagrams, SVGs, HTML, or images are preserved.
PDF: Legacy Raster Captures the same prepared Light or Dark snapshot with html2canvas and jsPDF, using page-break planning. Memory-heavy for very long documents; cross-origin images need CORS.
PNG Captures a high-resolution Light or Dark rich-content snapshot to PNG. Browser canvas limits apply; cross-origin images need CORS.

Each export format remembers its appearance independently. PDF and PNG preparation waits for Mermaid, ABC, PlantUML, D2, Graphviz/DOT, Vega-Lite, WaveDrom, Markmap, GeoJSON, TopoJSON, STL, math, fonts, and images; Markmaps are fitted to printable bounds. Export progress can be cancelled where the format supports progress reporting.

Share Markdown with Snapshot Links

Use Share Snapshot when you want to send a point-in-time copy.

  1. Choose View only or Can edit.
  2. Click Share.
  3. Copy the generated link.

View only opens the Document in Preview and hides editing. Can edit opens the copy in Split view so the recipient can edit their own local copy. It is not real-time collaboration.

Small Documents are compressed into the URL hash as #share=.... Documents of at least 3,000 UTF-8 bytes, or whose encoded URL exceeds 4,096 characters, are stored through /api/share and opened with #id=.... Stored snapshots use Cloudflare KV for up to 90 days and can contain up to 8,000,000 characters. They are bearer links: anyone with the URL can open the snapshot.

The creation API returns a deletion token, but the current UI does not display it or provide an early-delete action. Normal UI-created stored snapshots therefore remain until expiry. See Share Snapshot.

Shared snapshot tabs are temporary and are not saved into the recipient's workspace.

Live Share Rooms for Markdown Collaboration

Use Live Share when you want a temporary real-time room.

  1. Click Live Share.
  2. Enter or accept a display name.
  3. Choose Can edit or View only.
  4. Start the session.
  5. Copy the invite link after the room starts.

Live Share sends real-time Yjs updates through a Cloudflare Durable Object. It does not persist Markdown or comment content server-side. The Durable Object does persist the host, edit, and view capability values plus their creation time. The invite URL contains a room id, room secret, access role/capability, and title, not the full Document body. The server authenticates host, Can edit, and View only capabilities and filters message types by role. Markdown and comment data use separate Yjs documents, so View only participants can synchronize comments without being allowed to edit Markdown.

Participants get a temporary live tab, presence avatars, and live cursor indicators. The host can end the session for everyone. Rooms are limited to 64 WebSocket participants and 8 MB live messages. Managed images, GIFs, and videos travel as short HTTPS links rather than binary Live Share messages and stop rendering when their 90-day storage TTL expires.

Rendering Diagrams, Maps, Math, STL, and ABC Notation

Use fenced code blocks for advanced renderers:

  • mermaid for Mermaid diagrams.
  • plantuml, d2, graphviz/dot, vega-lite, wavedrom, and markmap for diagrams and charts.
  • geojson and topojson for maps.
  • stl for 3D models. STL sources over 2 MiB, non-finite geometry, and geometry over 300,000 vertices are rejected before rendering.
  • abc for sheet music and playback.
  • math for display math.

Mermaid, Markmap, maps, STL, ABC, and MathJax use client-side libraries. PlantUML, D2, Graphviz, Vega-Lite, WaveDrom, and some diagram previews can send source to remote rendering endpoints such as PlantUML, Kroki, or mermaid.ink.

Keyboard Shortcuts

Markdown Viewer follows familiar Typora-style formatting shortcuts and Obsidian-style application navigation where the app has an equivalent command. Ctrl applies to Windows/Linux and Cmd applies to macOS unless a row says otherwise.

Editing

Action Shortcut
Undo Ctrl+Z / Cmd+Z
Redo Ctrl+Shift+Z, Cmd+Shift+Z, Ctrl+Y, or Cmd+Y
Toggle bold Ctrl+B / Cmd+B
Toggle italic Ctrl+I / Cmd+I
Toggle strikethrough Alt+Shift+5; macOS also supports Ctrl+Shift+`
Toggle inline code Windows/Linux: Ctrl+Shift+` ; macOS: Cmd+Shift+`
Insert link Ctrl+K / Cmd+K
Clear Markdown formatting from the selection/current line Ctrl+\ / Cmd+\
Apply paragraph style Desktop: Ctrl+0 / Cmd+0
Apply Heading 1 through Heading 6 Desktop: Ctrl+1–Ctrl+6 / Cmd+1–Cmd+6
Insert code block Windows/Linux: Ctrl+Shift+K; macOS: Cmd+Option+C
Apply blockquote Windows/Linux: Ctrl+Shift+Q; macOS: Cmd+Option+Q
Apply numbered list Windows/Linux: Ctrl+Shift+[; macOS: Cmd+Option+O
Apply bulleted list Windows/Linux: Ctrl+Shift+]; macOS: Cmd+Option+U
Indent Tab
Outdent Shift+Tab

Find and application navigation

Action Shortcut
Find Ctrl+F / Cmd+F
Replace Ctrl+H / Cmd+H
Next find result F3
Previous find result Shift+F3
Quick open: show Explorer and focus file search Ctrl+P / Cmd+P
Import/open Markdown Ctrl+O / Cmd+O
Save/export Markdown Ctrl+S / Cmd+S
Copy selected text, or whole Markdown when nothing is selected Ctrl+C / Cmd+C
Copy raw Markdown directly Ctrl+Shift+C / Cmd+Shift+C
Toggle Edit/Preview Ctrl+E / Cmd+E
Toggle Explorer Ctrl+Shift+L / Cmd+Shift+L
Open Workspace settings Ctrl+, / Cmd+,
Toggle scroll sync in Split view Ctrl+Shift+S / Cmd+Shift+S
Toggle fullscreen F11; macOS also supports Cmd+Option+F
New document Desktop: Ctrl+N / Cmd+N
New tab Desktop: Ctrl+T / Cmd+T; web and desktop: Alt+Shift+T
Close tab Desktop: Ctrl+W / Cmd+W; web and desktop: Alt+Shift+W
Next/previous open document Windows/Linux desktop: Ctrl+Tab / Ctrl+Shift+Tab; macOS desktop: Cmd+` / Cmd+Shift+`
Close modals, panels, tab menus, and diagram modals Escape

When keyboard focus is on the tab bar, ArrowLeft, ArrowRight, Home, and End move focus; Enter or Space activates the focused tab.

Browser shortcuts are intentionally not all intercepted on the web. For example, document heading shortcuts and Ctrl/Cmd+T/W are desktop-only so the app does not hijack browser tab controls; web tab creation/closing uses Alt+Shift+T/W.

Related pages: Features, Markdown Reference, Privacy and Security, and Troubleshooting.