Skip to content
cccskills
FreePublished on GitHub

html-to-markdown-extracting-tables

Use when extracting tabular data from HTML. Covers GFM Markdown tables, the structured tables array (grid cells plus pre-rendered markdown), and HTML line breaks in table cells.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885 stars(GitHub 885 + cccskills 0)

Run score Not tested

See how to install

Files included (8)

  • SKILL.md3.5 KB
  • index.md467 B
  • references/cli-reference.md18.5 KB
  • references/configuration.md18.8 KB
  • references/other-bindings.md12.3 KB
  • references/python-api.md8.0 KB
  • references/rust-api.md10.5 KB
  • references/typescript-api.md6.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:d581ed76f6325d95c7906b89a227dabe3598860edfd1a5b4a22e4fbbb085f140 Source-Hash: blake3:4237e14c4d547597faf915235dde5b5d71e8c9d84681d23919d03302b738a0b4 Schema-Version: v1 -->

Extracting tables

Use this when the user wants tabular data out of HTML — pricing tables, data grids, spec sheets. html-to-markdown parses <table> elements into two surfaces: inline GFM Markdown tables in the content stream, and a structured tables array when document structure extraction is enabled.

Two surfaces

# Inline GFM tables appear in the Markdown body
html-to-markdown input.html

# Structured table data appears under .tables in CLI JSON
html-to-markdown --json --include-structure input.html | jq '.tables'
  • Markdown tables in content — | col | col | blocks, good for LLM ingestion and human reading.
  • Structured tables array — each entry has a markdown field (pre-rendered) and a grid of structured cells (rows × cols). Use this when downstream code needs exact cell access.

Inline Markdown tables are rendered by default. Structured tables require --include-structure in the CLI, include_document_structure=True in Python, or includeDocumentStructure: true in Node.js.

Extraction-only

When you only care about tables (not the Markdown body):

html-to-markdown --json --include-structure --no-content input.html | jq '.tables'

Inspecting tables

# How many tables, and the row count of each
html-to-markdown --json --include-structure input.html \
  | jq '.tables | to_entries | map({index: .key, rows: .value.grid.rows, cols: .value.grid.cols})'

# Just the rendered markdown of the first table
html-to-markdown --json --include-structure input.html | jq -r '.tables[0].markdown'

Line breaks in cells

By default <br> inside a cell is converted to a space. Keep hard breaks:

html-to-markdown input.html --br-in-tables

Programmatic access

from html_to_markdown import convert, ConversionOptions

html = "<table><tr><th>A</th><th>B</th></tr><tr><td>1</td><td>2</td></tr></table>"
# result.tables is only populated when include_document_structure=True
result = convert(html, ConversionOptions(include_document_structure=True))
for table in result.tables:
    print(table.markdown)            # rendered GFM markdown
    print(table.grid.cells[0].content)  # first cell (grid is a TableGrid)
import { convert } from "@xberg-io/html-to-markdown";

// Node's convert() returns a ConversionResult object directly.
const result = convert(html, { includeDocumentStructure: true });
for (const table of result.tables ?? []) {
  console.log(table.markdown);   // rendered table
  // table.grid is a TableGrid: { rows, cols, cells: GridCell[] }
}

Notes and limits

  • Nested tables are flattened — the inner table is rendered inline within the parent cell.
  • Merged / spanning cells preserve row_span and col_span on each grid cell. Inspect both cell positions and span dimensions when reconstructing a layout.
  • Malformed tables still parse on a best-effort basis; check result.warnings (or --show-warnings) for non-fatal issues.

See references/cli-reference.md (Tables section) for the full flag set.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

api

Free

Use html-to-markdown-rs api reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

cli

Free

Use html-to-markdown-rs cli reference documentation.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

Convert HTML to Markdown, Djot, or plain text with structured extraction. Use when writing code that calls html-to-markdown APIs in Rust, Python, TypeScript, Go, Ruby, PHP, Java, C#, Elixir, R, C, or WASM. Covers installation, conversion, configuration, metadata extraction, tables, document structure, inline images, URL fetching, and CLI usage.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

Use when converting HTML to Markdown, Djot, or plain text. Covers output formats, heading and code-block styles, lists, escaping, wrapping, and HTML preprocessing.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

Use when extracting metadata from HTML — title, description, language, Open Graph, JSON-LD / Microdata / RDFa, headers, links, and images. Covers the --json output shape and the --extract-metadata flag.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

Use when fetching a live URL and converting it to Markdown. Covers --url, custom user agents, preprocessing for noisy pages, and the --json ConversionResult shape.

The English summary is being prepared. Showing the original description.

xberg-io/html-to-markdown885Updated Oct 26, 2026

See all skills by xberg-io

Report a problem with this skill