Markdown Table Formatting Skill
Markdown tables MUST use fixed-width columns with space padding. This is mandatory for readability in plain text editors and diffs.
Correct vs Incorrect Format
Correct: Fixed-width columns with padding
| Size | succinctly | jq | Speedup |
|----------|---------------------|---------------------|------------|
| **10KB** | 2.2 ms (4.3 MiB/s) | 4.1 ms (2.3 MiB/s) | **1.86x** |
| **1MB** | 24.5 ms (33 MiB/s) | 44 ms (18 MiB/s) | **1.79x** |
Incorrect: Unpadded columns
| Size | succinctly | jq | Speedup |
|------|------------|-----|---------|
| **10KB** | 2.2 ms (4.3 MiB/s) | 4.1 ms (2.3 MiB/s) | **1.86x** |
Column Width Rules
- Measure the widest content in each column (including header)
- Pad all cells to match the widest cell in that column
- Use spaces for alignment, not tabs
- Align text left, numbers can be right-aligned for decimals
- Leave one space after
|and before|for readability in data rows - Separator row has NO spaces - format as
|------|---------|with dashes matching column widths - Empty cells use single dash "-" padded with spaces:
| - |
Formatting Algorithm
For each column:
1. width = max(len(cell) for cell in column)
2. width = max(width, 3) # Minimum 3 chars for separator
For each row:
1. For each cell:
- Pad content to column width
- Add single space before and after content
2. Join cells with '|' delimiter
3. Add '|' at start and end
Bold Text in Tables
When using bold (**text**) in table cells:
Spaces must be OUTSIDE the bold markers, not inside:
<!-- CORRECT: Spaces outside ** -->
| **59.6ms** |
<!-- WRONG: Spaces inside ** (markdown won't render bold) -->
| ** 59.6ms** |
This is important for right-aligned numeric columns where padding is added.
Alignment Markers
| Alignment | Separator Format | Example |
|---|---|---|
| Left | ` | ---------- |
| Right | ` | ---------: |
| Center | ` | :--------: |
Complex Tables
For tables with many columns or very long content:
| Name | Type | Size | Description |
|------------|--------|---------|--------------------------------------|
| ib | Vec | ~N bits | Interest bits marking structural |
| | | | characters and value starts |
| bp | Vec | ~N bits | Balanced parens encoding tree |
| | | | structure |
Consider:
- Splitting into multiple smaller tables
- Using a different format (bullet lists, nested structure)
- Rotating the table (rows become columns)
Why Fixed-Width Tables Matter
- Readability in Git Diffs: Variable-width tables are hard to review in diff views
- Text Editor Alignment: Most code reviews happen in monospace fonts
- Terminal Display: Tables render correctly in terminal viewers
- Professional Appearance: Shows attention to detail
- Easier Maintenance: Clear structure makes updates simpler
Instructions
When formatting tables:
- Read the table - Identify all rows and columns
- Calculate widths - Find max content width per column
- Format header - Apply consistent width with padding
- Format separator - Match column widths with dashes
- Format data rows - Apply same widths to all cells
- Preserve alignment - Keep
:markers for right/center alignment
Converted and distributed by TomeVault — claim your Tome and manage your conversions.