Skip to content

Markdown & rich text

Every Kard description and comment is written in markdown. This page lists the syntax Kard supports, as syntax → result tables. For how relations and links work, see Relate & link Kards. For how to attach files, see Create & edit Kards.

There is no separate preview toggle — the rendered markdown is always what’s saved. Click a description to edit the raw text in place, then commit or cancel.

SyntaxResult
**bold**Bold text
*italic*Italic text
~~strike~~Strikethrough text
`code`Inline code — monospace, tinted background; wraps with prose
# HeadingHeading 1 (largest)
## HeadingHeading 2
### HeadingHeading 3 (smallest)
- itemBullet list item (also * item)
1. itemOrdered list item (also 1) item)
> quoteBlockquote callout

Notes:

  • Headings support three levels (#, ##, ###). They must start a line with no leading spaces.
  • Ordered lists use your literal source numbers — Kard does not auto-renumber. Writing 1. / 1. / 1. renders as 1. / 1. / 1..
  • Nested lists are not supported in this release — indented sub-items don’t reflow.
  • Inline code is an escape barrier — markdown markers inside backticks render verbatim. `**not bold**` shows the asterisks literally.
  • Emphasis doesn’t compose. Nested emphasis like ***bold-italic*** renders as italic only (the inner style wins). Prefer one emphasis at a time across a span.

Open and close a fenced block with triple backticks. An optional language hint may follow the opening fence (used only for C++ syntax highlighting in this version).

```cpp
struct FExample { int Value; };
```

Renders as a full-width dark panel with monospace text. Content inside a code block is never processed for markdown — asterisks, brackets, and backticks display verbatim.

Kard renders GitHub-Flavored Markdown pipe tables: a header row, a delimiter row that sets column alignment, and body rows.

| Feature | Status | Notes |
|:--------|:-----------:|--------------:|
| Tables | Implemented | GFM-compliant |
DelimiterAlignment
--- or :-Left (default)
:---:Center
---:Right

The delimiter row’s cell count must match the header row, or the lines render as plain paragraphs. Cells hold inline markup (bold, code, links, chips, images) but not block content (no lists, code blocks, blockquotes, or nested tables). Use <br> for a line break inside a cell and \| for a literal pipe.

SyntaxResult
- [ ] taskUnchecked task item ([x] checked; [-] / [*] read-only)
[x] (mid-line)Inline checkbox — click to toggle in the rendered view
---Horizontal rule (also ***, ___)

Editable checkboxes flip their saved state when you click them in the rendered view.

Kard distinguishes external web links from internal references to other Kards and folders.

GoalSyntaxResult
Link an external URL[label](https://example.com)Clickable link — opens in your system browser
Link a Kard or folder[[<32-char GUID>]]Inline chip — click to open the target
Link with custom text[[<GUID>|Display text]]Chip showing Display text

Standard [text](url) is reserved for plain external URLs only. Every Kard-internal reference uses the wikilink ([[ ]]) form. You rarely type the 32-character GUID by hand — drag a Kard onto a description, or right-click any Kard or folder and choose Copy Markdown Link, then paste.

For typed relations (Blocks, Depends on, and so on) and queried backlinks, see Relate & link Kards.

While editing a description or comment, type a trigger character to open a caret-following picker. Choose an entry to insert the token; the picker filters as you keep typing.

TypePicker showsInserts
@Teammates and agents@[user:<id>] or @[agent:<id>] — a mention chip
[[Your Kards[[<GUID>]] — a link chip
/Markdown snippetsA skeleton block (see below)
  • @ mentions insert a mention chip. Mentioning a teammate surfaces the Kard in their Inbox.
  • [[ links insert a wikilink to the chosen Kard.
  • / snippets fire only at the start of a line and insert a ready-made block: Heading 1–3, To-do, bullet or numbered list, quote, code block, table, or divider.

Triggers are suppressed inside inline code and code blocks. Press Up / Down to move the highlight, Enter or Tab to insert, Esc to dismiss.

Inline images reference an attachment by its 8-character ID.

![abc12345]

Kard renders the attached texture inline (capped at 800 px wide). You don’t write the ID by hand: paste an image from the clipboard, or drag a texture onto the description editor, and Kard stores it as an attachment and inserts the matching ![id] reference.

For attaching files step by step, see Create & edit Kards.

Embed a video with the !video[...] marker — its own trigger, so it never collides with image or link forms.

!video[https://youtu.be/dQw4w9WgXcQ]
!video[https://cdn.example.com/clips/intro.mp4]
!video[Movies/intro.mp4]
SourceResult
A YouTube URLA thumbnail tile — click opens the video in your system browser
A direct stream (.mp4, .m3u8) or local fileAn inline player tile with a play button, scrubber, and audio toggle
  • YouTube embeds always render a thumbnail that opens the system browser; there is no in-app YouTube player.
  • Direct streams and local files play inline — but inline playback needs the optional media module (Electra). If it isn’t enabled (for example, in a packaged build), the embed shows a [video: playback unavailable] tile instead.

Type or paste an emoji directly into any Kard or folder text and it renders in color — Kard bundles a color emoji font so emoji don’t show as empty boxes. A leading emoji in a folder name is promoted to that folder’s icon.