Clean Text · browser-local

Sort Lines

Sort a list of lines into alphabetical order. GlyphSift uses a locale-aware comparison with numeric ordering so that item 2 sorts before item 10.

Index state
eligible
Reviewed
2026-08-24
Input limit
5,000 graphemes
25 graphemes25 code points25 bytes
Live result

Sort Lines

apple
apple
banana
cherry

Good fit

Use this tool when

  • You want a list in predictable alphabetical order.
  • You are tidying keywords, names, or tags.
  • You need numeric-aware ordering for mixed labels.

Keep the original

Avoid it when

  • The original order carries meaning, such as steps.
  • You need to remove duplicates at the same time.
  • You require case-sensitive or custom sort keys.
01

Reviewed truth vectors

Examples that expose the edge cases

Inputbanana apple cherry apple
Outputapple apple banana cherry

Lines are ordered; duplicates are kept.

Inputitem 10 item 2 item 1
Outputitem 1 item 2 item 10

Numeric-aware order keeps 2 before 10.

InputBeta alpha
Outputalpha Beta

Base-letter comparison ignores case differences.

02

Transparent implementation

How it works

  1. 01

    Normalize line endings to LF.

  2. 02

    Split into lines and compare with a locale-aware, numeric collator.

  3. 03

    Join the sorted lines with single newlines.

03

Known limitations

What the result cannot promise

It does not remove duplicates or empty lines.

Comparison is base-letter and case-insensitive, not a strict code-point sort.

It does not sort by length or a custom key.

04

Questions before copying

Frequently asked questions

Are duplicates removed?

No. Sorting preserves every line. Run Remove Duplicate Lines separately for a unique set.

How are numbers handled?

A numeric-aware comparison is used, so item 2 sorts before item 10.

Is it case-sensitive?

No. It compares base letters, so case differences do not change the order.

05

Experience, expertise & trust

How we verify this tool

GlyphSift EditorialText-engine authors & reviewers

The GlyphSift Editorial team designs the deterministic text engine, writes each tool's examples against real Unicode edge cases, and reviews every claim before a page becomes eligible for indexing. We build and test the software we document; we do not outsource the copy to generic content mills.

Each tool page is reviewed against the same six input classes the engine is tested with — ASCII, emoji, combining marks, non-Latin scripts, empty input, and 5,000-grapheme input — and cannot become eligible if it is only a parameter variation of another page.

Automated evidence

  • Tool-contract & coverage suite30 deterministic cases

    tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.

    Run in: node --test after a production build (vinext build)
  • Rendered-HTML suite12 deterministic cases

    tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.

    Run in: node --test against the built dist/server bundle
  • Transform & cleanup suite21 deterministic cases

    tests/transform-cleanup.test.mjs exercises each deterministic cleanup and transform action against whitespace, duplicate, ordering, casing, and HTML-to-text edge cases.

    Run in: node --test, no network, no randomness

Standards this tool follows