Markup that respects humans and parsers.
- Visual mnemonics — syntax resembles its output (
/italic/,*bold*,_underline_,~strike~) - One way to do things — no ambiguity, no redundant syntax
- Learnable in 5 seconds, memorable after 5 days — designed around how non-technical users actually mark up text
- No expressive blind spots — every output is achievable without workarounds
- Linear parsing — no backtracking, no forward references
Language
| Project | Description |
|---|---|
| carve | Language definition, design rationale, and quick reference. Docs → |
Implementations
| Project | Description |
|---|---|
| carve-js | Reference TypeScript implementation. |
| carve-rs | Rust parser and HTML renderer with a carve CLI; passes the spec corpus. |
| carve-php | PHP parser and HTML renderer, with converters from Markdown, HTML, BBCode, and Djot. |
| carve-wasm | WASM bindings for carve-rs. Early. |
Editor support
| Project | Description |
|---|---|
| intellij-carve | JetBrains IDEs (IntelliJ, PhpStorm, WebStorm, ...): highlighting, live preview, HTML export. |
| vscode-carve | VS Code extension — syntax highlighting, snippets, live preview. |
| zed-carve | Zed editor support. |
| tree-sitter-carve | Tree-sitter grammar (highlighting, structural editing). |
| carve-lsp | Language server: diagnostics, completion, hover, rename, folding, formatting, and semantic tokens. |
These provide source-mode editing: you write Carve markup and get highlighting, snippets, and a rendered preview side by side.
Integrations
| Project | Description |
|---|---|
| carve-grammars | WYSIWYG rich-text editing via Tiptap / ProseMirror, with a Carve serializer for roundtripping (Carve ↔ rich text ↔ Carve). Also ships Prism and highlight.js grammars for web syntax highlighting. |
| wp-carve | WordPress plugin (carve-php engine) — live preview, paste, REST API. |
| vite-plugin-carve | Vite plugin — import .carve documents as rendered HTML. Early. |
WYSIWYG vs source editing: the editor plugins above edit Carve source with a read-only preview. For WYSIWYG (edit the rendered document directly), use carve-grammars — its Tiptap kit edits rich text and its serializer roundtrips that content back to Carve source. (carve-js also ships Markdown/Djot → Carve migration helpers for one-way conversion.)
Resources
| Project | Description |
|---|---|
| awesome-carve | Curated list of Carve tools, libraries, and resources. |
# Heading
/italic/ *bold* _underline_ ~strike~ =highlight=

^ Figure 1: caption attaches to the image above
|= Name |= Role |
| Ada | Author |
| Linus | Reviewer |
^ Table caption
Issues, ideas, and PRs welcome on any project repo. Browse awesome-carve for tools and integrations.