Sort a list containing "Item 1", "Item 2", ... "Item 10", "Item 11" alphabetically and you'll often get "Item 1, Item 10, Item 11, Item 2, Item 3...". That's not a bug — it's exactly what character-by-character alphabetical sorting is supposed to do, and it's the wrong tool for a list that contains numbers.
Why plain alphabetical sort does this
A basic alphabetical (lexicographic) sort compares text one character at a time, the same way a dictionary orders words. Comparing "Item 10" to "Item 2" character-by-character, the comparison reaches the digit "1" vs. "2" at the same position and "1" sorts before "2" — so "Item 10" wins, even though 10 is numerically larger than 2. The sort has no concept that "10" is a two-digit number; it just sees the characters "1" then "0".
What "natural sort" does differently
Our Text Sorter uses natural sort order, which recognizes runs of digits as numbers rather than as individual characters — so it correctly places "Item 2" before "Item 10", matching how a person would actually expect a list like that to be ordered. It's also case-insensitive, so "apple" and "Apple" sort next to each other rather than being split apart by capitalization.
Ascending and descending
Both directions use the same natural, case-insensitive comparison — descending isn't a separate sort, it's the same order reversed, so numbers and case behave consistently either way.
A note on blank lines
Empty lines in your input are dropped rather than sorted to the top or bottom — useful if your list has stray blank lines from copy-pasting, since they won't clutter the result.
Using the tool
Paste a list — file names, version numbers, IDs, anything mixing text and numbers — and choose ascending or descending. Try it here: Text Sorter.