alphabetizes + dedupes Markdown lists

Sort & dedupe Markdown lists

Sort each consecutive list block alphabetically (numeric-aware) and remove duplicates — non-list text is preserved unchanged.

List Sorter
Input
106 B
13 lines
Output
82 B
10 lines
Status
ready
live
Ratio
0.77×
out/in
input · markdown
output · sorted
- apple
- banana
- cherry
- date

## Sorted ordered list

2. ant
3. mouse
1. zebra
Quick Start

How to sort Markdown lists

Detects consecutive list lines (-, *, +, or 1.) and sorts each contiguous group with a numeric-aware locale compare, deduping by lowercased text.

  1. 01

    Paste list-heavy MD

    Markdown with one or many list blocks.

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

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

    Group contiguous items

    Each list block is sorted independently.

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

    groupsoft-breaksoptionsconfiglive
    scope · optionsblock · live
    block 1, block 2
    options applied · livelive
  3. 03

    Sort + dedupe

    Locale + numeric compare; duplicates removed.

    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.

    sortpreviewscoped CSSrenderstable
    out · renderedsorted · ready
    - a
    - b
    rendered · liverendered
  4. 04

    Paste back

    Use in changelog, glossary, or any reference doc.

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

    exportclipboard.md.htmlblob
    ✓ · exportedordered · 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 lists

Glossary, changelog, contributor lists — anything alphabetical.

Glossaries

Keep term lists in stable alphabetical order. 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

Contributors

Sort CONTRIBUTORS.md by name without manual edits. 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

Changelog cleanup

Order PR bullets by feature within a release. 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

Dependency lists

Alphabetize package lists in READMEs. 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

Awesome lists

Sort awesome-* repo entries fast. 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

TOC items

Reorder TOC entries during a doc refactor. 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

Yes — "item 2" sorts before "item 10" using Intl.Collator's numeric mode.
Yes. "Apple" and "apple" are treated as the same entry; the first one wins.
No. Each contiguous list block is sorted on its own — blank lines split blocks.
Indent is preserved per-item, but indented children aren't re-attached to their parents. Sort flat lists or check after.
Entirely in your browser — nothing is uploaded.
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!