Skip to main content

Standalone markdown editor with live preview and image support

Project description

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)
--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

# 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
  • 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
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

Project details


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.3.0.tar.gz (763.2 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.3.0-py3-none-any.whl (764.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: zenmarked-0.3.0.tar.gz
  • Upload date:
  • Size: 763.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zenmarked-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4f0b3a28b5b5bdaf9291833be4601ac13a1674e3381355a98f77c02ab0e37a66
MD5 44e30d596e7c83de8a7dd666612451c2
BLAKE2b-256 5b063644db3ed428e9ee2b5afc8a05e8cb7506a91c0e8321aa974200ffc51d3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenmarked-0.3.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.3.0-py3-none-any.whl.

File metadata

  • Download URL: zenmarked-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 764.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zenmarked-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b8fd9f7ad7e0266317ccdf14cc858e65cd3e71ab4f9c8a29970e0f04a5eef9b
MD5 dc2706a33203088cb32a3d5cd6998d59
BLAKE2b-256 02d9b7a56cd9b441043562c9adc291b547de82cac76decf0df4a710f99069c05

See more details on using hashes here.

Provenance

The following attestation bundles were made for zenmarked-0.3.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 Pingdom Monitoring Sentry Error logging StatusPage Status page