diff --git a/setup_cfg_fmt.py b/setup_cfg_fmt.py
index d9f84c8..1389aba 100644
--- a/setup_cfg_fmt.py
+++ b/setup_cfg_fmt.py
@@ -339,6 +339,16 @@ def _imp_classifiers(setup_cfg: str) -> str:
     return '\n'.join(sorted(classifiers))
 
 
+def _natural_sort(items: Sequence[str]) -> List[str]:
+    return sorted(
+        set(items),
+        key=lambda s: [
+            int(part) if part.isdigit() else part.lower()
+            for part in re.split(r'(\d+)', s)
+        ],
+    )
+
+
 def format_file(
         filename: str, *,
         min_py3_version: Tuple[int, int],
@@ -418,7 +428,7 @@ def format_file(
 
     # sort the classifiers if present
     if 'classifiers' in cfg['metadata']:
-        classifiers = sorted(set(cfg['metadata']['classifiers'].split('\n')))
+        classifiers = _natural_sort(cfg['metadata']['classifiers'].split('\n'))
         classifiers = _trim_py_classifiers(
             classifiers, requires, max_py_version=max_py_version,
         )

diff --git a/tests/setup_cfg_fmt_test.py b/tests/setup_cfg_fmt_test.py
index ceba336..705b6e3 100644
--- a/tests/setup_cfg_fmt_test.py
+++ b/tests/setup_cfg_fmt_test.py
@@ -4,6 +4,7 @@ import os
 import pytest
 
 from setup_cfg_fmt import _case_insensitive_glob
+from setup_cfg_fmt import _natural_sort
 from setup_cfg_fmt import _normalize_lib
 from setup_cfg_fmt import _ver_type
 from setup_cfg_fmt import main
@@ -921,3 +922,25 @@ def test_imp_classifiers_pypy_only(tmpdir):
         '[options]\n'
         'python_requires = >=3.9\n'
     )
+
+
+def test_natural_sort():
+    classifiers = [
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3 :: Only',
+    ]
+
+    sorted_classifiers = _natural_sort(classifiers)
+
+    assert sorted_classifiers == [
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3 :: Only',
+        'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+    ]

classifiers should be version sorted
notably they currently sort like this which seems bad:

```
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3 :: Only
    Programming Language :: Python :: 3.10
    Programming Language :: Python :: 3.7
    Programming Language :: Python :: 3.8
    Programming Language :: Python :: 3.9
```
tests/setup_cfg_fmt_test.py::test_ver_type_ok tests/setup_cfg_fmt_test.py::test_ver_type_error tests/setup_cfg_fmt_test.py::test_ver_type_not_a_version tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[foo-[Ff][Oo][Oo]] tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[FOO-[Ff][Oo][Oo]] tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[licen[sc]e-[Ll][Ii][Cc][Ee][Nn][SsCc][Ee]] tests/setup_cfg_fmt_test.py::test_noop tests/setup_cfg_fmt_test.py::test_rewrite_requires[install_requires-normalizes tests/setup_cfg_fmt_test.py::test_rewrite_requires[setup_requires-normalizes tests/setup_cfg_fmt_test.py::test_rewrite[orders tests/setup_cfg_fmt_test.py::test_rewrite[normalizes tests/setup_cfg_fmt_test.py::test_rewrite[sorts tests/setup_cfg_fmt_test.py::test_rewrite[normalize tests/setup_cfg_fmt_test.py::test_normalize_lib[no tests/setup_cfg_fmt_test.py::test_normalize_lib[whitespace tests/setup_cfg_fmt_test.py::test_normalize_lib[<= tests/setup_cfg_fmt_test.py::test_normalize_lib[>= tests/setup_cfg_fmt_test.py::test_normalize_lib[b/w tests/setup_cfg_fmt_test.py::test_normalize_lib[compatible tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.rst-text/x-rst] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.markdown-text/markdown] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.md-text/markdown] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README-text/plain] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[readme.txt-text/plain] tests/setup_cfg_fmt_test.py::test_readme_discover_prefers_file_over_directory tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENSE] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENCE] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENSE.md] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[license.txt] tests/setup_cfg_fmt_test.py::test_license_does_not_match_directories tests/setup_cfg_fmt_test.py::test_rewrite_sets_license_type_and_classifier tests/setup_cfg_fmt_test.py::test_rewrite_identifies_license tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[already tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[weird tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[not tests/setup_cfg_fmt_test.py::test_strips_empty_options_and_sections[only tests/setup_cfg_fmt_test.py::test_strips_empty_options_and_sections[entire tests/setup_cfg_fmt_test.py::test_guess_python_requires_python2_tox_ini tests/setup_cfg_fmt_test.py::test_guess_python_requires_tox_ini_dashed_name tests/setup_cfg_fmt_test.py::test_guess_python_requires_ignores_insufficient_version_envs tests/setup_cfg_fmt_test.py::test_guess_python_requires_from_classifiers tests/setup_cfg_fmt_test.py::test_min_py3_version_updates_python_requires tests/setup_cfg_fmt_test.py::test_min_py3_version_greater_than_minimum tests/setup_cfg_fmt_test.py::test_min_version_removes_classifiers tests/setup_cfg_fmt_test.py::test_python_requires_with_patch_version tests/setup_cfg_fmt_test.py::test_classifiers_left_alone_for_odd_python_requires tests/setup_cfg_fmt_test.py::test_min_py3_version_less_than_minimum tests/setup_cfg_fmt_test.py::test_rewrite_extras tests/setup_cfg_fmt_test.py::test_imp_classifiers_from_tox_ini tests/setup_cfg_fmt_test.py::test_imp_classifiers_no_change tests/setup_cfg_fmt_test.py::test_imp_classifiers_pypy_only tests/setup_cfg_fmt_test.py::test_natural_sort