markstageType it. Ship it.

63 features, all in the free self-hosted editor

Markstage features, in plain words.

Each feature below works today in the example blog that comes with the code, and links to the page of the docs that explains it. Planned work is on the roadmap, never here.

12 features

Writing

The block editor people already know from Notion, drawn on your real design instead of grey form fields.

Type “/” for any block

On an empty line, “/” opens the block menu: a small drawing of each block, filtered as you type. Or click the “+” beside a line.

Writing with Markstage
Type “/” for any block: On an empty line, “/” opens the block menu: a small drawing of each block, filtered as you type. Or click the “+” beside a line.

Drag blocks by their grip

Every block has a grip. Drag it, or open its menu: move up, down, to the top, to the bottom or to a place you pick, duplicate or delete, with Undo.

Writing with Markstage
Drag blocks by their grip: Every block has a grip. Drag it, or open its menu: move up, down, to the top, to the bottom or to a place you pick, duplicate or delete, with Undo.

Find anything with ⌘K

One search box for pages, posts, the editor’s screens and settings. The ones you opened last come first.

Writing with Markstage
Find anything with ⌘K: One search box for pages, posts, the editor’s screens and settings. The ones you opened last come first.

The outline of the page

Every block in a list, each section under its heading: fold sections, show headings only, drag rows or move several at once.

Writing with Markstage
The outline of the page: Every block in a list, each section under its heading: fold sections, show headings only, drag rows or move several at once.

A bar over selected words

Bold, italic, a link, a heading, a list or code. A link searches the site’s own pages, with new tab, nofollow and sponsored beside it.

Writing with Markstage

Markdown shortcuts as you type

Start a line with # for a heading, - for a list or > for a quote, and type --- for a divider.

Writing with Markstage

Paste from Word, cleanly

Word’s lists and headings arrive as real blocks, and its office markup is left behind.

Writing with Markstage

Tables you change in place

A Table menu adds, moves, sorts and deletes rows and columns; Alt and an arrow moves a row.

Writing with Markstage

Find and replace

⌘F finds in the article, ⌥⌘F replaces as well, and one ⌘Z takes a Replace all back.

Writing with Markstage

MDX too

Type the words of an .mdx file on the page; components show as cards with simple settings in a side panel, and the code stays exactly as written.

Editing MDX

The Markdown file itself

Source shows the file as it is written; Visual brings the page back with your changes.

Writing with Markstage

A guide inside the editor

Press ? for the keyboard shortcuts and “How do I…” topics, each able to point at the part of the screen it is about.

Writing with Markstage

12 features

Pages, sections and media

Pages, posts and pictures, edited where they appear, with parts to use again.

Edit on the real page

Each entry is drawn inside its real page, with the site’s components, CSS and column width. JSON pages too, with each section’s fields in a side panel.

Writing with Markstage
Edit on the real page: Each entry is drawn inside its real page, with the site’s components, CSS and column width. JSON pages too, with each section’s fields in a side panel.

A Library of parts

Page templates, sections and snippets in folders. A synced item is edited once and every page that uses it follows.

The Library
A Library of parts: Page templates, sections and snippets in folders. A synced item is edited once and every page that uses it follows.

Images and files in one place

Upload, find and reuse; see which images have no alt text or are not used; replace one everywhere it appears.

Markstage API (contract)
Images and files in one place: Upload, find and reuse; see which images have no alt text or are not used; replace one everywhere it appears.

Your site’s own boxes

FAQ, tips, steps and the other boxes your site defines are drawn as the page shows them; you type straight into them.

Writing with Markstage

Drag a section onto the live page

On a page made of sections, drag one from the Library onto the page itself; a line says where it will land, and Undo takes it out again.

Writing with Markstage

Alt text right on the image

Caption and alt text under the picture, a switch for decorative images, and widths, crop, rotate and replace in a bar over it.

Writing with Markstage

Stock photos, with your own key

With an Unsplash or Pexels key on the server, the media library searches free stock photos and keeps each photographer’s name with the photo.

Deploying Markstage

Page frames and page types

Full width, reading or plain, and a page type with the checks that kind of page needs.

Page frames and page types

Authors and co-authors

A profile per person, kept as a JSON file, linked from posts, with an author page each.

Authors

Translation status

For each region: which titles and descriptions are missing, outdated or done, newest change first.

Translation status

Choices from other systems

A setting whose options come from a product catalogue or a CRM, fetched from a JSON address on a schedule.

Integration fields

13 features

Team, releases and publishing

Prismic-style releases, environments and roles, included and free to self-host.

A publish sheet that checks

What changes, the checks (the site’s rules, alt text, links, the page on a phone), then now or at a time. By default, a missing alt text or a broken link stops it.

Writing with Markstage
A publish sheet that checks: What changes, the checks (the site’s rules, alt text, links, the page on a phone), then now or at a time. By default, a missing alt text or a broken link stops it.

Releases

Put several changes into one release, preview the site as it will be, then publish now or at a time, in one commit. Roll it back if you need to.

Releases and share links
Releases: Put several changes into one release, preview the site as it will be, then publish now or at a time, in one commit. Roll it back if you need to.

Local, staging, production

Each environment is a branch plus a server. Promote code and content together, with checks, screenshots and rules about who may do it.

Environments: local, staging, production
Local, staging, production: Each environment is a branch plus a server. Promote code and content together, with checks, screenshots and rules about who may do it.

Forms in your own inbox

The site’s forms post to Markstage on your own host: spam checks, limits, team mail and a daily digest.

Forms, messages and alerts
Forms in your own inbox: The site’s forms post to Markstage on your own host: spam checks, limits, team mail and a daily digest.

Share links

A preview of a release or a draft for people with no account. It expires, can be turned off, stays out of search engines, and counts its views.

Releases and share links

Every save is a commit in your name

With the Markstage server, a save is a git commit by the person who saved.

Markstage API (contract)

Roles, as WordPress names them

Owner, Administrator, Editor, Author and Contributor, decided in one place on the server.

Permissions

Custom roles

A translator, a reviewer or an editor who may not upload: limited to collections, locales and even single fields.

Custom roles

Single sign-on and two-factor

Sign in with Google Workspace, Microsoft Entra ID, Okta or any OpenID Connect provider; two-factor codes with recovery codes.

Single sign-on (OpenID Connect)

Locks

Lock a block or a section against moving, deleting or changing; the site can set locks on every page.

Writing with Markstage

See who else is editing

A line under the header says when someone else has the page open, and saves still check the version.

Markstage API (contract)

Webhooks and imports

Signed webhooks for saves, publishes and new media; entries and media imported from JSON, with a dry run first.

Webhooks

8 features

SEO and site health

Search checks while you write, and links that keep old pages and new ones together.

Search checks while you write

The search result as Google shows it, measured in pixels; headings in order (a skipped level is flagged); weak links and images without alt text.

Writing with Markstage
Search checks while you write: The search result as Google shows it, measured in pixels; headings in order (a skipped level is flagged); weak links and images without alt text.

Search and social previews

Post settings shows the search result and the social card as you type the title, description and cover.

Writing with Markstage

See it on a phone or a tablet

Pick a screen, and a list says what does not fit: too wide, too small to tap, text too small.

Writing with Markstage

Topics and a topic map

Put a page in a topic and its group, so pages in a topic list each other on the site.

Writing with Markstage

Redirects that follow a move

When an address changes, the old one goes on working; moved addresses are listed in one place.

Writing with Markstage

Site check-up

Broken links, redirect chains, missing alt text and what the host serves for every address, for the whole site.

Markstage API (contract)

7 features

Safety and history

A save changes only what you changed, and nothing you typed is lost.

History of every save

Compare any two saved versions side by side, and restore one block or the whole page.

Writing with Markstage
History of every save: Compare any two saved versions side by side, and restore one block or the whole page.

A save is a clean diff

Only the changed blocks are rewritten. Open and save with no edit, or move a block and move it back, and the file is byte for byte the same.

Markstage API (contract)

Never lose typing

Your unsaved text is kept in this browser, so a closed tab or a crash loses nothing; the editor offers it again when you come back.

Writing with Markstage

A three-way merge

When two people change one page, what only one side changed comes in by itself; where both changed a block, you pick yours, theirs or both.

Markstage API (contract)

Trash, backups and rollback

Deleted entries go to the trash first; the server keeps backups, and a release or a promotion can be rolled back.

Deploying Markstage

Previews kept apart

A page with unsaved changes is drawn on an origin of its own, so the page’s code never runs with your session.

Preview render

11 features

AI and MCP

AI that drafts, people who publish. Bring your own key; nothing is saved until a person reads it.

An MCP server for AI agents

Claude or any MCP client reads the site and drafts as the person whose token it holds, with the same roles, locks and checks. It never deletes or promotes, and publishes only if you allow it.

The MCP server: AI agents
An MCP server for AI agents: Claude or any MCP client reads the site and drafts as the person whose token it holds, with the same roles, locks and checks. It never deletes or promotes, and publishes only if you allow it.

The markstage mcp relay

For a local client that speaks MCP over stdin and stdout: one command keeps the token and passes each message on.

The MCP server: AI agents

Publishing by an agent, only if you allow it

An owner or administrator may give an agent a publish token, with a plain warning. The site’s checks run first, then its publish rules and roles decide, as for you; each publish names the agent.

The MCP server: AI agents

Writing help on a selection

Select words, then Improve with AI: rewrite, shorten, fix the spelling or change the tone. The change shows beside the words; accept, edit or reject it.

AI suggestions

Alt text suggestions

Suggest on an image’s Alt line writes a description for you to accept, change or dismiss.

AI suggestions

Search title and description

Suggest title and description in the SEO check, next to the result as Google shows it.

AI suggestions

Fixes for search problems

Suggest a fix under a problem the SEO check found: a title or description too long or short, a heading out of order, “click here” link words, missing alt text. The fix shows as a diff to accept, edit or reject.

AI suggestions

Translation drafts

Draft translation under a region in Post settings, for a person to read and save.

AI suggestions

A promotion summary

Summarize changes beside a promotion’s reason, in plain words, from what the plan changes.

AI suggestions

Your choice of AI provider

Anthropic, any OpenAI-compatible endpoint (OpenAI, Azure, OpenRouter, Together, LM Studio) or Ollama on your own machine with no key.

AI suggestions

Try it on the example blog

Clone the repository, install, and open the editor on the example blog: every feature above is there.

Install in three stepsGet it on GitHub