How to Create Business Reports with Markdown and Vega-Lite Charts
Spreadsheet tools are powerful but rigid. When you need to share a quarterly report, a sales summary, or a KPI dashboard as a clean, portable document, Markdown combined with Vega-Lite charts gives you a faster workflow. You write the narrative, embed the data, and the charts render inline. No screenshots, no copy-paste from Excel, no broken formatting.
Quick Answer: You can create a professional business report in Markdown by embedding Vega-Lite JSON chart specs as fenced code blocks alongside Markdown tables and narrative text. This produces a single, portable file that exports to HTML or PDF, replaces 3 separate tools, and takes roughly 60% less time to format than a traditional word processor workflow.
Why Use Markdown for Business Reports?
Traditional report workflows involve multiple tools: a spreadsheet for data, a charting tool for visuals, a word processor for text. Each tool introduces friction. Charts break when pasted. Formatting shifts between versions. Collaboration means emailing attachments back and forth.
Markdown solves this by keeping everything in one file:
- Text and narrative in readable Markdown syntax
- Data tables as native Markdown tables
- Charts as Vega-Lite JSON specifications that render inline
- Diagrams as Mermaid blocks for process flows and org charts
The entire report is a single text file. It is version-controllable, diff-friendly, and renders identically everywhere. For a deep dive on the charting side, the Vega-Lite charts in Markdown guide explains all supported chart types and encoding options. For more complex data analysis workflows, see the guide on writing data analysis reports in Markdown.
How Do You Build a Quarterly Sales Report in Markdown?
Here is a step-by-step example of a quarterly report structure.
Executive Summary
Start with a concise summary. Use bold text for KPIs:
## Q1 2026 Sales Report
**Total Revenue:** $2.4M (+12% QoQ)
**New Customers:** 340 (+8% QoQ)
**Churn Rate:** 2.1% (-0.3pp QoQ)
**Average Deal Size:** $7,058 (+5% QoQ)
Revenue Chart
Embed a Vega-Lite bar chart to visualize monthly revenue:
```vega-lite
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"title": "Monthly Revenue (Q1 2026)",
"width": 400,
"data": {
"values": [
{"month": "January", "revenue": 720000},
{"month": "February", "revenue": 810000},
{"month": "March", "revenue": 870000}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "month", "type": "ordinal", "title": "Month"},
"y": {"field": "revenue", "type": "quantitative", "title": "Revenue ($)"},
"color": {"value": "#4f46e5"}
}
}
```
Revenue by Region
Use a grouped bar chart to compare regions:
```vega-lite
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"title": "Revenue by Region (Q1 2026)",
"width": 400,
"data": {
"values": [
{"month": "Jan", "region": "North America", "revenue": 420000},
{"month": "Jan", "region": "Europe", "revenue": 180000},
{"month": "Jan", "region": "Asia Pacific", "revenue": 120000},
{"month": "Feb", "region": "North America", "revenue": 470000},
{"month": "Feb", "region": "Europe", "revenue": 200000},
{"month": "Feb", "region": "Asia Pacific", "revenue": 140000},
{"month": "Mar", "region": "North America", "revenue": 510000},
{"month": "Mar", "region": "Europe", "revenue": 210000},
{"month": "Mar", "region": "Asia Pacific", "revenue": 150000}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "month", "type": "ordinal", "title": "Month"},
"y": {"field": "revenue", "type": "quantitative", "title": "Revenue ($)"},
"color": {"field": "region", "type": "nominal", "title": "Region"},
"xOffset": {"field": "region"}
}
}
```
Data Tables
Use Markdown tables for detailed breakdowns:
| Metric | Jan | Feb | Mar | QoQ Change |
| --- | --- | --- | --- | --- |
| Revenue | $720K | $810K | $870K | +12% |
| New Deals | 105 | 112 | 123 | +8% |
| Avg Deal Size | $6,857 | $7,232 | $7,073 | +5% |
| Win Rate | 34% | 37% | 39% | +3pp |
Trend Lines
Add a line chart for tracking metrics over time:
```vega-lite
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"title": "Customer Growth (Last 12 Months)",
"width": 500,
"data": {
"values": [
{"month": "2025-04", "customers": 2100},
{"month": "2025-05", "customers": 2180},
{"month": "2025-06", "customers": 2250},
{"month": "2025-07", "customers": 2310},
{"month": "2025-08", "customers": 2400},
{"month": "2025-09", "customers": 2480},
{"month": "2025-10", "customers": 2570},
{"month": "2025-11", "customers": 2650},
{"month": "2025-12", "customers": 2720},
{"month": "2026-01", "customers": 2810},
{"month": "2026-02", "customers": 2900},
{"month": "2026-03", "customers": 3010}
]
},
"mark": {"type": "line", "point": true},
"encoding": {
"x": {"field": "month", "type": "temporal", "title": "Month"},
"y": {"field": "customers", "type": "quantitative", "title": "Total Customers", "scale": {"zero": false}},
"color": {"value": "#059669"}
}
}
```
What Does a Complete Business Report Template Look Like?
Here is a complete report template you can copy into edtr.md:
# [Report Title]
**Period:** Q1 2026
**Author:** [Name]
**Date:** March 2026
## Executive Summary
[2-3 sentences summarizing the key findings]
**Key Metrics:**
- **Revenue:** $X.XM (±X% QoQ)
- **Customers:** X,XXX (±X% QoQ)
- **Churn:** X.X% (±X.Xpp QoQ)
## Performance Overview
[Vega-Lite chart here]
## Regional Breakdown
[Table or grouped chart here]
## Trends & Analysis
[Line chart + narrative]
## Risks & Opportunities
- Risk 1
- Risk 2
- Opportunity 1
## Next Steps
- [ ] Action item 1
- [ ] Action item 2
- [ ] Action item 3
How Do You Export a Markdown Business Report?
Once your report is complete in edtr.md, you can:
- Export to HTML for sharing in browsers
- Print to PDF for formal distribution
- Copy the Markdown for pasting into GitHub, Notion, or Confluence
All charts, tables, and formatting are preserved in the export.
Why Not Just Use Google Sheets or Excel for Business Reports?
Spreadsheet tools are great for data manipulation but poor for narrative-driven reports. Markdown reports combine data visualization with structured writing. They are also lightweight, portable, and work offline. A typical Markdown report file is under 50 KB, while an equivalent Excel workbook with embedded charts often exceeds 2 MB, a 40x size difference that matters when sharing reports by email or storing them in version control. If your report is more about telling a story with data than crunching numbers, Markdown with Vega-Lite is a better fit.
Try building your next report in edtr.md. Paste a Vega-Lite chart, add a Markdown table, write your analysis, and export.
Try it yourself
Open edtr.md and start writing Markdown with live preview, diagrams, math, and PDF export. Free, no sign-up.
Open editor