Free & open source · Windows installer available

The Markdown & MDX editor for developers who blog.

Write blog posts, capture ideas, compress images, and publish to every site you run — from one desktop app. Mditoor edits the plain .md and .mdx files in your repos, with a frontmatter editor and git built in.

~4 MB installer No account No telemetry MIT licensed
Search posts…
GalleryList
SRPublished

Shipping React Server Components to prod

What broke, what got faster, and the caching bug that cost us a weekend.

Sep 248 min read
RTDraft

Rust traits for TypeScript developers

Interfaces, generics and the borrow checker, mapped to things you already know.

Edited 2h ago5 min read
PGPublished

Postgres indexes I actually use

Partial, covering and BRIN indexes with real query plans from a side project.

Sep 1211 min read
FOPublished

Self-hosting web fonts the right way

Subsetting, preload, and font-display without the layout shift.

Aug 304 min read
نصDraft

مقدمة إلى Docker للمطورين

شرح عملي للحاويات من الصفر.

Edited yesterday6 min read
CIPublished

A 40-line GitHub Actions cache that works

Stop reinstalling node_modules on every push.

Aug 183 min read
What could you write about? Jot it down… Add
Inbox3

Benchmarks: Bun vs Node for CLI tools

My dotfiles, explained

zsh, tmux, neovim config tour

Feature flags without a vendor

Up next2

Debugging memory leaks in Node

heap snapshots, the event listener one

SQLite is enough

Drafted1

Rust traits for TypeScript developers

⋮⋮titlerequiredtext
⋮⋮daterequireddate
⋮⋮statusselect
⋮⋮tagstags
⋮⋮coverimage
WEBP
rsc-cover.webp184 KB
JPG
rust-traits.jpg212 KB
PNG
query-plan.png96 KB
JPG
ci-graph.jpg141 KB
WEBP
docker-101.webp77 KB
Unused
old-banner.png1.2 MB

Optimize on import

Applied to every new image

Max width2000px
Quality82
SharpenOn
Last import4.8 MB → 312 KB
main↑ 1 to push
Changes3
Mrust-traits/index.mdx+42-6
Arust-traits/cover.webp
M.mditoor-ideas.json+3-1

post: Rust traits for TypeScript devs

CommitCommit & push
rust-traits/index.mdx+42-6
---
title: Rust traits for TypeScript developers
-status: idea
+status: draft
+cover: ./cover.webp
tags: [rust, typescript]
---
+## Traits are interfaces with superpowers
+If you've used `implements` in TypeScript,
+you already know half of this.
One app, the whole workflow

A blog Markdown editor that covers the whole workflow.

Mditoor sits on top of the repos you already have. Think of it as a local, git-based CMS for your static site — no hosted backend, no database, no lock-in.

MDX and Markdown editor with a frontmatter form

Browse every blog post as a gallery or list, see drafts at a glance, and write in a block editor or raw Markdown. Frontmatter becomes a real form with dates, selects, tags and image pickers — no hand-editing YAML.

  • Block editor with slash menu, code blocks, tables and callouts
  • Custom frontmatter fields per workspace, YAML or TOML
  • SEO checks before you publish

Traits are interfaces with superpowers

If you've used implements in TypeScript, you already know half of this.

trait Summary { fn summarize(&self) -> String; }

وتكتب بالعربية في نفس المقال، والاتجاه يُضبط تلقائياً.

Rust traits for TS devs
2026-09-28
draft
rusttypescript

A blog ideas board that feeds your drafts

Capture blog post ideas the moment they show up, move them from Inbox to Up next, and turn any idea into a draft post with one click. Ideas live in your repo next to the posts.

  • Quick capture from anywhere with the command palette
  • Star, search and reorder by stage
  • Stored as .mditoor-ideas.json, versioned with git
Inbox3

Benchmarks: Bun vs Node for CLI tools

My dotfiles, explained

zsh, tmux, neovim config tour

Up next2

Debugging memory leaks in Node

heap snapshots, the event listener one

SQLite is enough

Image compression before images hit your repo

Drag a screenshot in and Mditoor resizes, compresses and sharpens it on import, so your blog stays fast. The asset gallery shows every image in the workspace and flags the ones no post uses anymore.

  • Max width, quality and sharpening per workspace
  • Re-optimize any existing image from the gallery
  • Find and clean up unused images

Optimize on import

Applied to every new image

Max width2000px
Quality82
SharpenOn
screenshot-2026-09-28.png4.8 MB → 312 KB

Multiple blogs, repos and image sources

Add a workspace per repo — your personal blog, the docs site, the company blog — and switch between them instantly. Each one picks where its images go: next to the post, a public/ folder, or any S3-compatible bucket.

  • Unlimited workspaces, each with its own fields and framework preset
  • S3, Cloudflare R2, MinIO and other S3-compatible storage
  • Credentials encrypted on your machine, safe to commit the config
📝
Personal blog~/code/my-site/content/posts
Next.js
📚
Docs site~/work/docs/blog
Docusaurus
🏢
Company blog~/work/www/src/content/blog
Astro
Image storage
Next to postpublic/S3 bucket

https://cdn.example.com/blog/rust-traits/cover.webp

And the rest

A desktop Markdown editor built for how developers write.

Git built in

Status, diffs, stage, commit, pull and push without leaving the post.

Command palette

Ctrl K to jump to any post, workspace or action.

RTL + LTR writing

Direction is detected per block, so Arabic and English mix cleanly in one post.

UI in 3 languages

English, Arabic and French, with a full right-to-left layout.

SEO panel

Title length, description, headings and links checked before you ship.

MDX friendly

Imports and JSX components stay intact. Your files are never rewritten behind your back.

Local-first

No account, no telemetry, no cloud sync. Only the git and uploads you trigger.

Tiny and native

Built with Tauri and Rust. A ~4 MB installer that starts instantly.

Framework presets

A Markdown blog editor for Next.js, Astro, Hugo and more.

Point Mditoor at your static site's repo and it detects the framework, finds the posts folder, and picks sensible defaults. Everything can be changed later.

PresetPost fileFrontmatterImages
Next.js<slug>/index.mdxYAMLpublic/images
Astro<slug>.mdYAMLnext to the post
Hugo<slug>/index.mdTOMLnext to the post
JekyllYYYY-MM-DD-<slug>.mdYAMLassets/images
Docusaurus<slug>/index.mdYAMLnext to the post
Eleventy<slug>.mdYAMLnext to the post
Nuxt Content<slug>.mdYAMLpublic/images
Generic<slug>/index.mdxYAMLnext to the post

Using another framework, or storing posts in a different folder structure? The Generic preset lets you set the folder, file name and frontmatter format yourself — or request a preset.

FAQ

Questions about the Markdown & MDX editor

Is Mditoor a free Markdown editor?

Yes. Mditoor is free and open source under the MIT license. There is no account, subscription or telemetry.

Can I edit MDX files with Mditoor?

Yes. Mditoor is a Markdown and MDX editor. It opens .md and .mdx files in place, keeps imports and JSX components intact, and edits frontmatter as a form.

Which blog frameworks does Mditoor support?

Mditoor has presets for Next.js, Astro, Hugo, Jekyll, Docusaurus, Eleventy and Nuxt Content, plus a generic preset for any static site that stores posts as Markdown or MDX files.

Is Mditoor a CMS?

Mditoor works like a local, git-based CMS for static sites. Your posts stay as plain Markdown files in your repository and you publish by committing and pushing from the app.

Does Mditoor compress images?

Yes. Images are resized, compressed and optionally sharpened when you add them, and the asset gallery shows unused images so you can clean them up.

Does Mditoor work offline?

Yes. Mditoor is a local-first desktop app. It only uses the network for git operations and image uploads that you trigger.

Is Mditoor available for Mac and Linux?

A Windows installer is available now. On macOS and Linux you can build Mditoor from source; packaged builds are planned.

Your blog deserves a real writing tool.

Free and open source. Windows installer available now; macOS and Linux build from source.