How to Convert Screenshot to Markdown Table on Windows
You have a screenshot with structured data — an invoice, a config table, error codes. You need it in Markdown for GitHub, Notion, Obsidian, or a README. Manually typing pipes and aligning columns is painful.
CaptureOCR exports Markdown tables directly. Here’s how.
The Problem with Manual Markdown Tables
| Manual Approach | Pain Points |
|---|---|
Type | Header | Header | then each row |
Slow, error-prone, alignment breaks |
| Copy from Excel → Markdown converter | Extra tool, loses coordinates, no confidence |
| Screenshot → OCR → manual formatting | Double work, easy to misalign columns |
CaptureOCR: Screenshot → Markdown in 30 Seconds
Step 1: Capture Regions
Ctrl+Shift+X → drag around each data region. Auto-numbered ①②③.
For a table, you have two options:
- Capture whole table as one region → OCR returns text lines, export as Markdown
- Capture each cell/column as separate regions → more control, each cell gets its own row
Step 2: Run OCR
Fast mode (tiny model) for clean tables. Accurate mode for messy scans.
Step 3: Export Markdown
Click Export → Markdown. You get:
| # | Region (x,y,w,h) | Line | Confidence | Text |
|---|---|---|---|---|
| 1 | (120,45,380,80) | 1 | 0.998 | Config: database.url=postgres://... |
| 1 | (120,45,380,80) | 2 | 0.995 | Config: database.pool=20 |
| 2 | (120,140,380,60) | 1 | 0.992 | Server: api.example.com:443 |
Every row includes:
- Region index (which capture it came from)
- Screen coordinates (x,y,width,height)
- Line number within region
- Confidence score (0.00–1.00)
- Recognized text (pipes and newlines escaped)
Markdown Table Features
| Feature | How It Works |
|---|---|
| Pipe escaping | Any | in text becomes \| — table never breaks |
| Newline handling | Multi-line OCR text becomes <br> in cell |
| Backslash escaping | \ becomes \\ — no parsing surprises |
| Coordinates included | Trace any row back to exact screen location |
| Confidence scores | Spot low-confidence rows needing review |
Paste Directly Into
| Platform | Works? |
|---|---|
| GitHub/GitLab README | ✅ Native render |
| Notion | ✅ Paste → converts to table block |
| Obsidian | ✅ Native |
| VS Code Markdown preview | ✅ |
| Confluence (Markdown macro) | ✅ |
| Docusaurus/GitBook/Hugo | ✅ |
Real Example: Config File to Docs
Source: A YAML config file on screen
database:
host: db.prod.internal
port: 5432
name: orders
pool: 20
redis:
host: cache.internal
port: 6379
CaptureOCR workflow:
- Capture whole config as one region
- Fast mode OCR (~78ms)
- Export Markdown
- Paste into docs → instant formatted table
Result in GitHub: | # | Region (x,y,w,h) | Line | Confidence | Text | |—|—|—|—|—| | 1 | (100,50,400,300) | 1 | 0.998 | database: | | 1 | (100,50,400,300) | 2 | 0.995 | host: db.prod.internal | | 1 | (100,50,400,300) | 3 | 0.992 | port: 5432 |
Pro Tips
For Actual Tables (Grid Data)
If your screenshot is a visual table (rows/columns visible):
- Capture the whole table as one region
- OCR reads row-by-row
- Export Markdown → you get sequential lines
- Post-process in Excel: Paste CSV → pivot into grid
CaptureOCR exports line-level rows, not cell-level grid reconstruction. A 4×6 table becomes 24 rows with region coordinates. Many users paste CSV into Excel and use “Text to Columns” or pivot tables.
For Documentation
Add a note in your docs:
Table generated from screenshot via CaptureOCR. Coordinates reference source UI.
Confidence Thresholding
Low-confidence rows (under 0.90) often need review. In your editor, search for 0.8 or 0.7 in the Markdown to find them fast.
Compare: Manual vs CaptureOCR
| Task | Manual | CaptureOCR |
|---|---|---|
| 10-row table | 5–10 min | 30 sec |
| Pipe escaping | Manual | Automatic |
| Coordinates | None | Included |
| Confidence scores | None | Included |
| Reproducibility | Low | High (session package) |
Get the Workflow
- Install CaptureOCR ($2.99 one-time)
Ctrl+Shift+X→ capture your data- Export Markdown → paste anywhere
Related reads: