Tables
Insert a table from the slash menu, type into cells, Tab to navigate. Backed by GFM Markdown so they round-trip through paste, export, and the public-link viewer.
Tables in sweetdocs are real GFM Markdown tables — what you see in the editor is exactly what gets saved, exported, and shared. They round-trip cleanly with anything else that speaks GFM (GitHub, Notion, Obsidian, Google Docs imports, etc.).
Here's how the trip splits across the three days:
| Day | Morning | Afternoon |
|---|---|---|
| Day 1 | Arashiyama | Tenryū-ji |
| Day 2 | Fushimi Inari | Nishiki |
| Day 3 | Kinkaku-ji | Gion walk |
Inserting a table
There are two paths:
| Path | What you get |
|---|---|
| Slash menu → Table | Fresh 3×3 table with a header row |
| Paste from a spreadsheet | Tab-separated data (Excel, Numbers, Google Sheets) converts to a real Markdown table on paste |
You can also type a GFM pipe table by hand and it renders live as you finish the separator row:
| A | B | C |
|---|---|---|
Editing cells
| Key | Effect |
|---|---|
| Tab | Move to the next cell |
| ⇧Tab | Move to the previous cell |
| Tab in the last cell | Adds a new row below |
| ↑ / ↓ | Move between cell rows (or out of the table) |
| Enter inside a cell | Inserts a line break inside the cell |
| Any selection inside a cell | Bubble toolbar appears as usual — bold, italic, links all work |
Cells accept the same content as any paragraph: inline marks (bold, italic, strikethrough, code, link), hex color swatches, and inline HTML. They do not accept block content — no nested lists, no nested tables, no code blocks inside a cell.
Layout + sizing
| Aspect | Behavior |
|---|---|
| Column width | Equal columns by default, content-driven once cells are filled |
| Column resize by drag | Not supported — we have resizable: false |
| Row height | Grows with cell content |
| Table width | Full content width (100%) — fixed table layout |
| Header row | Background uses the theme’s subtle surface; bold, left-aligned |
| Selected cell | Tinted with the theme’s accent-light overlay |
Tables stay readable on mobile because the columns are constrained — wide content wraps within the cell rather than blowing out the layout.
Column alignment (GFM)
Use the standard GFM markers in the separator row to control alignment:
| Left | Center | Right |
|:-----|:------:|------:|
| a | b | c |
Alignment is read at save time and rendered in both Edit and Preview modes.
What’s not available yet
Tables in v1 are deliberately minimal. The following don’t have a UI affordance:
| Missing | Workaround |
|---|---|
| Add row above / below | Press Tab at the end of the last cell to extend by one row |
| Add column left / right | Edit the underlying Markdown directly, or paste a wider table from a spreadsheet |
| Delete a row / column / the table itself | Select the rows visually and delete; or remove the Markdown source |
| Cell merge (rowspan / colspan) | GFM doesn’t support merged cells — use inline HTML <table> if essential (DOMPurify keeps it) |
| Column drag-resize | Not in v1 (table extension is set to resizable: false) |
| Header column (left-side header) | GFM only models a header row. Use bold in the first column for visual emphasis. |
If you need spreadsheet-grade table editing, the fastest workflow is: edit in Excel / Sheets / Numbers → copy → paste into sweetdocs. The pasted TSV becomes a proper Markdown table.
Round-trip behavior
Because tables are stored as plain GFM Markdown:
- Paste from another doc, Notion, GitHub, etc.: comes in as a real table.
- Copy out of sweetdocs: lands as GFM pipe syntax in Markdown destinations, or as a structured HTML table in rich-text destinations (Gmail, Word, Docs).
- Export to
.md,.docx,.pdf: the table renders natively in each format. - Public link / share view: the same Markdown is parsed by
markedfor the viewer, so what readers see matches what you see in Preview mode.