Master every feature of Taildown's elegant markup language.
Taildown is a superset of Markdown - every valid Markdown document is also valid Taildown.
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6*italic* or _italic_
**bold** or __bold__
***bold italic***
~~strikethrough~~Unordered:
- Item one
- Item two
- Nested item
- Another nestedOrdered:
1. First item
2. Second item
1. Nested ordered
2. Another nested[Link text](https://example.com)
[Link with title](https://example.com "Title text")

Inline code:
Use `backticks` for inline codeCode blocks: Add a language after the opening fence. Use td, tdown, or taildown for Taildown examples; these use the same syntax tokenizer as the editor. Code examples preserve literal source and include a copy button.
:::card{elevated padded-lg}
Read the [guide](https://taildown.dev/getting-started).
:::
> This is a blockquote
> It can span multiple lines
>
> > And can be nested| Feature | Status | Notes |
|---------|--------|-------|
| Tables | ✓ | Full GFM support |
| Alignment | ✓ | Left, center, right |---
***
___Open Design settings from the editor's Command-K menu to configure a custom design. The advanced JSON form accepts theme (colors and fonts), styleMappings (plain-English aliases), components (custom definitions), and componentConfig (component defaults, variants, and sizes). Applied settings affect both the preview and exported HTML. Invalid settings leave the previous design active.
The Modern, Editorial, and Technical typography buttons prepare a sans-serif, serif, or monospace document font. Choose Apply settings to see the result. These starting points preserve your other font stacks, colors, and component settings, and remain editable in the JSON below.
Settings belong to this browser workspace and apply across opened documents. A downloaded .td file contains only document text: use Download applied settings to keep a separate JSON copy, then Import settings in another browser. Import prepares the JSON for review; Apply settings activates it. Invalid imports preserve the current draft. You can also paste JSON directly. Use defaults prepares an empty configuration; choose Apply settings to activate it.
{"theme":{"colors":{"primary":"#4338ca"}},"styleMappings":{"brand":"text-primary font-bold"}}With those settings, Welcome {brand} uses the custom primary color and bold text.
A single color replaces every shade of that palette. Use a shade object such as {"DEFAULT":"#4338ca","400":"#a5b4fc","600":"#4338ca"} when light and dark themes need distinct tones. The compiler API and configuration files accept the same single-color or shade-map overrides.
For an editorial card preset, configure a font stack and named component variants. Font stacks use fonts already available to the reader; they do not download or embed font files. Invalid values or CSS declarations are rejected.
{
"theme": {"fonts": {"serif": "Georgia, serif"}},
"componentConfig": {
"card": {
"defaultVariant": "editorial",
"defaultSize": "roomy",
"variants": {"editorial": {"classes": ["font-serif"]}},
"sizes": {"roomy": {"classes": ["p-8"]}}
}
}
}New cards use these defaults. The editorial and roomy attributes also appear in completion, and an explicit attribute such as p-4 can override the preset's padding.
Inline attributes accept styling words, CSS classes, #anchor IDs, and modal="..." or tooltip="..." attachments. Arbitrary HTML key-value attributes such as tabindex="1" or aria-label="..." are currently unsupported: the compiler reports a warning and omits them. Quoted attachment values can contain spaces and apostrophes.
Add styling to any element using curly brace notation.
Attributes use {...} at the end of elements:
# Heading {large-bold center}
Paragraph {muted}
[Link](#){button primary}1. CSS Classes (prefix with .):
{.text-4xl .font-bold .text-center}2. Plain English Shorthands:
{large-bold center primary}3. Component Variants:
{button primary large}
{badge success}
{alert error}4. Key-Value Pairs:
{id="unique-id"}
{modal="Modal content"}
{tooltip="Help text"}Headings:
# Main Title {huge-bold center}
## Subtitle {}
### Section {muted}Paragraphs:
This is large bold text. {large-bold}
This is centered and muted. {center muted}Links:
[Regular link](https://example.com)
[Button link](#){button primary}
[Badge link](#){badge success}Combine multiple attributes with spaces:
{large-bold center primary rounded}
{button primary large hover-lift}
{subtle-glass padded-xl rounded-xl}Style using natural English instead of CSS classes.
Taildown uses adjective-noun order (how English works), not property-value order (how CSS works).
large-text (large text)bold-primary (bold primary)subtle-glass (subtle glass)rounded-corners (rounded corners)Reads like natural language!
text-large (backwards!)primary-bold (unnatural!)glass-subtle (wrong!)corners-rounded (weird!)Unnatural and confusing.
Sizes:
{xs} {small} {base} {large} {xl} {2xl} {3xl} {huge} {massive}Weights:
{thin} {light} {} {medium} {semibold} {bold} {extra-bold} {black}Combinations:
{large-bold} {huge-bold} {} {small-light}Colors:
{primary} {secondary} {success} {warning} {error} {info} {muted}Styles:
{italic} {uppercase} {lowercase} {capitalize}Alignment:
{center} {left} {right} {justify}Flexbox:
{flex} {} {} {flex-center}Grid:
{grid-2} {grid-3} {grid-4}
{} {} {}Spacing:
{padded} {padded-sm} {padded-lg} {padded-xl}
{gap} {gap-sm} {gap-lg} {gap-xl}
{} {} {}Borders:
{rounded} {rounded-sm} {rounded-lg} {rounded-xl} {rounded-full}Shadows:
{shadow} {shadow-sm} {shadow-lg} {elevated} {floating}Glassmorphism:
{subtle-glass} {light-glass} {glass} {heavy-glass}Animations:
{fade-in} {slide-up} {slide-down} {zoom-in}
{hover-lift} {hover-glow} {hover-scale}
{fast} {smooth} {slow} Embed beautiful SVG icons anywhere with :icon[name] syntax.
:icon[home]
:icon[heart]
:icon[star]Result:
:icon[check]{success}
:icon[alert-triangle]{warning large}
:icon[heart]{error xl}
:icon[zap]{primary huge}Result:
:icon[star]{tiny} → 12px
:icon[star]{xs} → 16px
:icon[star]{sm} → 20px
:icon[star]{md} → 24px (default)
:icon[star]{lg} → 32px
:icon[star]{xl} → 40px
:icon[star]{2xl} → 48px
:icon[star]{huge} → 64px:icon[circle]{primary}
:icon[circle]{secondary}
:icon[circle]{success}
:icon[circle]{warning}
:icon[circle]{error}
:icon[circle]{info}Result:
Icons at the start of list items automatically hide the bullet:
- :icon[check]{success} Completed task
- :icon[circle]{warning} In progress
- :icon[x]{error} Failed taskResult:
Navigation: home, menu, search, settings, user, bell, mail
Actions: check, x, plus, minus, edit, trash, download, upload
Arrows: arrow-right, arrow-left, chevron-right, chevron-down
Status: check-circle, x-circle, alert-circle, alert-triangle, info
UI: heart, star, bookmark, share, link, eye, calendar
Social: github, twitter, facebook, linkedin, youtube
Browse all 1000+ icons at lucide.dev →
Taildown includes the complete Lucide 0.544.0 library in its offline compiler. Icons added to Lucide after that version require a Taildown dependency update. Exported pages contain only the SVG icons used in the document.
Wrap content in components using :::name fences.
:::card
Content inside a card
::::::card {glass padded rounded-xl}
Beautiful glassmorphic card
::::::grid {}
:::card
Column 1
:::
:::card
Column 2
:::
:::Layout:
:::card - Content container with glassmorphism:::grid - Responsive column layout:::button-group - Intelligent button layoutFeedback:
:::alert - Message boxes (info, success, warning, error)Navigation:
:::navbar - Site navigation barZero-config JavaScript generation for interactive components.
Create tabbed interfaces using headings:
:::tabs
## Tab One
Content for first tab
## Tab Two
Content for second tab
## Tab Three
Content for third tab
:::Features:
Expandable sections using bold text:
:::accordion
**First Section**
Content for first section
**Second Section**
Content for second section
**Third Section**
Content for third section
:::Features:
Slideshow using horizontal rules:
:::carousel
First slide content
---
Second slide content
---
Third slide content
:::Features:
--- divides slidesAttachable to any element:
[Click me](#){button modal="Simple alert!"}
[Hover me](#){tooltip="Help text"}With ID references:
[Open Modal](#){button modal="#my-modal"}
:::modal{id="my-modal"}
# Modal Title
Rich content with **markdown** support
:::Features:
LaTeX math rendering with zero runtime JS:
Inline math: $E = mc^2$ is Einstein's famous equation.
Display math (centered):
$$
x = \frac{ }}{}
$$Features:
Common Examples:
Greek letters: $\alpha$, $\beta$, $\gamma$
Fractions: $\frac{numerator}{denominator}$
Summations: $\sum_{i=1}^{n} i$
Integrals: $\int_{-\infty}^{\infty} e^{-x^2} dx$
Matrices:
$$
\begin{}
1 & 0 \\
0 & 1
\end{}
$$Chronological events and milestones:
:::timeline
## Project Kickoff {}
Initial planning and requirements gathering.
## Development Sprint 1 {}
Building core features and functionality.
## Testing & QA
Comprehensive testing phase.
:::Features:
{completed}, {current}, pending (default)Variants:
:::timeline {centered}
## Centered milestone
Alternating left/right alignment
:::
:::timeline {compact}
## Compact milestone
Smaller markers, tighter spacing
:::
:::timeline {glass}
## Glass milestone
Glassmorphism effect on content
:::
:::timeline {elevated}
## Elevated milestone
Shadow elevation on content cards
:::
:::timeline {bordered}
## Bordered milestone
Primary color border on content
:::Examples:
# Project Roadmap
:::timeline {glass}
## Phase 1: Research {}
User research and market analysis
Duration: 4 weeks
## Phase 2: Design {}
Wireframes and prototypes
Duration: 6 weeks
## Phase 3: Development {}
Building core features
Duration: 12 weeks (in progress)
## Phase 4: Launch
Testing and deployment
Duration: 4 weeks (upcoming)
:::
# Daily Schedule
:::timeline {compact}
## 9:00 AM {}
Team standup meeting
## 12:00 PM {}
Lunch break
## 2:00 PM
Code review session
:::# Text {}
Paragraph {}
[Link](#){}Types:
.class-namelarge-boldbutton primaryid="value":icon[star]
:icon[star]{lg}
:icon[star]{primary lg}Sizes: tiny, xs, sm, md, lg, xl, 2xl, huge
Colors: primary, success, warning, error, info
:::card
Content
:::
:::card {glass padded}
Content with attributes
:::Common: card, grid, tabs, accordion, carousel, modal, tooltip, alert, navbar, table, compare-images
Typography:
xs small large xl hugethin light bold blackprimary success errorLayout:
center padded gapflex grid-2 grid-3Effects:
rounded shadow glassfade-in hover-liftProfessional tables with sorting, zebra striping, and glass effects - zero JavaScript unless you need sorting.
Tables use standard GitHub Flavored Markdown with an attribute block:
| Name | Role | Status |
|------|------|--------|
| Alice | Developer | Active |
| Bob | Designer | Active |
{sortable zebra}| Employee | Department | Salary | Status |
|---|---|---|---|
| Alice Chen | Engineering | $95,000 | Active |
| Bob Smith | Design | $82,000 | Active |
| Charlie Davis | Product | $105,000 | Active |
| Diana Wilson | Marketing | $78,000 | Active |
Try clicking the headers to sort!
Styling:
sortable - Click headers to sort (auto JS generation)zebra / striped - Alternating row colorsbordered - Full cell bordersglass - Glassmorphism effectsticky-header - Header stays visible on scrollcompact - Tighter spacing for dense datahoverable - Row hover effectsSizes:
sm - Smaller padding and textmd - Standard size (default)lg - Larger padding and text# Data table with sorting
| ID | Name | Value |
|----|------|-------|
| 1 | Item A | 100 |
| 2 | Item B | 200 |
{sortable bordered}
# Metrics dashboard
| Metric | Q1 | Q2 | Q3 |
|--------|-----|-----|-----|
| Revenue | $1.2M | $1.5M | $1.8M |
| Users | 10.5K | 12.3K | 14.8K |
{glass sticky-header zebra}
# Compact data list
| Key | Value |
|-----|-------|
| Version | 2.1.0 |
| License | MIT |
{compact sm}Interactive before/after comparisons with draggable slider - perfect for showcasing transformations.
:::compare-images {horizontal}
before: https://example.com/before.jpg
after: https://example.com/after.jpg
alt: Transformation showcase
:::Horizontal (default):
:::compare-images {horizontal}
before: /images/old-workspace.jpg
after: /images/new-workspace.jpg
alt: Office renovation
:::Vertical:
:::compare-images {vertical}
before: /images/design-v1.png
after: /images/design-v2.png
alt: Design evolution
:::Add {labels} to show "Before" and "After" overlays:
:::compare-images {horizontal }
before: /photos/original.jpg
after: /photos/edited.jpg
alt: Photo editing showcase
:::Control the height with size modifiers:
# Small (280px, great for thumbnails)
:::compare-images {sm}
before: /img/a.jpg
after: /img/b.jpg
:::
# Medium (450px, default)
:::compare-images {md}
before: /img/a.jpg
after: /img/b.jpg
:::
# Large (580px)
:::compare-images {lg }
before: /img/a.jpg
after: /img/b.jpg
:::
# Extra Large (700px, for hero sections)
:::compare-images {xl glass}
before: /img/a.jpg
after: /img/b.jpg
:::Glass Effect:
:::compare-images {glass }
before: /img/before.jpg
after: /img/after.jpg
:::Enhanced Shadow:
:::compare-images {shadow }
before: /img/before.jpg
after: /img/after.jpg
:::Interaction:
Accessibility:
role="slider"alt text for imagesZero-Config Beauty:
This table covers common starting points. The component reference includes the broader library, live examples, and detailed usage; see Container, Tree, Flow, and Code Diff for additional layouts and visualizations.
| Component | Purpose | Usage | Variants |
|---|---|---|---|
| card | Content container | :::card | glass, elevated, padded |
| grid | Column layout | :::grid {cols-3} | cols-2, cols-3, cols-4 |
| button-group | Button layout | :::button-group | left, center, right |
| alert | Messages | :::alert {success} | info, success, warning, error |
| navbar | Site navigation | :::navbar | glass, solid, minimal |
| tabs | Tabbed interface | :::tabs | Uses headings as tabs |
| accordion | Expandable sections | :::accordion | Uses bold text as triggers |
| carousel | Slideshow | :::carousel | Uses --- as dividers |
| modal | Dialog overlay | Attach with modal="..." | Inline or ID-referenced |
| tooltip | Contextual help | Attach with tooltip="..." | Inline or ID-referenced |
| badge | Inline label | [Text](#){badge} | primary, success, warning |
| button | Button styling | [Text](#){button} | primary, secondary, outline |
| table | Enhanced tables | GFM table + {attributes} | sortable, zebra, glass, sticky-header |
| compare-images | Image comparison | :::compare-images | horizontal, vertical, labels, glass |
| Shorthand | CSS Equivalent | Description |
|---|---|---|
xs | text-xs | Extra small (12px) |
small | text-sm | Small (14px) |
base | text-base | Base (16px) |
large | text-lg | Large (18px) |
xl | text-xl | Extra large (20px) |
2xl | text-2xl | 2X large (24px) |
3xl | text-3xl | 3X large (30px) |
huge | text-4xl | Huge (36px) |
massive | text-5xl | Massive (48px) |
thin | font-thin | Thin weight (100) |
light | font-light | Light weight (300) |
normal | font-normal | Normal weight (400) |
medium | font-medium | Medium weight (500) |
semibold | font-semibold | Semibold (600) |
bold | font-bold | Bold (700) |
extra-bold | font-extrabold | Extra bold (800) |
black | font-black | Black (900) |
| Shorthand | Description |
|---|---|
primary | Primary brand color (blue) |
secondary | Secondary color (purple) |
accent | Accent color |
success | Success green |
warning | Warning yellow/orange |
error | Error red |
info | Info blue |
muted | Muted gray |
| Shorthand | Description |
|---|---|
center | Center align text |
left | Left align text |
right | Right align text |
padded | Standard padding |
padded-sm | Small padding |
padded-lg | Large padding |
padded-xl | Extra large padding |
gap | Standard gap |
gap-sm | Small gap |
gap-lg | Large gap |
flex | Flex display |
flex-col | Flex column direction |
flex-center | Flex centered |
grid-2 | 2 column grid |
grid-3 | 3 column grid |
grid-4 | 4 column grid |
| Shorthand | Description |
|---|---|
rounded | Rounded corners |
rounded-lg | Large rounded corners |
rounded-xl | Extra large rounded |
rounded-full | Fully rounded (pill) |
shadow | Standard shadow |
shadow-lg | Large shadow |
elevated | Elevated shadow |
subtle-glass | Subtle glass effect |
light-glass | Light glass effect |
glass | Standard glass effect |
heavy-glass | Heavy glass effect |
fade-in | Fade in animation |
slide-up | Slide up animation |
hover-lift | Lift on hover |
hover-glow | Glow on hover |
hover-scale | Scale on hover |
Natural combinations work automatically:
large-bold - Large + bold texthuge-bold - Huge + bold textsmall-muted - Small + muted colorlarge-primary - Large + primary colorbold-primary - Bold + primary colorxl-semibold - XL + semibold weightYou're now a Taildown expert!
Ready to build something beautiful?