Markdown Tables — Complete Guide with Examples
Learn how to create and format tables in Markdown with alignment, styling, and advanced techniques for technical documentation
Introduction
Yes, Markdown fully supports tables! Markdown tables are a powerful way to organize and present structured data in your documentation. Whether you're documenting API endpoints, comparing features, or displaying configuration options, tables help readers quickly scan and understand information.
In this guide, you'll learn how to create tables in Markdown, format them with alignment options, and apply best practices for readable, maintainable tables in technical documentation. We'll cover everything from basic syntax to advanced formatting techniques.
What Is a Markdown Table?
A Markdown table is a way to structure data in rows and columns using plain text characters. Tables use pipes (|) to separate columns and hyphens (-) to define the header row. They're part of GitHub Flavored Markdown (GFM) and are widely supported across Markdown processors.
Tables are ideal for presenting:
- API endpoint documentation
- Configuration parameters
- Feature comparisons
- Data specifications
- Status codes and error messages
- Version compatibility matrices
Basic Table Syntax
To create a table in Markdown, you need three components: a header row, a separator row, and data rows. Here's the basic structure:
Simple Table
A basic three-column table with headers and two data rows
| Column 1 | Column 2 | Column 3 |
|---|---|---|
| Row 1 | Data A | Value 1 |
| Row 2 | Data B | Value 2 |
- Header row: Column names separated by pipes (
|) - Separator row: At least three hyphens (
---) per column, separated by pipes - Data rows: Cell content separated by pipes
How to Make a Table in Markdown
Let's walk through creating a table step by step. We'll build a table documenting HTTP status codes:
Step 1: Define Headers
Start by writing your column headers, separated by pipes:
| Status Code | Description | Category |
Step 2: Add Separator Row
Add a row of hyphens below the headers. Use at least three hyphens per column:
| Status Code | Description | Category |
|---|
Step 3: Add Data Rows
Add your data rows below the separator:
Complete HTTP Status Code Table
| Status Code | Description | Category |
|---|---|---|
| 200 | OK | Success |
| 201 | Created | Success |
| 400 | Bad Request | Client Error |
| 401 | Unauthorized | Client Error |
| 500 | Internal Server Error | Server Error |
Table Alignment
You can control how content is aligned within each column by adding colons (:) to the separator row:
- Left-aligned (default):
| --- |or| :--- | - Center-aligned:
| :---: | - Right-aligned:
| ---: |
Table with Different Alignments
Left-aligned text, center-aligned status, right-aligned numbers
| Feature | Status | Price |
|---|---|---|
| Basic Plan | ✓ | $9.99 |
| Pro Plan | ✓ | $29.99 |
| Enterprise | ✓ | $99.99 |
| Custom | Contact | TBD |
- Text columns: Use left alignment (default) for readability
- Status/icons: Use center alignment for visual balance
- Numbers: Use right alignment for easier comparison
Formatting Cell Content
You can use inline Markdown formatting within table cells, including bold, italic, code, and links:
Table with Formatted Content
Using bold, italic, code, and links within cells
| Parameter | Type | Description |
|---|---|---|
| name | string | User's full name |
string | Email address (required) | |
age | number | Age in years |
| docs | link | Documentation link |
You can use these inline Markdown elements in table cells:
- Bold:
**text** - Italic:
*text* - Code:
`code` - Links:
[text](url) - Strikethrough:
~~text~~
Real-World Examples
Here are practical examples of tables commonly used in technical documentation:
API Endpoint Documentation
REST API Endpoints
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | /api/users | List all users | ✓ |
| GET | /api/users/:id | Get user by ID | ✓ |
| POST | /api/users | Create new user | ✓ |
| PUT | /api/users/:id | Update user | ✓ |
| DELETE | /api/users/:id | Delete user | ✓ |
Configuration Parameters
Environment Variables
| Variable | Type | Default | Description |
|---|---|---|---|
PORT | number | 3000 | Server port |
NODE_ENV | string | development | Environment mode |
DATABASE_URL | string | required | Database connection string |
LOG_LEVEL | string | info | Logging verbosity |
Feature Comparison
Plan Comparison
| Feature | Free | Pro | Enterprise |
|---|---|---|---|
| Users | 1 | 10 | Unlimited |
| Storage | 1 GB | 100 GB | 1 TB |
| API Access | ✗ | ✓ | ✓ |
| Support | Community | 24/7 Phone | |
| Custom Domain | ✗ | ✓ | ✓ |
| SSO | ✗ | ✗ | ✓ |
Version Compatibility
Framework Compatibility Matrix
| Framework | Version | Node.js | TypeScript |
|---|---|---|---|
| Next.js | 14.x | ≥18.17 | ≥5.0 |
| React | 18.x | ≥16.8 | ≥4.7 |
| Vue | 3.x | ≥16.0 | ≥4.5 |
| Angular | 17.x | ≥18.13 | ≥5.2 |
Advanced Techniques
Here are some advanced techniques for working with Markdown tables:
Empty Cells
Leave cells empty by using pipes without content between them:
| Feature | v1.0 | v2.0 | v3.0 |
|---|---|---|---|
| Basic Auth | ✓ | ✓ | ✓ |
| OAuth 2.0 | ✓ | ✓ | |
| SSO | ✓ |
Long Content
For cells with long content, the table will automatically wrap or expand:
| Error Code | Description |
|---|---|
| E001 | Invalid authentication credentials provided. Please check your API key. |
| E002 | Rate limit exceeded. Please wait before making additional requests. |
| E003 | Resource not found. The requested endpoint does not exist. |
Escaping Pipe Characters
If you need to include a literal pipe character in a cell, escape it with a backslash:
| Operator | Syntax | Example |
|---|---|---|
| OR | | | a | b |
| AND | && | a && b |
| NOT | ! | !a |
Best Practices
Follow these best practices to create clear, maintainable tables:
1. Keep Tables Readable in Source
Align pipes vertically in your source code for better readability:
Well-Formatted Source
| Name | Role | Status |
|---|---|---|
| Alice | Developer | Active |
| Bob | Designer | Active |
| Charlie | Manager | Away |
2. Use Descriptive Headers
Make column headers clear and specific:
- ✓ Good:
Response Time (ms) - ✗ Avoid:
Time - ✓ Good:
HTTP Status Code - ✗ Avoid:
Code
3. Limit Column Count
Keep tables to 5-6 columns maximum for readability. For wider data, consider splitting into multiple tables or using a different format.
4. Use Consistent Formatting
Apply formatting consistently across similar tables in your documentation. For example, always use code formatting for parameter names or always center-align status indicators.
5. Consider Mobile Responsiveness
Tables with many columns may not display well on mobile devices. Test your tables on different screen sizes or provide alternative views for complex data.
Common Mistakes to Avoid
Problem: Forgetting the separator row between headers and data
Result: The table won't render correctly
Solution: Always include a row of hyphens after the header row
Problem: Different numbers of pipes in different rows
Result: Malformed table or missing cells
Solution: Ensure every row has the same number of columns (pipes)
Problem: Trying to create tables with merged cells or nested structures
Result: Markdown tables don't support cell merging
Solution: Simplify your data structure or use multiple tables
When Not to Use Tables
While tables are powerful, they're not always the best choice. Consider alternatives when:
- Data is hierarchical: Use nested lists or tree structures instead
- Content is narrative: Use paragraphs with inline formatting
- Only two columns: Consider a definition list or key-value pairs
- Data is very wide: Consider splitting into multiple focused tables
- Complex relationships: Use diagrams (like Mermaid) to show connections
Quick Reference
Markdown Table Syntax Cheatsheet
| Syntax | Description |
|---|---|
| Header | | Column header |
| --- | | Left-aligned separator |
| :---: | | Center-aligned separator |
| ---: | | Right-aligned separator |
| Cell | | Table cell content |
**bold** | Bold text in cell |
*italic* | Italic text in cell |
\code`` | Code in cell |
[link](url) | Link in cell |
Next Steps
Now that you know how to create tables in Markdown, explore these related topics:
- Learn more about Markdown syntax in our comprehensive Markdown guide
- Combine tables with Mermaid diagrams for rich technical documentation
- Explore API documentation best practices for structuring endpoint tables
- Check out documentation best practices for organizing complex information
Related Content
Markdown, Mermaid & KaTeX Syntax
Complete syntax reference for Markdown, Mermaid diagrams, and KaTeX math equations
Getting Started
Learn the basics of AutEng and create your first document
API Documentation
Document REST APIs and GraphQL schemas with examples
Documentation Best Practices — Markdown + Mermaid + KaTeX
Comprehensive guide to creating exceptional technical documentation using Markdown, Mermaid diagrams, and KaTeX equations together
Features
Explore all the powerful features AutEng offers for technical documentation
Ready to Start?
Start creating beautiful technical documentation with AutEng.
Get Started with AutEng