GFM tables · pick column · asc/desc · numeric-aware compare

Sort Markdown table rows by any column

Pick a column index and direction — every body row sorts while the header and alignment row stay pinned. Numeric-aware compare keeps 2 ahead of 10.

Markdown table sort
Input
153 B
7 lines
Output
153 B
7 lines
Status
ready
live
Ratio
1.00×
out/in
input · markdown table
output · sorted
| product | qty | price |
| --- | --- | --- |
| apple | 10 | 1.20 |
| banana | 6 | 0.40 |
| cherry | 20 | 3.50 |
| mango | 4 | 2.10 |
| pear | 3 | 1.80 |
Quick Start

How to sort a Markdown table

The header row and the alignment row (| --- |) stay in place; everything below is sorted. Use the numeric-aware option for mixed-digit columns.

  1. 01

    Paste a table

    Any valid GFM pipe table with a header and alignment row.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    inputGFMmarkedCommonMarklive
    input · markdownmd · GFM
    | a | b |
    | - | - |
    loaded · GFMGFM · ready
  2. 02

    Pick a column

    0 is the first column. Out-of-range columns are treated as empty.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    colsoft-breaksoptionsconfiglive
    col · options0 · live
    col=0
    options applied · livelive
  3. 03

    Direction

    Ascending or descending. Tie order is stable.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    dirpreviewscoped CSSrenderstable
    dir · renderedasc · ready
    asc · desc
    rendered · liverendered
  4. 04

    Copy the result

    Header pinned, rows reordered.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    exportclipboard.md.htmlblob
    OK · exportedmd · done
    sorted
    shipped · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to sort Markdown tables

Pricing, leaderboards, schedules, reports.

Pricing tables

Order plans by monthly price. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Leaderboards

Rank rows by score or count. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

Schedules

Order events by date column. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

Dependencies

Sort dependency tables alphabetically. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Audit logs

Order audit rows by timestamp. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

cross-platform

Release notes

Sort change tables by component. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

If the first line isn't a header or the second isn't an alignment row, the sort returns an error.
Yes — the |---|---| row is treated as a fixed separator and passes through unchanged.
Toggle the checkbox to use localeCompare with { numeric: true } — so 2 sorts before 10 even in a string column.
Yes — Array.prototype.sort is required by spec to be stable since ES2019, so equal keys keep input order.
No. Sorting runs locally in your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!