Skip to content

CarveA post-Markdown markup language

Visual mnemonics, human-centered design — markup you can feel.

Carve logo

Quick Reference

Frontmatter

carve
---
title: My Document
tags: [carve, markup]
---

A leading --- fenced block holds document metadata. Add a format token to the opening fence for non-YAML metadata (---toml, ---json, or any label); a bare --- uses the configurable default format (yaml unless the host sets defaultFrontmatterFormat):

carve
---toml
title = "My Document"
---

Carve holds the content raw - the verbatim text plus the format label - and does not parse it; your application interprets the declared format. The block is leading-only and never rendered as body content.

Emphasis

carve
/italic/   *bold*   /*bold italic*/
_underline_   ~strikethrough~
=highlight=   {^super^}   {,sub,}

Headings

carve
# H1
## H2
### H3
#### H4
carve
[link text](https://url.com)
[Page Name][]              (wiki-style)
![alt text](image.jpg)

Captions (images, quotes, tables)

carve
![Photo](img.jpg)
^ Figure 1: Caption text

Lists

carve
- unordered item
1. ordered item
- [ ] task
- [x] done

Code

carve
`inline code`

```language
code block
```

Math

carve
Inline: $`e^{i\pi} + 1 = 0`
Display: $$`\int_0^1 x \, dx`

Quotes & admonitions

carve
> quoted text
^ Attribution

::: note
admonition content
:::

Tables

carve
|= Header |= Header |      (|= for headers)
| Cell    | Cell    |
|= Row    | Cell    |      (|= in a body row = row header)
^ Table caption

| ^       | spanned |      (^ rowspan)
| Header  | <       |      (< colspan)
+ continuation cell  |     (+ multiline)

Abbreviations

carve
*[HTML]: HyperText Markup Language

Attributes

carve
{#id .class key=value}

Extensions, mentions, tags

carve
@username   #tagname
:youtube[VIDEO_ID]

:name[content]{attrs} is the generic inline-extension syntax; a specific embed like :youtube[…] is produced by a registered extension (built-in where shipped, otherwise a small custom one). @mentions and #tags render as inert spans until you supply URL templates.

Comments

carve
%% whole-line comment
text %% trailing comment
%%%
block comment
%%%

Status

Carve 0.1 is specified and shipping. Tier-1 core and Tier-2 standard extensions are normative and stable; Tier-3 app-level extensions ship but evolve (see Versioning). Conformance is pinned by 492 corpus examples with exact HTML output, and the three reference engines - carve-js (TypeScript), carve-php, and carve-rs - all run the same corpus with no open divergences. Pre-1.0, a minor release may still change the grammar.

Reference material covers the normative grammar and extensions contract, the security model, the technical rationale, parsing edge cases, native features, and the broader markup landscape. The Case Study records the original design research the language grew out of; it is history, not the normative spec.

Looking for a parser, editor plugin, or framework integration? See the Ecosystem. Want to write your own? Start with Build Your Own Implementation.

File extension: .crv

Influences

  • Djot (John MacFarlane) — rigorous parsing, attributes, foundation
  • Org-mode/italic/ syntax, TODO states
  • Creole|= table headers
  • AsciiDoc — admonitions, document structure
  • CriticMarkup — editorial annotations

Released under the MIT License.