Sort Numbers
Sort a list of numbers in true numeric order - ascending or descending, with decimals, negatives, dedupe, and instant count, sum, min, and max.
- Free, no account
- No watermark
- No usage limit
About the Sort Numbers
Paste a column of numbers you copied out of a spreadsheet and watch a lot of free sorters fall apart on the spot. The reason is dumb but everywhere: those numbers came with thousands commas, 1,234 and 12,500, and the sorter treats every comma as a separator between numbers. So 1,234 never sorts as one thousand two hundred thirty-four. It splits into 1 and 234, and your list turns to garbage. This one checks the shape before it splits anything. A comma sitting between groups of exactly three digits is a thousands separator, so it gets pulled out and the number stays whole. A comma anywhere else is a plain delimiter. Paste 1,000, 2,500 and you get 1000 and 2500, exactly the way you meant it.
Everything else you'd expect is here too. It sorts in true numeric order, so 10 lands after 9 instead of getting stuck before 2. It reads decimals and negatives right, sets aside anything that isn't a number instead of choking, and hands back the count, sum, smallest, and largest. No sign-up, no upload, nothing leaves your browser.
How to use
- Paste your numbers into the top box. Commas, spaces, tabs, semicolons, one-per-line, or a messy mix of all of them, it all parses.
3, 1, 2, 10works, and so does a column pasted straight out of a spreadsheet. - Pick an order. Ascending (low to high) is the default. Descending (high to low) is one click away.
- Toggle Remove duplicates if you want each distinct value once. It's off to start, so nothing gets dropped unless you ask for it.
- Choose the output separator, new line, comma, or space, depending on where the sorted list is headed next.
- Read the stats and copy. Count, sum, min, and max show up on their own, and one click copies the whole result.
There's no Sort button, on purpose. The output rebuilds the instant you change the input or flip any option, so you can toggle between ascending and descending and watch the list rearrange in real time.
The comma problem, in more detail
A comma means two completely different things depending on where it sits. The comma inside 1,200 holds one number together. The commas in 1, 2, 3 separate three numbers. A sorter that guesses wrong reads 1,200 as 1 and 200.
The rule here is simple and strict. A comma counts as a thousands separator only when it sits between groups of exactly three digits, like 1,234 or 1,234,567. Those commas get stripped and the number is kept whole. Everything else is a delimiter. That strictness is deliberate: a token like 1,23 has the wrong grouping, two digits after the comma instead of three, so it is NOT read as a thousands number and splits into 1 and 23. It's the only reliable way to tell 12,500 (twelve and a half thousand) apart from 12, 500 (two separate numbers) without stopping to ask you.
It doesn't cover every currency format out there. But the everyday case, numbers pasted out of a spreadsheet that already had the commas in, just works, no find-and-replace first.
It doesn't choke on junk
Real pasted data is messy. There's a header row that says "Price," a stray $, an N/A where a reading is missing, a label somebody forgot to strip out. Most of that would make a strict sorter throw an error or spit NaN and refuse to do anything until you clean it by hand.
This one does the useful thing first. It sorts every value it can read as a number, quietly sets the rest aside, then tells you what it skipped, listing the first several by name. Paste a column that still has its "Price" header on top and you get your numbers in order plus a small note that "Price" was skipped. One bad cell never poisons the whole result, and nothing disappears without you seeing it go.
True numeric order, decimals and negatives included
If you've ever sorted a column somewhere and gotten the maddening 1, 10, 100, 2, 20 order, that tool was sorting your numbers as text, comparing them one character at a time like words. It looks at the "1" in "10" and the "2" in "2," decides 1 comes before 2, and stops right there, which is how "10" ends up ahead of "2." This sorter reads each token into a real number first and then compares by size, so 2 always comes before 10.
Decimals fall into the same trap when you eyeball them. Is 3.9 bigger than 3.10? Yes, 3.9 is 3.90, and ninety hundredths beats ten. Read as text though, "3.10" sorts before "3.9" because 1 beats 9. Here they're compared as real numbers to full precision, so 3.14 comes before 3.141 comes before 3.15, no rounding slipped in between.
Negatives are the other place hand-sorting slips. The bigger the digits after the minus sign, the smaller the value, so -100 is less than -10 is less than -1. An ascending sort of -5, 0, 3.5, -1 gives you -5, -1, 0, 3.5, most negative first, climbing through zero into the positives. Mix decimals and negatives however you've got them and the ordering still holds.
Dedupe, and the stats it hands back
Remove duplicates keeps one copy of each distinct value. Because the list is already sorted when dedupe runs, equal values sit right next to each other and the pass is quick and exact. The catch worth knowing: equality is numeric, so 1.5, 1.50, and 1.500 are one value and collapse to a single entry. That's almost always what you want when tidying a list. The tool also reports how many it dropped, which doubles as a sanity check. Strip 12 duplicates out of 100 supposedly-unique IDs and you know they weren't all unique to begin with.
Count, sum, min, and max describe the set you're looking at right now. Turn dedupe on and all four recalculate over the unique values. Need the average? Divide the sum by the count.
For anything with real structure, columns that have to stay aligned when you sort by one of them, formulas, a dataset you'll keep editing, a spreadsheet is still the better tool. This orders a flat list fast, it doesn't know that column A belongs with column B.
Frequently asked questions
Does it read scientific notation like 1e3 or -2.5E-4?
Yes. Tokens written in exponent form parse as the numbers they stand for, so 1e3 is 1000 and -2.5E-4 is -0.00025, and they sort into place alongside plain decimals and integers. Hex like 0x1F and words like "Infinity" are not treated as numbers, though, so they get flagged and skipped.
Will it round or change my numbers?
No. It sorts your values and hands them back as they are, to full precision. The one bit of cleanup is cosmetic. Computers store some decimals with a tiny error, so a sum can come out looking like 0.30000000000000004. The tool trims that floating-point noise off the display so you see 0.3, not the ugly tail. Your values aren't altered, only tidied for reading.
Does a stray plus sign or leading zeros trip it up, like `+5` or `007`?
No. A leading + just reads as positive, so +5 sorts in as 5 right beside a plain 5. Leading zeros are dropped too, so 007 becomes 7 and 010 becomes 10. Neither one gets flagged as junk, and neither changes where the number lands in the order.
Does removing duplicates treat 1.5 and 1.50 as the same?
Yes, because the check is numeric, not textual. 1.5, 1.50, and 1.500 are the same value and collapse to one entry when dedupe is on. If you were counting on differently-written-but-equal numbers to survive separately they won't, worth knowing before you dedupe a list where the exact string mattered.
Can I paste with one separator and get the output in another?
That's the normal case. Paste with spaces or line breaks and choose comma output, or paste a comma list and get one-per-line back. The input parser is flexible about separators, and the output separator is its own setting, so the two never have to match.
Is there a limit on how many numbers I can sort?
No fixed cap. The sorting runs on your own device, so thousands of numbers order in a blink and the real ceiling is your machine's memory, not a server. Ordinary lists, even long ones, come back instantly, and nothing is uploaded either way.
If I sort descending, does Min still show the smallest number?
Yes. Min is always the smallest value and Max the largest, whichever direction you sort. Flip to descending and the list reorders high to low, but the Min and Max boxes don't swap with it, they keep pointing at the true ends of your data.