diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2865cf85..e0b721de 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,7 +10,7 @@ jobs:
       matrix:
         os:
           - ubuntu-latest
-        python-version: [3.5, 3.6, 3.7, 3.8, 3.9, pypy3]
+        python-version: [3.5, 3.6, 3.7, 3.8, 3.9, "3.10", pypy3]
     steps:
     - uses: actions/checkout@v2
     - name: Set up Python ${{ matrix.python-version }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d1305894..d373dfb6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this
 project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [Unreleased]
+
+### Added
+
+- Add support for Python 3.10. (#359 by [@theskumar])
+
+
 ## [0.19.0] - 2021-07-24
 
 ### Changed
@@ -259,6 +266,7 @@ project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 [#172]: https://github.com/theskumar/python-dotenv/issues/172
 [#176]: https://github.com/theskumar/python-dotenv/issues/176
 [#183]: https://github.com/theskumar/python-dotenv/issues/183
+[#359]: https://github.com/theskumar/python-dotenv/issues/359
 
 [@Flimm]: https://github.com/Flimm
 [@alanjds]: https://github.com/alanjds
diff --git a/setup.py b/setup.py
index 06ad2dd9..53ba5a07 100644
--- a/setup.py
+++ b/setup.py
@@ -50,6 +50,7 @@ def read_files(files):
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Intended Audience :: Developers',
         'Intended Audience :: System Administrators',
diff --git a/tox.ini b/tox.ini
index 2cd63024..bf9bf707 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = lint,py{35,36,37,38,39},pypy3,manifest,coverage-report
+envlist = lint,py{35,36,37,38,39,310},pypy3,manifest,coverage-report
 
 [gh-actions]
 python =
@@ -7,7 +7,8 @@ python =
     3.6: py36, coverage-report
     3.7: py37, coverage-report
     3.8: py38, coverage-report
-    3.9: py39, lint, manifest, coverage-report
+    3.9: py39, coverage-report
+    3.10: py310, lint, manifest, coverage-report
     pypy3: pypy3, coverage-report
 
 [testenv]
@@ -17,7 +18,7 @@ deps =
   coverage
   sh
   click
-  py{35,36,37,38,39,py3}: ipython
+  py{35,36,37,38,39,310,py3}: ipython
 commands = coverage run --parallel -m pytest {posargs}
 
 [testenv:lint]
@@ -28,6 +29,7 @@ deps =
   types-mock
 commands =
   flake8 src tests
+  mypy --python-version=3.10 src tests
   mypy --python-version=3.9 src tests
   mypy --python-version=3.8 src tests
   mypy --python-version=3.7 src tests