Skip to main content
Streamdown includes full GitHub Flavored Markdown (GFM) support through remark-gfm, enabled by default. No configuration is required.

Tables

Create formatted tables with pipe-separated columns and a delimiter row:
| Feature       | Supported | Notes          |
|---------------|-----------|----------------|
| Tables        | ✅        | Full support   |
| Task lists    | ✅        | Checkbox input |
| Strikethrough | ✅        | `~~like this~~`|
| Autolinks     | ✅        | URLs and email |

Column alignment

Control text alignment with colons in the delimiter row:
| Left    | Center  |  Right |
|:--------|:-------:|-------:|
| aligned | aligned | aligned|
  • :--- — left-aligned (default)
  • :---: — center-aligned
  • ---: — right-aligned

Table controls

Streamdown enhances tables with built-in controls:
  • Copy — dropdown with CSV, TSV, and Markdown options
  • Download — exports table as CSV or Markdown
  • Fullscreen — opens table in a modal overlay
  • Responsive scroll — horizontal scrolling on narrow viewports
All controls appear in the top-right corner on hover. See Interactivity for how to configure or disable them.

Inline formatting in tables

Table cells support standard inline Markdown:
| Name          | Status              |
|---------------|---------------------|
| **Streamdown**| ✅ Active           |
| *Feature X*   | 🚧 WIP              |
| ~~Old lib~~   | ❌ Deprecated       |

Task lists

Create checkbox lists with [ ] (unchecked) and [x] (checked) syntax:
- [x] Initialize repository
- [x] Install dependencies
- [ ] Write documentation
- [ ] Deploy to production
Task list checkboxes render as <input type="checkbox" disabled> elements. They are display-only — checking or unchecking them does not fire any events.

Nested task lists

- [ ] Phase 1: Setup
  - [x] Create repository
  - [x] Configure build tools
  - [ ] Set up CI/CD
- [ ] Phase 2: Development
  - [ ] Implement core features
  - [ ] Write tests

Accepted syntax

SyntaxMeaning
- [ ]Unchecked (space inside brackets)
- [x]Checked (lowercase x)
- [X]Also checked (uppercase X)

Strikethrough

Wrap text in double tildes to render it with a strikethrough:
~~This approach is deprecated~~ — use the new API instead.
Strikethrough works across multiple words and inline with other formatting:
**Before:** ~~500 ms response time~~
**After:** 50 ms response time ⚡
GFM converts bare URLs and email addresses into clickable links automatically:
Visit https://example.com for more information.

Contact us at [email protected]
Autolinks apply to:
  • http:// and https:// URLs
  • ftp:// URLs
  • mailto: addresses
  • Bare www. URLs (GFM extension)
Link safety is enabled by default. Clicking any autolinked URL shows a confirmation modal before navigating. See Link safety to configure or disable this behavior.

Line breaks

Single newlines within a paragraph are treated as soft breaks (rendered as a space). To force a visible line break, use one of these approaches:
Add two or more spaces at the end of a line:
Line one  
Line two  
Line three

Disabling GFM

GFM is included in defaultRemarkPlugins. To remove it, replace the remarkPlugins prop with an array that omits it:
import { Streamdown, defaultRemarkPlugins } from "streamdown";

const { gfm: _omit, ...withoutGfm } = defaultRemarkPlugins;

<Streamdown remarkPlugins={Object.values(withoutGfm)}>
  {markdown}
</Streamdown>
Removing remarkGfm disables tables, task lists, strikethrough, and autolinks all at once.

Build docs developers (and LLMs) love