DataHub Tools JSON to HTML Table

JSON to HTML Table Converter

Local-first

Convert JSON arrays or objects into HTML table markup.

How this tool actually works

The tool parses strict JSON, flattens nested object fields with dot-separated paths, merges discovered fields into columns, escapes cell HTML, and produces table markup. Object arrays are the most reliable input shape.

  • Flatten nested object fields
  • Escape HTML cell content
  • Generate copyable table markup

How to use it

  1. Paste a JSON object or an array of objects.
  2. Check generated columns, missing values, nulls, and nested paths.
  3. Look for literal keys containing dots before accepting the flattened result.
  4. Copy the markup and add project-specific captions, headers, and styles.

Quick example

Example input

[{"name":"Ada","address":{"city":"London"}},{"name":"Lin"}]

Expected result

Columns: name, address.city
Rows: Ada | London; Lin | empty

Literal keys such as address.city can collide with flattened paths. Empty objects and arrays may disappear from the table.

Best use cases

  • Turn API record samples into documentation tables.
  • Inspect object-array fields before import.
  • Create a basic HTML table from trusted JSON records.

References and scope

RFC 8259 defines JSON and WHATWG defines HTML tables. Dot-path flattening is a tool-specific convenience, not a standard JSON-to-table mapping.

Sources checked July 24, 2026. Specifications and platform behavior can change; verify the sources before formal use.

Known limitations

  • Top-level primitives and primitive arrays do not map cleanly to record columns.
  • JSON numbers beyond JavaScript's safe integer range can lose precision during parsing.
  • Generated markup still needs accessibility and styling review.

FAQ

Which JSON shape works best?

An array of objects with stable, non-conflicting field names works best.

Are nested fields supported?

Yes. Nested object paths become dot-separated columns.

What happens to HTML inside values?

Cell content is escaped so it is emitted as text rather than active markup.

Can large integers change?

Yes. JSON.parse uses JavaScript numbers, so integers beyond the safe range may be rounded.