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 10 seconds, memorable after 10 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
- Safe by spec — URL-scheme hardening and attribute stripping are baseline rules, so every conformant renderer emits XSS-safe HTML without a bolt-on sanitizer
Language
| Project | Description |
|---|---|
| carve | Language definition, design rationale, and quick reference. Docs → |
Implementations
| Project | Description |
|---|---|
| carve-js | Reference TypeScript implementation. |
| carve-php | PHP parser and HTML renderer, with converters from Markdown, HTML, BBCode, and Djot. |
| carve-php-media-embed | Opt-in carve-php extension — embeds audio/video from 30+ providers via media-embed. |
| carve-rs | Rust parser and HTML renderer with a carve CLI; passes the spec corpus. |
| carve-wasm | WASM bindings for carve-rs. Early. |
| carve-py | Python bindings (PyO3) over carve-rs; native wheels via maturin, output identical to the carve-rs CLI. |
| carve-go | Pure-Go module (wazero + WASI over carve-rs); no cgo. |
| carve-rb | Native Ruby gem (magnus over carve-rs). |
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. |
| emacs-carve | Emacs major mode (carve-mode): font-lock highlighting, imenu, outline. |
| vim-carve | Vim and Neovim support: regex syntax plus Neovim Tree-sitter integration. |
| sublime-carve | Sublime Text package (syntax highlighting). |
| helix-carve | Helix editor support (languages.toml + tree-sitter queries). |
| 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. |
| carve-wysiwyg | Ready-to-use WYSIWYG editor app built on the carve-grammars Tiptap kit — visual editing, a live Carve source pane, and an HTML preview. |
| carve-components | React and Vue <Carve> components for rendering Carve in web apps (SSR-safe, safe-by-default HTML). |
| laravel-carve | Laravel package (carve-php engine) — Blade directives, a Carve facade, a validation rule, and render caching. (demo app) |
| symfony-carve | Symfony bundle (carve-php engine) — a {{ value|carve }} Twig filter and carve() function, a CarveRenderer service, and configurable safe-mode sanitization. (demo app) |
| wp-carve | WordPress plugin (carve-php engine) — live preview, paste, REST API. |
| shopware-carve | Shopware 6 plugin (carve-php engine) — Twig filters, CMS element, product/category fields, admin live preview, mail. |
| vite-plugin-carve | Vite plugin — import .crv documents as rendered HTML. Early. |
| mkdocs-carve | MkDocs plugin — render .crv documentation pages via carve-py. |
| astro-carve | Astro integration — import .crv into Astro pages/components as rendered HTML. |
| eleventy-carve | Eleventy (11ty) plugin — .crv as a template format with frontmatter. |
| hugo-carve | Hugo preprocessor (via carve-go) — convert .crv content to HTML pages. |
| jekyll-carve | Jekyll converter plugin — render .crv via the carve-lang Ruby gem. |
| carve-hexapdf | Render Carve to PDF via the pure-Ruby HexaPDF engine (over the carve-lang gem). |
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-wysiwyg — a ready editor app built on the carve-grammars Tiptap kit, whose serializer roundtrips rich text 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. |
| carve-bench | Cross-engine render performance benchmarks (carve-js / carve-php / carve-rs). |
# 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.