diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..8061c67
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,54 @@
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "robohash"
+version = "2.0"
+description = "One of the leading robot-based hashing tools on the web"
+readme = "README.md"
+license = {text = "MIT"}
+authors = [
+    {name = "e1ven", email = "robo@robohash.org"}
+]
+keywords = ["robots", "avatar", "identicon"]
+classifiers = [
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.8",
+    "Programming Language :: Python :: 3.9",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Development Status :: 5 - Production/Stable",
+    "Intended Audience :: Developers",
+    "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
+    "Topic :: Multimedia :: Graphics",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+    "Topic :: Utilities",
+]
+requires-python = ">=3.8"
+dependencies = [
+    "pillow>=9.1.1",
+    "natsort>=8.1.0"
+]
+
+[project.optional-dependencies]
+web = ["tornado>=6.1"]
+
+[project.urls]
+Homepage = "https://github.com/e1ven/Robohash"
+Repository = "https://github.com/e1ven/Robohash"
+"Docker Images" = "https://github.com/e1ven/Robohash/pkgs/container/robohash"
+
+[tool.setuptools.packages.find]
+include = ["robohash*"]
+
+[tool.setuptools.package-data]
+robohash = [
+    "sets/set1/*/*/*",
+    "sets/set2/*/*",
+    "sets/set3/*/*",
+    "sets/set4/*/*",
+    "sets/set5/*/*",
+    "backgrounds/*/*",
+]
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 5aef279..0000000
--- a/setup.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[metadata]
-description-file = README.rst
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 5a4dec0..0000000
--- a/setup.py
+++ /dev/null
@@ -1,48 +0,0 @@
-try:
-    from setuptools import setup
-except ImportError:
-    from distutils.core import setup
-
-with open('README.md', encoding='utf-8') as file:
-    long_description = file.read()
-
-setup(
-    name='robohash',
-    packages=['robohash'],
-    version='2.0a1',
-    description='One of the leading robot-based hashing tools on the web',
-    long_description=long_description,
-    long_description_content_type='text/markdown',
-    author='e1ven',
-    author_email='robo@robohash.org',
-    url='https://github.com/e1ven/Robohash',
-    download_url='https://github.com/e1ven/Robohash/tarball/2.0a1',
-    keywords=['robots', 'avatar', 'identicon'],
-    license='MIT',
-    classifiers=[
-        "License :: OSI Approved :: MIT License",
-        "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
-        "Programming Language :: Python :: 3.7",
-        "Programming Language :: Python :: 3.8",
-        "Programming Language :: Python :: 3.9",
-        "Programming Language :: Python :: 3.10",
-        "Development Status :: 4 - Beta",
-        "Topic :: Security",
-    ],
-    package_data={
-        'robohash': [
-            'sets/set1/*/*/*',
-            'sets/set2/*/*',
-            'sets/set3/*/*',
-            'sets/set4/*/*',
-            'sets/set5/*/*',
-            'backgrounds/*/*',
-        ]
-    },
-    install_requires=['pillow>=9.1.1', 'natsort>=8.1.0'],
-    extras_require={
-        'web': ['tornado>=6.1'],
-    },
-    python_requires='>=3.6',
-)