Awesome Carve [](https://awesome.re)

August 21, 2026 · View on GitHub

A curated list of Carve resources, tools, editors, and libraries.

Carve is a post-Markdown lightweight markup language with visual mnemonics and human-centered design. It builds on Djot's technical rigor — linear parsing, no expressive blind spots, arbitrary attributes — while adding visual mnemonics (/italic/, *bold*, _underline_, ~strike~) and conventions that match how non-technical users naturally mark up text.

Contents

Official Resources

Documentation and reference materials for Carve.

  • carve - Language definition, philosophy, and quick reference.
  • carve-js - Reference TypeScript implementation.
  • tree-sitter-carve - Native Tree-sitter grammar for Carve.
  • carve-lsp - Language server for diagnostics and document symbols.

Specification

Formal syntax specification and grammar definitions.

  • carve grammar.ebnf - Normative EBNF grammar plus the PART 9 semantic constraints (the conformance authority).
  • Carve docs - Rendered spec, examples, and edge-case reference.
  • Conformance test suite - The shared spec corpus: input .crv paired with expected .html, generated from docs/examples.md. Also emitted in the djot.js fenced format at tests/spec, plus a feature-tagged Tier-2 set in tests/corpus-optional. Every implementation consumes it as a git submodule; new slugs are drift-guarded per impl.

Parsers & Libraries

Language-specific implementations for parsing and rendering Carve.

JavaScript / TypeScript

  • carve-js - Reference TypeScript implementation of the Carve markup language.

PHP

  • carve-php - PHP parser and renderer with a carve CLI binary; implements the full Carve syntax and passes the spec corpus (forked from djot-php).
  • carve-php-media-embed - Opt-in carve-php extension that embeds audio/video from 30+ providers via media-embed.

Rust

  • carve-rs - Rust parser and HTML renderer with a carve CLI binary; passes the upstream spec corpus.
  • carve-wasm - WebAssembly bindings for the Rust implementation.

Python

  • carve-py - Python bindings (PyO3) over the carve-rs engine; carve.to_html plus Markdown, plain-text, and ANSI renderers and the extension toggles, output byte-identical to the carve-rs CLI. Installs as a native wheel via maturin.

Go

  • carve-go - Pure-Go module (no cgo): embeds a WASI build of carve-rs and runs it via wazero. ToHTML output byte-identical to the carve-rs CLI.

Ruby

  • carve-rb - Native Ruby gem (magnus over carve-rs); Carve.to_html(source, extensions:), output byte-identical to the carve-rs CLI.

Editors & IDE Support

Syntax highlighting and editing support for popular editors.

  • intellij-carve - JetBrains IDE plugin (IntelliJ IDEA, PhpStorm, WebStorm, ...) for .crv files: TextMate-based highlighting, live split preview (carve-js or carve-php), HTML export, live templates, and custom preview CSS.
  • vscode-carve - VS Code extension for .crv files, with syntax highlighting, semantic tokens, diagnostics, and document symbols.
  • zed-carve - Zed editor extension for .crv files, backed by the native Tree-sitter grammar.
  • emacs-carve - Emacs major mode (carve-mode) for .crv files: font-lock highlighting for the full syntax, %% comments, imenu heading index, and outline support.
  • vim-carve - Vim and Neovim support: classic regex syntax highlighting that works with any colorscheme, plus Neovim Tree-sitter integration reusing the native grammar and queries.
  • sublime-carve - Sublime Text package for .crv files: .sublime-syntax highlighting with real embedded language syntaxes inside fenced code, a heading outline for Goto Symbol, cross-reference navigation, carve fmt integration, a build system wrapping carve lint, and snippets.
  • helix-carve - Helix editor support: languages.toml entry and runtime queries backed by the tree-sitter-carve grammar.
  • obsidian-carve - Obsidian community plugin registering .crv notes with safe reading and editable source views; raw HTML is disabled by default.

Tools

Command-line utilities for working with Carve documents.

  • carve-lsp - Language server for editor integrations and tooling that speaks LSP.
  • carve CLI (carve-php) - Convert .crv files to HTML (and import Markdown/HTML/BBCode/Djot) from the command line.
  • carve CLI (carve-rs) - Fast native .crv to HTML converter binary.

Validators & Linters

  • carve lint - Validator in the carve-js CLI. Flags problems that parse but render wrong: broken </#id> cross-references, duplicate heading ids, trailing {…} heading attributes, legacy raw FORMAT fences, and block markers that leaked as plain text. Exits non-zero, so it works as a CI gate; the same checks surface live in editors via carve-lsp.

Formatters

  • carve fmt - Canonical Carve formatter, in the carve CLI of all three engines (carve-js, carve-php, carve-rs) with byte-identical output. Conservative, idempotent, and semantic-preserving (the rendered HTML is unchanged): normalizes whitespace, headings, fence lengths, and attribute spacing. List markers are deliberately preserved, not normalized - the bullet character and ordered delimiter are semantic in Carve (a different marker starts a new list), so rewriting them would merge adjacent lists. carve fmt -w rewrites in place; carve fmt --check is a CI gate. The serializer is also exposed programmatically (carveToCarve / to_carve).

Styling

  • carve-css - The stylesheet for Carve's rendered HTML: admonitions, tab sets, code groups, code callouts, figures, footnotes, glossary, index, critic markup and the rest. Scoped under .carve and themed by overriding custom properties rather than selectors, in four layers (tokens, core, extensions, print). It exists because six repositories were each writing this CSS by hand and each covering a different subset - callouts, the glossary and the index were styled in exactly one of them. A coverage gate renders a fixture through the published engine and fails when a class or ARIA role reaching the page has no rule.

Benchmarks

  • carve-bench - Cross-engine render performance benchmarks: per-engine in-process timing harnesses (carve-js, carve-php, carve-rs) over a fixed document set, with an orchestrator that writes a results table. A speed comparison; correctness is covered by the shared conformance corpus.
  • pandoc-format-fidelity - How much of a document survives a conversion, across every format pandoc ships. Each probe is a pair of pandoc ASTs differing in one feature, answering whether a writer can express it and whether it reads back unchanged. Carve is scored on the same probes via the pandoc-carve bridge. A compatibility comparison, where carve-bench is a speed one.

AI & Agent Tooling

Skills and resources for AI coding tools and LLM agents writing Carve.

  • carve-skill - A Claude Code / agent authoring skill (carve-authoring) that teaches AI tools to write valid .crv. Front-loads the syntax that diverges from Markdown/Djot (swapped emphasis delimiters, braced-only sup/sub) and the traps that silently mis-render, plus the carve lint round-trip loop. Content is sourced from the canonical spec docs via a git submodule and drift-guarded in CI, so it can't rot out of sync with the language.

Converters

Render Carve to other output formats. All three engines (carve-js, carve-php, carve-rs) and their language bindings ship the same renderer set, selectable by CLI flag or API.

  • Carve to HTML - the default output of every engine: carve-js renderHtml, carve-rs carve --html, carve-php HtmlRenderer, carve-py carve.to_html.
  • Carve to Markdown - carve-js renderMarkdown, carve-rs carve --markdown, carve-php MarkdownRenderer, carve-py carve.to_markdown.
  • Carve to plain text - carve-js renderPlain, carve-rs carve --plain, carve-php PlainTextRenderer, carve-py carve.to_plain_text.
  • Carve to ANSI (terminal) - carve-js renderAnsi, carve-rs carve --ansi, carve-php AnsiRenderer, carve-py carve.to_ansi.
  • Carve to PDF - two engines:
    • carve-pdf - the crv2pdf CLI renders via headless Chrome (CDP) with a pluggable PHP or JS Carve backend; also emits standalone HTML, Markdown, and text, with batch and watch modes.
    • carve-hexapdf - native PDF via the pure-Ruby HexaPDF engine (no browser).
  • Carve to LaTeX, Typst, DOCX, and every pandoc writer - pandoc-carve - converts the Carve AST to Pandoc's JSON AST, so one Carve document reaches any pandoc output format; also makes {=latex}-style raw spans fire for their target writer.
  • Carve to chat-platform markup - carve-php-chat - renders a Carve document to WhatsApp, Slack, Telegram or Discord markup, and reports what could not survive the trip. Each platform accepts a different, mutually incompatible subset - different link syntax, escaping rules and length caps - and each is a JSON flavor definition rather than a class, so adding one needs no PHP.

Migration

Tools for migrating from other markup formats to Carve.

  • carve-js markdownToCarve - Source-to-source Markdown → Carve converter (handles the inline syntax that differs from Markdown, blank-line block spacing, setext headings, and more).
  • carve-php converters - Markdown, HTML, BBCode and Djot → Carve converters, with a carve CLI for converting files.
  • pandoc-carve import - anything pandoc reads (DOCX, LaTeX, RST, Org, MediaWiki, ...) → Carve, via the Pandoc AST and the carve fmt serializer (pandoc-carve doc.docx -f docx -o doc.crv).
  • pdf-to-carve - PDFs and document images → Carve. Born-digital PDFs are converted without any AI; scans and images can use an optional OpenAI-compatible vision path. Extraction never produces Carve syntax directly: it emits a strict, versioned JSON document that a deterministic writer serializes, then verifies with carve fmt/carve lint. Supports text, vision and hybrid (image plus positioned text) modes, JSON replay without a second API call, and an HTML review report.

Roundtrip Conversion

Tools supporting lossless bidirectional conversion for content editing workflows. Essential for WYSIWYG integration where content is stored as Carve but edited as HTML — changes made in the visual editor convert back to Carve without losing syntax choices or formatting details.

  • carve-php - Round-trip mode (data attributes for Carve to HTML to Carve) plus an HtmlToCarve converter for WYSIWYG editing workflows.

Framework Integration

Carve support for web frameworks.

  • cakephp-markup - CakePHP plugin rendering Carve to HTML via carve-php: a CarveHelper for converting Carve in templates, a CarveView for rendering .crv template files with variable substitution, and safe-mode and profile configuration.
  • laravel-carve - Laravel package rendering Carve to HTML via carve-php: @carve / @carveRaw / @carveText Blade directives, a Carve facade with named converter profiles (including the static graceful-degradation mode), a ValidCarve validation rule, and content-hash render caching.
  • laravel-carve-demo - Runnable Laravel app demonstrating every feature of laravel-carve: Blade directives, facade and named profiles, form validation, a safe-mode comparison, and the static graceful-degradation mode rendered side by side with the interactive output.
  • symfony-carve - Symfony bundle that renders Carve to HTML via carve-php: a {{ value|carve }} Twig filter, a carve() function, a CarveRenderer service, and configurable safe-mode sanitization.
  • symfony-carve-demo - Runnable Symfony app demonstrating every feature of the symfony-carve bundle: Twig filter and function, the service, a live editor, a safe-mode comparison, and a syntax gallery.
  • vite-plugin-carve - Vite plugin for importing .crv files as rendered HTML modules.
  • webpack-loader-carve - Webpack 5 loader for importing .crv files as build-time-rendered HTML modules, with a verified Next.js webpack build.
  • carve-grammars - Tiptap editor kit and Carve serializer for building WYSIWYG editors that read and write Carve (also ships Prism and highlight.js grammars; see Syntax Highlighting).
  • carve-components - React and Vue 3 <Carve> components (and a useCarveHtml hook/composable) that render Carve to HTML via carve-js, with per-framework subpath exports, SSR support, and safe-by-default raw-HTML escaping.

CMS Integration

Carve plugins for content management systems.

  • shopware-carve - Shopware 6 plugin (carve-php engine) with Twig filters, a CMS element, product/category fields, admin live preview, mail rendering, and a CLI.
  • wp-carve - WordPress plugin (carve-php engine) with live in-browser preview, multi-format paste, frontmatter-to-meta, render caching, and a REST API.

Documentation Tools

Generate documentation from Carve source files.

  • mkdocs-carve - MkDocs plugin that renders .crv pages via carve-py, with per-extension config and full nav/path support.
  • docusaurus-carve - Docusaurus 3 docs plugin for .crv pages, delegating routes, sidebars, frontmatter, search metadata, and theming to the official docs plugin.
  • zensical-carve - Zensical support (the successor to MkDocs, from the Material for MkDocs team): a carve custom fence for blocks inside Markdown pages, plus a preprocessor that renders whole .crv pages, lifting Carve frontmatter into the page.

Static Site Generators

Build static websites with Carve content.

  • astro-carve - Astro integration: import .crv files into Astro pages and components as rendered HTML with frontmatter.
  • carve-press - First-party static site generator: discovers .crv pages, expands includes, renders through carve-js with a Shiki highlighting stack, validates links and cross-references at build time, and ships a dev server with incremental rebuilds. Its own documentation site is built with it.
  • eleventy-carve - Eleventy (11ty) plugin adding .crv as a template format, with Carve frontmatter flowing into the data cascade.
  • hugo-carve - Hugo preprocessor (via carve-go) that converts .crv content to HTML pages, preserving front matter. (Hugo has no markup-plugin API, so it is a convert-then-build step.)
  • jekyll-carve - Jekyll converter plugin rendering .crv pages via the carve-lang Ruby gem.

Syntax Highlighting

Grammars and themes for displaying Carve with syntax colors.

Sandboxes

Interactive playgrounds for experimenting with Carve.

  • Carve Playground - Type Carve and see the rendered HTML live in the browser.
  • carve-wysiwyg - WYSIWYG editor for Carve built on the carve-grammars Tiptap kit: visual editing, a live Carve source pane, and an HTML preview, with round-trip import via carve-js.

Example Sites

Websites and blogs built with Carve.

  • Carve documentation site - The official docs, built from Carve sources via vite-plugin-carve.
  • CarvePress documentation site - The carve-press docs, authored in Carve and built by carve-press itself: home layout, generated blog and tag pages, client-side search, live ::: compare and playground blocks, and a German locale sample.

Learning Resources

Articles and tutorials for learning Carve.

Articles

Tutorials

Community

Places to discuss Carve and get help.