Skip to content
@markup-carve

markup-carve

Markup that respects humans and parsers.

markup-carve

Markup that respects humans and parsers.


Why

  • 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

Projects

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

A taste

# Heading

/italic/  *bold*  _underline_  ~strike~  =highlight=

![Photo](img.jpg)
^ Figure 1: caption attaches to the image above

|= Name  |= Role     |
| Ada    | Author    |
| Linus  | Reviewer  |
^ Table caption

Get involved

Issues, ideas, and PRs welcome on any project repo. Browse awesome-carve for tools and integrations.

Popular repositories Loading

  1. carve carve Public

    A post-Markdown lightweight markup language with visual mnemonics and human-centered design.

    JavaScript 9

  2. awesome-carve awesome-carve Public

    A curated list of Carve markup resources, tools, and libraries

    1

  3. tree-sitter-carve tree-sitter-carve Public

    Tree-sitter grammar for Carve.

    C 1

  4. vim-carve vim-carve Public

    Vim and Neovim support for the Carve markup language (.crv): syntax + tree-sitter

    Vim Script 1

  5. carve-rb carve-rb Public

    Native Ruby gem for the Carve markup language (magnus over carve-rs)

    Rust 1

  6. jekyll-carve jekyll-carve Public

    Jekyll plugin (converter) for the Carve markup language

    Ruby 1

Repositories

Showing 10 of 37 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…