Skip to main content

zenmarked

A snappy offline-first markdown editor featuring:

  • live preview via marked.js
  • images support: add with drag-and-drop or paste from clipboard
  • syntax highlighting via CodeMirror
  • user-friendly shortcuts

It runs as a local web server, you access it in your browser.

Screenshot of ZenMarked in action

ZenMarked being used to update its own README

Installation

You can install with:

pip install zenmarked

If you use uv, you can install it with:

uv tool install zenmarked

Or skip installation and just use it through uvx like so: uvx zenmarked

Usage

zenmarked [FILE.md] [options]
Argument Description
FILE.md Optional. File to open on start (created if it doesn't exist). Its directory becomes the working directory.
Option Description
--port PORT Port to listen on (default: auto-assign)
--image-dir PATH Directory for uploaded images (default: images/ inside working dir)
--no-autosave Disable auto-save (use Ctrl+S only)
--theme THEME Color theme: light or dark (default: dark)
--mode MODE View mode: split, edit, or preview (default: split)
--no-browser Don't auto-open browser on start

Examples

# Open CWD — sidebar shows all .md files, create/edit freely
zenmarked

# Open a specific file
zenmarked notes.md

# Light theme, custom port
zenmarked journal.md --theme light --port 8080

# Open in preview-only mode (editor hidden)
zenmarked draft.md --mode preview

# Custom image directory, no autosave
zenmarked docs/readme.md --image-dir docs/assets/imgs --no-autosave

Screenshots

Screenshot of zenmarked in dark mode

Dark mode

Features

  • 3-column layout: sidebar (file list + image gallery) + editor + live preview
  • View modes: split (editor + preview), edit (editor only), or preview (preview only) — toggle via the segmented control in the sidebar or cycle with Ctrl+\
  • Markdown syntax highlight via CodeMirror
  • Live preview via marked.js, updates as you type
  • Auto-save enabled by default, Ctrl+S to save manually at any time
  • Image support: drag-and-drop, click drop zone, or paste from clipboard
  • Image insertion modal: alt text, caption, alignment, custom width
  • Click image in preview to edit its properties
  • Rename image right-click image in the gallery to rename it
    • references are updated automatically across all .md files in the working dir
  • Smart URL paste: select text in editor, paste a URL → auto-creates a markdown link
  • Light / Dark themes

Image paths

Images are stored in ./images/ (relative to the working directory) by default, and inserted into markdown as ./images/filename.png.

The image target directory can be overriden through option --image-dir PATH

Keyboard shortcuts

Shortcut Action
Ctrl+S Save current file
Alt+N Create new file
Ctrl+\ Cycle view mode (split → edit → preview)
Escape Close modals
Ctrl+B Bold
Ctrl+I Italic
Ctrl+E Inline code
Ctrl+K Insert link
Ctrl+Shift+7 Ordered list
Ctrl+Shift+8 Unordered list
Ctrl+Shift+. Blockquote

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zenmarked-0.4.0.tar.gz (764.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zenmarked-0.4.0-py3-none-any.whl (765.4 kB view details)

Uploaded Python 3

File details

Details for the file zenmarked-0.4.0.tar.gz.

File metadata

  • Download URL: zenmarked-0.4.0.tar.gz
  • Upload date:
  • Size: 764.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zenmarked-0.4.0.tar.gz
Algorithm Hash digest
SHA256 60475f53ef5eebdbc0db2863159b5bb4850c7b8f4c8e3fb14db29ad4091eb53f
MD5 f4cda0d9b9223ab8ebd59ef33355177b
BLAKE2b-256 f90040f4e3b7351e78faaf0fbfac75e10d9ca13ed3ec50f13ced29354571caba

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenmarked-0.4.0.tar.gz:

Publisher: publish.yml on eliasdorneles/zenmarked

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zenmarked-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: zenmarked-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 765.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zenmarked-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91f004d6149cd690bba38a1bc7c44f0929da91541656ff38739ad2097df31381
MD5 d6302b07ed83c1fb4b9160a17aeb12c4
BLAKE2b-256 c187fca4c7bec15861719c1e5d048a71bf9e31c7ace38a70dffcaa1d41af1177

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenmarked-0.4.0-py3-none-any.whl:

Publisher: publish.yml on eliasdorneles/zenmarked

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page