diff --git a/docs/index.rst b/docs/index.rst
index bf2feea9a..0c7fb690b 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -97,7 +97,7 @@ The core image library is designed for fast access to data stored in a few basic
.. toctree::
:maxdepth: 2
- installation.rst
+ installation/index.rst
handbook/index.rst
reference/index.rst
porting.rst
diff --git a/docs/installation.rst b/docs/installation.rst
deleted file mode 100644
index 980bbd99d..000000000
--- a/docs/installation.rst
+++ /dev/null
@@ -1,597 +0,0 @@
-Installation
-============
-
-.. raw:: html
-
-
-
-Python Support
---------------
-
-Pillow supports these Python versions.
-
-.. csv-table:: Newer versions
- :file: newer-versions.csv
- :header-rows: 1
-
-.. csv-table:: Older versions
- :file: older-versions.csv
- :header-rows: 1
-
-.. _Linux Installation:
-.. _macOS Installation:
-.. _Windows Installation:
-.. _FreeBSD Installation:
-
-Basic Installation
-------------------
-
-.. note::
-
- The following instructions will install Pillow with support for
- most common image formats. See :ref:`external-libraries` for a
- full list of external libraries supported.
-
-Install Pillow with :command:`pip`::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade Pillow
-
-Optionally, install :pypi:`defusedxml` for Pillow to read XMP data,
-and :pypi:`olefile` for Pillow to read FPX and MIC images::
-
- python3 -m pip install --upgrade defusedxml olefile
-
-
-.. tab:: Linux
-
- We provide binaries for Linux for each of the supported Python
- versions in the manylinux wheel format. These include support for all
- optional libraries except libimagequant. Raqm support requires
- FriBiDi to be installed separately::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade Pillow
-
- Most major Linux distributions, including Fedora, Ubuntu and ArchLinux
- also include Pillow in packages that previously contained PIL e.g.
- ``python-imaging``. Debian splits it into two packages, ``python3-pil``
- and ``python3-pil.imagetk``.
-
-.. tab:: macOS
-
- We provide binaries for macOS for each of the supported Python
- versions in the wheel format. These include support for all optional
- libraries except libimagequant. Raqm support requires
- FriBiDi to be installed separately::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade Pillow
-
- While we provide binaries for both x86-64 and arm64, we do not provide universal2
- binaries. However, it is simple to combine our current binaries to create one::
-
- python3 -m pip download --only-binary=:all: --platform macosx_10_10_x86_64 Pillow
- python3 -m pip download --only-binary=:all: --platform macosx_11_0_arm64 Pillow
- python3 -m pip install delocate
-
- Then, with the names of the downloaded wheels, use Python to combine them::
-
- from delocate.fuse import fuse_wheels
- fuse_wheels('Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl', 'Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl', 'Pillow-9.4.0-cp39-cp39-macosx_11_0_universal2.whl')
-
-.. tab:: Windows
-
- We provide Pillow binaries for Windows compiled for the matrix of supported
- Pythons in the wheel format. These include x86, x86-64 and arm64 versions
- (with the exception of Python 3.8 on arm64). These binaries include support
- for all optional libraries except libimagequant and libxcb. Raqm support
- requires FriBiDi to be installed separately::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade Pillow
-
- To install Pillow in MSYS2, see `Building on Windows using MSYS2/MinGW`_.
-
-.. tab:: FreeBSD
-
- Pillow can be installed on FreeBSD via the official Ports or Packages systems:
-
- **Ports**::
-
- cd /usr/ports/graphics/py-pillow && make install clean
-
- **Packages**::
-
- pkg install py38-pillow
-
- .. note::
-
- The `Pillow FreeBSD port
- `_ and packages
- are tested by the ports team with all supported FreeBSD versions.
-
-
-.. _Building on Linux:
-.. _Building on macOS:
-.. _Building on Windows:
-.. _Building on Windows using MSYS2/MinGW:
-.. _Building on FreeBSD:
-.. _Building on Android:
-
-Building From Source
---------------------
-
-.. _external-libraries:
-
-External Libraries
-^^^^^^^^^^^^^^^^^^
-
-.. note::
-
- You **do not need to install all supported external libraries** to
- use Pillow's basic features. **Zlib** and **libjpeg** are required
- by default.
-
-.. note::
-
- There are Dockerfiles in our `Docker images repo
- `_ to install the
- dependencies for some operating systems.
-
-Many of Pillow's features require external libraries:
-
-* **libjpeg** provides JPEG functionality.
-
- * Pillow has been tested with libjpeg versions **6b**, **8**, **9-9d** and
- libjpeg-turbo version **8**.
- * Starting with Pillow 3.0.0, libjpeg is required by default. It can be
- disabled with the ``-C jpeg=disable`` flag.
-
-* **zlib** provides access to compressed PNGs
-
- * Starting with Pillow 3.0.0, zlib is required by default. It can be
- disabled with the ``-C zlib=disable`` flag.
-
-* **libtiff** provides compressed TIFF functionality
-
- * Pillow has been tested with libtiff versions **3.x** and **4.0-4.6.0**
-
-* **libfreetype** provides type related services
-
-* **littlecms** provides color management
-
- * Pillow version 2.2.1 and below uses liblcms1, Pillow 2.3.0 and
- above uses liblcms2. Tested with **1.19** and **2.7-2.16**.
-
-* **libwebp** provides the WebP format.
-
- * Pillow has been tested with version **0.1.3**, which does not read
- transparent WebP files. Versions **0.3.0** and above support
- transparency.
-
-* **openjpeg** provides JPEG 2000 functionality.
-
- * Pillow has been tested with openjpeg **2.0.0**, **2.1.0**, **2.3.1**,
- **2.4.0** and **2.5.0**.
- * Pillow does **not** support the earlier **1.5** series which ships
- with Debian Jessie.
-
-* **libimagequant** provides improved color quantization
-
- * Pillow has been tested with libimagequant **2.6-4.2.2**
- * Libimagequant is licensed GPLv3, which is more restrictive than
- the Pillow license, therefore we will not be distributing binaries
- with libimagequant support enabled.
-
-* **libraqm** provides complex text layout support.
-
- * libraqm provides bidirectional text support (using FriBiDi),
- shaping (using HarfBuzz), and proper script itemization. As a
- result, Raqm can support most writing systems covered by Unicode.
- * libraqm depends on the following libraries: FreeType, HarfBuzz,
- FriBiDi, make sure that you install them before installing libraqm
- if not available as package in your system.
- * Setting text direction or font features is not supported without libraqm.
- * Pillow wheels since version 8.2.0 include a modified version of libraqm that
- loads libfribidi at runtime if it is installed.
- On Windows this requires compiling FriBiDi and installing ``fribidi.dll``
- into a directory listed in the `Dynamic-link library search order (Microsoft Learn)
- `_
- (``fribidi-0.dll`` or ``libfribidi-0.dll`` are also detected).
- See `Build Options`_ to see how to build this version.
- * Previous versions of Pillow (5.0.0 to 8.1.2) linked libraqm dynamically at runtime.
-
-* **libxcb** provides X11 screengrab support.
-
-.. tab:: Linux
-
- If you didn't build Python from source, make sure you have Python's
- development libraries installed.
-
- In Debian or Ubuntu::
-
- sudo apt-get install python3-dev python3-setuptools
-
- In Fedora, the command is::
-
- sudo dnf install python3-devel redhat-rpm-config
-
- In Alpine, the command is::
-
- sudo apk add python3-dev py3-setuptools
-
- .. Note:: ``redhat-rpm-config`` is required on Fedora 23, but not earlier versions.
-
- Prerequisites for **Ubuntu 16.04 LTS - 22.04 LTS** are installed with::
-
- sudo apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
- libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \
- libharfbuzz-dev libfribidi-dev libxcb1-dev
-
- To install libraqm, ``sudo apt-get install meson`` and then see
- ``depends/install_raqm.sh``.
-
- Prerequisites are installed on recent **Red Hat**, **CentOS** or **Fedora** with::
-
- sudo dnf install libtiff-devel libjpeg-devel openjpeg2-devel zlib-devel \
- freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel \
- harfbuzz-devel fribidi-devel libraqm-devel libimagequant-devel libxcb-devel
-
- Note that the package manager may be yum or DNF, depending on the
- exact distribution.
-
- Prerequisites are installed for **Alpine** with::
-
- sudo apk add tiff-dev jpeg-dev openjpeg-dev zlib-dev freetype-dev lcms2-dev \
- libwebp-dev tcl-dev tk-dev harfbuzz-dev fribidi-dev libimagequant-dev \
- libxcb-dev libpng-dev
-
- See also the ``Dockerfile``\s in the Test Infrastructure repo
- (https://github.com/python-pillow/docker-images) for a known working
- install process for other tested distros.
-
-.. tab:: macOS
-
- The Xcode command line tools are required to compile portions of
- Pillow. The tools are installed by running ``xcode-select --install``
- from the command line. The command line tools are required even if you
- have the full Xcode package installed. It may be necessary to run
- ``sudo xcodebuild -license`` to accept the license prior to using the
- tools.
-
- The easiest way to install external libraries is via `Homebrew
- `_. After you install Homebrew, run::
-
- brew install libjpeg libtiff little-cms2 openjpeg webp
-
- To install libraqm on macOS use Homebrew to install its dependencies::
-
- brew install freetype harfbuzz fribidi
-
- Then see ``depends/install_raqm_cmake.sh`` to install libraqm.
-
-.. tab:: Windows
-
- We recommend you use prebuilt wheels from PyPI.
- If you wish to compile Pillow manually, you can use the build scripts
- in the ``winbuild`` directory used for CI testing and development.
- These scripts require Visual Studio 2017 or newer and NASM.
-
- The scripts also install Pillow from the local copy of the source code, so the
- `Installing`_ instructions will not be necessary afterwards.
-
-.. tab:: Windows using MSYS2/MinGW
-
- To build Pillow using MSYS2, make sure you run the **MSYS2 MinGW 32-bit** or
- **MSYS2 MinGW 64-bit** console, *not* **MSYS2** directly.
-
- The following instructions target the 64-bit build, for 32-bit
- replace all occurrences of ``mingw-w64-x86_64-`` with ``mingw-w64-i686-``.
-
- Make sure you have Python and GCC installed::
-
- pacman -S \
- mingw-w64-x86_64-gcc \
- mingw-w64-x86_64-python3 \
- mingw-w64-x86_64-python3-pip \
- mingw-w64-x86_64-python3-setuptools
-
- Prerequisites are installed on **MSYS2 MinGW 64-bit** with::
-
- pacman -S \
- mingw-w64-x86_64-libjpeg-turbo \
- mingw-w64-x86_64-zlib \
- mingw-w64-x86_64-libtiff \
- mingw-w64-x86_64-freetype \
- mingw-w64-x86_64-lcms2 \
- mingw-w64-x86_64-libwebp \
- mingw-w64-x86_64-openjpeg2 \
- mingw-w64-x86_64-libimagequant \
- mingw-w64-x86_64-libraqm
-
- https://www.msys2.org/docs/python/ states that setuptools >= 60 does not work with
- MSYS2. To workaround this, before installing Pillow you must run::
-
- export SETUPTOOLS_USE_DISTUTILS=stdlib
-
-.. tab:: FreeBSD
-
- .. Note:: Only FreeBSD 10 and 11 tested
-
- Make sure you have Python's development libraries installed::
-
- sudo pkg install python3
-
- Prerequisites are installed on **FreeBSD 10 or 11** with::
-
- sudo pkg install jpeg-turbo tiff webp lcms2 freetype2 openjpeg harfbuzz fribidi libxcb
-
- Then see ``depends/install_raqm_cmake.sh`` to install libraqm.
-
-.. tab:: Android
-
- Basic Android support has been added for compilation within the Termux
- environment. The dependencies can be installed by::
-
- pkg install -y python ndk-sysroot clang make \
- libjpeg-turbo
-
- This has been tested within the Termux app on ChromeOS, on x86.
-
-Installing
-^^^^^^^^^^
-
-Once you have installed the prerequisites, to install Pillow from the source
-code on PyPI, run::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade Pillow --no-binary :all:
-
-If the prerequisites are installed in the standard library locations
-for your machine (e.g. :file:`/usr` or :file:`/usr/local`), no
-additional configuration should be required. If they are installed in
-a non-standard location, you may need to configure setuptools to use
-those locations by editing :file:`setup.py` or
-:file:`pyproject.toml`, or by adding environment variables on the command
-line::
-
- CFLAGS="-I/usr/pkg/include" python3 -m pip install --upgrade Pillow --no-binary :all:
-
-If Pillow has been previously built without the required
-prerequisites, it may be necessary to manually clear the pip cache or
-build without cache using the ``--no-cache-dir`` option to force a
-build with newly installed external libraries.
-
-If you would like to install from a local copy of the source code instead, you
-can clone from GitHub with ``git clone https://github.com/python-pillow/Pillow``
-or download and extract the `compressed archive from PyPI`_.
-
-After navigating to the Pillow directory, run::
-
- python3 -m pip install --upgrade pip
- python3 -m pip install .
-
-.. _compressed archive from PyPI: https://pypi.org/project/pillow/#files
-
-Build Options
-"""""""""""""
-
-* Environment variable: ``MAX_CONCURRENCY=n``. Pillow can use
- multiprocessing to build the extension. Setting ``MAX_CONCURRENCY``
- sets the number of CPUs to use, or can disable parallel building by
- using a setting of 1. By default, it uses 4 CPUs, or if 4 are not
- available, as many as are present.
-
-* Config settings: ``-C zlib=disable``, ``-C jpeg=disable``,
- ``-C tiff=disable``, ``-C freetype=disable``, ``-C raqm=disable``,
- ``-C lcms=disable``, ``-C webp=disable``, ``-C webpmux=disable``,
- ``-C jpeg2000=disable``, ``-C imagequant=disable``, ``-C xcb=disable``.
- Disable building the corresponding feature even if the development
- libraries are present on the building machine.
-
-* Config settings: ``-C zlib=enable``, ``-C jpeg=enable``,
- ``-C tiff=enable``, ``-C freetype=enable``, ``-C raqm=enable``,
- ``-C lcms=enable``, ``-C webp=enable``, ``-C webpmux=enable``,
- ``-C jpeg2000=enable``, ``-C imagequant=enable``, ``-C xcb=enable``.
- Require that the corresponding feature is built. The build will raise
- an exception if the libraries are not found. Webpmux (WebP metadata)
- relies on WebP support. Tcl and Tk also must be used together.
-
-* Config settings: ``-C raqm=vendor``, ``-C fribidi=vendor``.
- These flags are used to compile a modified version of libraqm and
- a shim that dynamically loads libfribidi at runtime. These are
- used to compile the standard Pillow wheels. Compiling libraqm requires
- a C99-compliant compiler.
-
-* Build flag: ``-C platform-guessing=disable``. Skips all of the
- platform dependent guessing of include and library directories for
- automated build systems that configure the proper paths in the
- environment variables (e.g. Buildroot).
-
-* Build flag: ``-C debug=true``. Adds a debugging flag to the include and
- library search process to dump all paths searched for and found to
- stdout.
-
-
-Sample usage::
-
- python3 -m pip install --upgrade Pillow -C [feature]=enable
-
-Platform Support
-----------------
-
-Current platform support for Pillow. Binary distributions are
-contributed for each release on a volunteer basis, but the source
-should compile and run everywhere platform support is listed. In
-general, we aim to support all current versions of Linux, macOS, and
-Windows.
-
-Continuous Integration Targets
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-These platforms are built and tested for every change.
-
-+----------------------------------+----------------------------+---------------------+
-| Operating system | Tested Python versions | Tested architecture |
-+==================================+============================+=====================+
-| Alpine | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Amazon Linux 2 | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Amazon Linux 2023 | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Arch | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| CentOS 7 | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| CentOS Stream 8 | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| CentOS Stream 9 | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Debian 11 Bullseye | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Debian 12 Bookworm | 3.11 | x86, x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Fedora 38 | 3.11 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Fedora 39 | 3.12 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Gentoo | 3.9 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| macOS 12 Monterey | 3.8, 3.9, 3.10, 3.11, | x86-64 |
-| | 3.12, PyPy3 | |
-+----------------------------------+----------------------------+---------------------+
-| Ubuntu Linux 20.04 LTS (Focal) | 3.8 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Ubuntu Linux 22.04 LTS (Jammy) | 3.8, 3.9, 3.10, 3.11, | x86-64 |
-| | 3.12, PyPy3 | |
-| +----------------------------+---------------------+
-| | 3.10 | arm64v8, ppc64le, |
-| | | s390x |
-+----------------------------------+----------------------------+---------------------+
-| Windows Server 2016 | 3.8 | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-| Windows Server 2022 | 3.8, 3.9, 3.10, 3.11, | x86-64 |
-| | 3.12, PyPy3 | |
-| +----------------------------+---------------------+
-| | 3.12 | x86 |
-| +----------------------------+---------------------+
-| | 3.9 (MinGW) | x86-64 |
-| +----------------------------+---------------------+
-| | 3.8, 3.9 (Cygwin) | x86-64 |
-+----------------------------------+----------------------------+---------------------+
-
-
-Other Platforms
-^^^^^^^^^^^^^^^
-
-These platforms have been reported to work at the versions mentioned.
-
-.. note::
-
- Contributors please test Pillow on your platform then update this
- document and send a pull request.
-
-+----------------------------------+----------------------------+------------------+--------------+
-| Operating system | | Tested Python | | Latest tested | | Tested |
-| | | versions | | Pillow version | | processors |
-+==================================+============================+==================+==============+
-| macOS 14 Sonoma | 3.8, 3.9, 3.10, 3.11, 3.12 | 10.2.0 |arm |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 13 Ventura | 3.8, 3.9, 3.10, 3.11 | 10.0.1 |arm |
-| +----------------------------+------------------+ |
-| | 3.7 | 9.5.0 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 12 Monterey | 3.7, 3.8, 3.9, 3.10, 3.11 | 9.3.0 |arm |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 11 Big Sur | 3.7, 3.8, 3.9, 3.10 | 8.4.0 |arm |
-| +----------------------------+------------------+--------------+
-| | 3.7, 3.8, 3.9, 3.10, 3.11 | 9.4.0 |x86-64 |
-| +----------------------------+------------------+ |
-| | 3.6 | 8.4.0 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 10.15 Catalina | 3.6, 3.7, 3.8, 3.9 | 8.3.2 |x86-64 |
-| +----------------------------+------------------+ |
-| | 3.5 | 7.2.0 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 10.14 Mojave | 3.5, 3.6, 3.7, 3.8 | 7.2.0 |x86-64 |
-| +----------------------------+------------------+ |
-| | 2.7 | 6.0.0 | |
-| +----------------------------+------------------+ |
-| | 3.4 | 5.4.1 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 10.13 High Sierra | 2.7, 3.4, 3.5, 3.6 | 4.2.1 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| macOS 10.12 Sierra | 2.7, 3.4, 3.5, 3.6 | 4.1.1 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Mac OS X 10.11 El Capitan | 2.7, 3.4, 3.5, 3.6, 3.7 | 5.4.1 |x86-64 |
-| +----------------------------+------------------+ |
-| | 3.3 | 4.1.0 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| Mac OS X 10.9 Mavericks | 2.7, 3.2, 3.3, 3.4 | 3.0.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Mac OS X 10.8 Mountain Lion | 2.6, 2.7, 3.2, 3.3 | |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Redhat Linux 6 | 2.6 | |x86 |
-+----------------------------------+----------------------------+------------------+--------------+
-| CentOS 6.3 | 2.7, 3.3 | |x86 |
-+----------------------------------+----------------------------+------------------+--------------+
-| CentOS 8 | 3.9 | 9.0.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Fedora 23 | 2.7, 3.4 | 3.1.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Ubuntu Linux 12.04 LTS (Precise) | | 2.6, 3.2, 3.3, 3.4, 3.5 | 3.4.1 |x86,x86-64 |
-| | | PyPy5.3.1, PyPy3 v2.4.0 | | |
-| +----------------------------+------------------+--------------+
-| | 2.7 | 4.3.0 |x86-64 |
-| +----------------------------+------------------+--------------+
-| | 2.7, 3.2 | 3.4.1 |ppc |
-+----------------------------------+----------------------------+------------------+--------------+
-| Ubuntu Linux 10.04 LTS (Lucid) | 2.6 | 2.3.0 |x86,x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Debian 8.2 Jessie | 2.7, 3.4 | 3.1.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Raspbian Jessie | 2.7, 3.4 | 3.1.0 |arm |
-+----------------------------------+----------------------------+------------------+--------------+
-| Raspbian Stretch | 2.7, 3.5 | 4.0.0 |arm |
-+----------------------------------+----------------------------+------------------+--------------+
-| Raspberry Pi OS | 3.6, 3.7, 3.8, 3.9 | 8.2.0 |arm |
-| +----------------------------+------------------+ |
-| | 2.7 | 6.2.2 | |
-+----------------------------------+----------------------------+------------------+--------------+
-| Gentoo Linux | 2.7, 3.2 | 2.1.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| FreeBSD 11.1 | 2.7, 3.4, 3.5, 3.6 | 4.3.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| FreeBSD 10.3 | 2.7, 3.4, 3.5 | 4.2.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| FreeBSD 10.2 | 2.7, 3.4 | 3.1.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 11 | 3.9, 3.10, 3.11, 3.12 | 10.2.0 |arm64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 11 Pro | 3.11, 3.12 | 10.2.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 10 | 3.7 | 7.1.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 10/Cygwin 3.3 | 3.6, 3.7, 3.8, 3.9 | 8.4.0 |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 8.1 Pro | 2.6, 2.7, 3.2, 3.3, 3.4 | 2.4.0 |x86,x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 8 Pro | 2.6, 2.7, 3.2, 3.3, 3.4a3 | 2.2.0 |x86,x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows 7 Professional | 3.7 | 7.0.0 |x86,x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-| Windows Server 2008 R2 Enterprise| 3.3 | |x86-64 |
-+----------------------------------+----------------------------+------------------+--------------+
-
-Old Versions
-------------
-
-You can download old distributions from the `release history at PyPI
-`_ and by direct URL access
-eg. https://pypi.org/project/pillow/1.0/.
diff --git a/docs/installation/basic-installation.rst b/docs/installation/basic-installation.rst
new file mode 100644
index 000000000..ff05e7f58
--- /dev/null
+++ b/docs/installation/basic-installation.rst
@@ -0,0 +1,95 @@
+Basic Installation
+------------------
+
+.. note::
+
+ The following instructions will install Pillow with support for
+ most common image formats. See :ref:`external-libraries` for a
+ full list of external libraries supported.
+
+Install Pillow with :command:`pip`::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade Pillow
+
+Optionally, install :pypi:`defusedxml` for Pillow to read XMP data,
+and :pypi:`olefile` for Pillow to read FPX and MIC images::
+
+ python3 -m pip install --upgrade defusedxml olefile
+
+
+.. tab:: Linux
+
+ We provide binaries for Linux for each of the supported Python
+ versions in the manylinux wheel format. These include support for all
+ optional libraries except libimagequant. Raqm support requires
+ FriBiDi to be installed separately::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade Pillow
+
+ Most major Linux distributions, including Fedora, Ubuntu and ArchLinux
+ also include Pillow in packages that previously contained PIL e.g.
+ ``python-imaging``. Debian splits it into two packages, ``python3-pil``
+ and ``python3-pil.imagetk``.
+
+.. tab:: macOS
+
+ We provide binaries for macOS for each of the supported Python
+ versions in the wheel format. These include support for all optional
+ libraries except libimagequant. Raqm support requires
+ FriBiDi to be installed separately::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade Pillow
+
+ While we provide binaries for both x86-64 and arm64, we do not provide universal2
+ binaries. However, it is simple to combine our current binaries to create one::
+
+ python3 -m pip download --only-binary=:all: --platform macosx_10_10_x86_64 Pillow
+ python3 -m pip download --only-binary=:all: --platform macosx_11_0_arm64 Pillow
+ python3 -m pip install delocate
+
+ Then, with the names of the downloaded wheels, use Python to combine them::
+
+ from delocate.fuse import fuse_wheels
+ fuse_wheels('Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl', 'Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl', 'Pillow-9.4.0-cp39-cp39-macosx_11_0_universal2.whl')
+
+.. tab:: Windows
+
+ We provide Pillow binaries for Windows compiled for the matrix of supported
+ Pythons in the wheel format. These include x86, x86-64 and arm64 versions
+ (with the exception of Python 3.8 on arm64). These binaries include support
+ for all optional libraries except libimagequant and libxcb. Raqm support
+ requires FriBiDi to be installed separately::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade Pillow
+
+ To install Pillow in MSYS2, see `Building on Windows using MSYS2/MinGW`_.
+
+.. tab:: FreeBSD
+
+ Pillow can be installed on FreeBSD via the official Ports or Packages systems:
+
+ **Ports**::
+
+ cd /usr/ports/graphics/py-pillow && make install clean
+
+ **Packages**::
+
+ pkg install py38-pillow
+
+ .. note::
+
+ The `Pillow FreeBSD port
+ `_ and packages
+ are tested by the ports team with all supported FreeBSD versions.
+
+
+.. _Building on Linux:
+.. _Building on macOS:
+.. _Building on Windows:
+.. _Building on Windows using MSYS2/MinGW:
+.. _Building on FreeBSD:
+.. _Building on Android:
diff --git a/docs/installation/building-from-source.rst b/docs/installation/building-from-source.rst
new file mode 100644
index 000000000..051d51c22
--- /dev/null
+++ b/docs/installation/building-from-source.rst
@@ -0,0 +1,298 @@
+Building From Source
+--------------------
+
+.. _external-libraries:
+
+External Libraries
+^^^^^^^^^^^^^^^^^^
+
+.. note::
+
+ You **do not need to install all supported external libraries** to
+ use Pillow's basic features. **Zlib** and **libjpeg** are required
+ by default.
+
+.. note::
+
+ There are Dockerfiles in our `Docker images repo
+ `_ to install the
+ dependencies for some operating systems.
+
+Many of Pillow's features require external libraries:
+
+* **libjpeg** provides JPEG functionality.
+
+ * Pillow has been tested with libjpeg versions **6b**, **8**, **9-9d** and
+ libjpeg-turbo version **8**.
+ * Starting with Pillow 3.0.0, libjpeg is required by default. It can be
+ disabled with the ``-C jpeg=disable`` flag.
+
+* **zlib** provides access to compressed PNGs
+
+ * Starting with Pillow 3.0.0, zlib is required by default. It can be
+ disabled with the ``-C zlib=disable`` flag.
+
+* **libtiff** provides compressed TIFF functionality
+
+ * Pillow has been tested with libtiff versions **3.x** and **4.0-4.6.0**
+
+* **libfreetype** provides type related services
+
+* **littlecms** provides color management
+
+ * Pillow version 2.2.1 and below uses liblcms1, Pillow 2.3.0 and
+ above uses liblcms2. Tested with **1.19** and **2.7-2.16**.
+
+* **libwebp** provides the WebP format.
+
+ * Pillow has been tested with version **0.1.3**, which does not read
+ transparent WebP files. Versions **0.3.0** and above support
+ transparency.
+
+* **openjpeg** provides JPEG 2000 functionality.
+
+ * Pillow has been tested with openjpeg **2.0.0**, **2.1.0**, **2.3.1**,
+ **2.4.0** and **2.5.0**.
+ * Pillow does **not** support the earlier **1.5** series which ships
+ with Debian Jessie.
+
+* **libimagequant** provides improved color quantization
+
+ * Pillow has been tested with libimagequant **2.6-4.2.2**
+ * Libimagequant is licensed GPLv3, which is more restrictive than
+ the Pillow license, therefore we will not be distributing binaries
+ with libimagequant support enabled.
+
+* **libraqm** provides complex text layout support.
+
+ * libraqm provides bidirectional text support (using FriBiDi),
+ shaping (using HarfBuzz), and proper script itemization. As a
+ result, Raqm can support most writing systems covered by Unicode.
+ * libraqm depends on the following libraries: FreeType, HarfBuzz,
+ FriBiDi, make sure that you install them before installing libraqm
+ if not available as package in your system.
+ * Setting text direction or font features is not supported without libraqm.
+ * Pillow wheels since version 8.2.0 include a modified version of libraqm that
+ loads libfribidi at runtime if it is installed.
+ On Windows this requires compiling FriBiDi and installing ``fribidi.dll``
+ into a directory listed in the `Dynamic-link library search order (Microsoft Learn)
+ `_
+ (``fribidi-0.dll`` or ``libfribidi-0.dll`` are also detected).
+ See `Build Options`_ to see how to build this version.
+ * Previous versions of Pillow (5.0.0 to 8.1.2) linked libraqm dynamically at runtime.
+
+* **libxcb** provides X11 screengrab support.
+
+.. tab:: Linux
+
+ If you didn't build Python from source, make sure you have Python's
+ development libraries installed.
+
+ In Debian or Ubuntu::
+
+ sudo apt-get install python3-dev python3-setuptools
+
+ In Fedora, the command is::
+
+ sudo dnf install python3-devel redhat-rpm-config
+
+ In Alpine, the command is::
+
+ sudo apk add python3-dev py3-setuptools
+
+ .. Note:: ``redhat-rpm-config`` is required on Fedora 23, but not earlier versions.
+
+ Prerequisites for **Ubuntu 16.04 LTS - 22.04 LTS** are installed with::
+
+ sudo apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
+ libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \
+ libharfbuzz-dev libfribidi-dev libxcb1-dev
+
+ To install libraqm, ``sudo apt-get install meson`` and then see
+ ``depends/install_raqm.sh``.
+
+ Prerequisites are installed on recent **Red Hat**, **CentOS** or **Fedora** with::
+
+ sudo dnf install libtiff-devel libjpeg-devel openjpeg2-devel zlib-devel \
+ freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel \
+ harfbuzz-devel fribidi-devel libraqm-devel libimagequant-devel libxcb-devel
+
+ Note that the package manager may be yum or DNF, depending on the
+ exact distribution.
+
+ Prerequisites are installed for **Alpine** with::
+
+ sudo apk add tiff-dev jpeg-dev openjpeg-dev zlib-dev freetype-dev lcms2-dev \
+ libwebp-dev tcl-dev tk-dev harfbuzz-dev fribidi-dev libimagequant-dev \
+ libxcb-dev libpng-dev
+
+ See also the ``Dockerfile``\s in the Test Infrastructure repo
+ (https://github.com/python-pillow/docker-images) for a known working
+ install process for other tested distros.
+
+.. tab:: macOS
+
+ The Xcode command line tools are required to compile portions of
+ Pillow. The tools are installed by running ``xcode-select --install``
+ from the command line. The command line tools are required even if you
+ have the full Xcode package installed. It may be necessary to run
+ ``sudo xcodebuild -license`` to accept the license prior to using the
+ tools.
+
+ The easiest way to install external libraries is via `Homebrew
+ `_. After you install Homebrew, run::
+
+ brew install libjpeg libtiff little-cms2 openjpeg webp
+
+ To install libraqm on macOS use Homebrew to install its dependencies::
+
+ brew install freetype harfbuzz fribidi
+
+ Then see ``depends/install_raqm_cmake.sh`` to install libraqm.
+
+.. tab:: Windows
+
+ We recommend you use prebuilt wheels from PyPI.
+ If you wish to compile Pillow manually, you can use the build scripts
+ in the ``winbuild`` directory used for CI testing and development.
+ These scripts require Visual Studio 2017 or newer and NASM.
+
+ The scripts also install Pillow from the local copy of the source code, so the
+ `Installing`_ instructions will not be necessary afterwards.
+
+.. tab:: Windows using MSYS2/MinGW
+
+ To build Pillow using MSYS2, make sure you run the **MSYS2 MinGW 32-bit** or
+ **MSYS2 MinGW 64-bit** console, *not* **MSYS2** directly.
+
+ The following instructions target the 64-bit build, for 32-bit
+ replace all occurrences of ``mingw-w64-x86_64-`` with ``mingw-w64-i686-``.
+
+ Make sure you have Python and GCC installed::
+
+ pacman -S \
+ mingw-w64-x86_64-gcc \
+ mingw-w64-x86_64-python3 \
+ mingw-w64-x86_64-python3-pip \
+ mingw-w64-x86_64-python3-setuptools
+
+ Prerequisites are installed on **MSYS2 MinGW 64-bit** with::
+
+ pacman -S \
+ mingw-w64-x86_64-libjpeg-turbo \
+ mingw-w64-x86_64-zlib \
+ mingw-w64-x86_64-libtiff \
+ mingw-w64-x86_64-freetype \
+ mingw-w64-x86_64-lcms2 \
+ mingw-w64-x86_64-libwebp \
+ mingw-w64-x86_64-openjpeg2 \
+ mingw-w64-x86_64-libimagequant \
+ mingw-w64-x86_64-libraqm
+
+ https://www.msys2.org/docs/python/ states that setuptools >= 60 does not work with
+ MSYS2. To workaround this, before installing Pillow you must run::
+
+ export SETUPTOOLS_USE_DISTUTILS=stdlib
+
+.. tab:: FreeBSD
+
+ .. Note:: Only FreeBSD 10 and 11 tested
+
+ Make sure you have Python's development libraries installed::
+
+ sudo pkg install python3
+
+ Prerequisites are installed on **FreeBSD 10 or 11** with::
+
+ sudo pkg install jpeg-turbo tiff webp lcms2 freetype2 openjpeg harfbuzz fribidi libxcb
+
+ Then see ``depends/install_raqm_cmake.sh`` to install libraqm.
+
+.. tab:: Android
+
+ Basic Android support has been added for compilation within the Termux
+ environment. The dependencies can be installed by::
+
+ pkg install -y python ndk-sysroot clang make \
+ libjpeg-turbo
+
+ This has been tested within the Termux app on ChromeOS, on x86.
+
+Installing
+^^^^^^^^^^
+
+Once you have installed the prerequisites, to install Pillow from the source
+code on PyPI, run::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade Pillow --no-binary :all:
+
+If the prerequisites are installed in the standard library locations
+for your machine (e.g. :file:`/usr` or :file:`/usr/local`), no
+additional configuration should be required. If they are installed in
+a non-standard location, you may need to configure setuptools to use
+those locations by editing :file:`setup.py` or
+:file:`pyproject.toml`, or by adding environment variables on the command
+line::
+
+ CFLAGS="-I/usr/pkg/include" python3 -m pip install --upgrade Pillow --no-binary :all:
+
+If Pillow has been previously built without the required
+prerequisites, it may be necessary to manually clear the pip cache or
+build without cache using the ``--no-cache-dir`` option to force a
+build with newly installed external libraries.
+
+If you would like to install from a local copy of the source code instead, you
+can clone from GitHub with ``git clone https://github.com/python-pillow/Pillow``
+or download and extract the `compressed archive from PyPI`_.
+
+After navigating to the Pillow directory, run::
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install .
+
+.. _compressed archive from PyPI: https://pypi.org/project/pillow/#files
+
+Build Options
+"""""""""""""
+
+* Environment variable: ``MAX_CONCURRENCY=n``. Pillow can use
+ multiprocessing to build the extension. Setting ``MAX_CONCURRENCY``
+ sets the number of CPUs to use, or can disable parallel building by
+ using a setting of 1. By default, it uses 4 CPUs, or if 4 are not
+ available, as many as are present.
+
+* Config settings: ``-C zlib=disable``, ``-C jpeg=disable``,
+ ``-C tiff=disable``, ``-C freetype=disable``, ``-C raqm=disable``,
+ ``-C lcms=disable``, ``-C webp=disable``, ``-C webpmux=disable``,
+ ``-C jpeg2000=disable``, ``-C imagequant=disable``, ``-C xcb=disable``.
+ Disable building the corresponding feature even if the development
+ libraries are present on the building machine.
+
+* Config settings: ``-C zlib=enable``, ``-C jpeg=enable``,
+ ``-C tiff=enable``, ``-C freetype=enable``, ``-C raqm=enable``,
+ ``-C lcms=enable``, ``-C webp=enable``, ``-C webpmux=enable``,
+ ``-C jpeg2000=enable``, ``-C imagequant=enable``, ``-C xcb=enable``.
+ Require that the corresponding feature is built. The build will raise
+ an exception if the libraries are not found. Webpmux (WebP metadata)
+ relies on WebP support. Tcl and Tk also must be used together.
+
+* Config settings: ``-C raqm=vendor``, ``-C fribidi=vendor``.
+ These flags are used to compile a modified version of libraqm and
+ a shim that dynamically loads libfribidi at runtime. These are
+ used to compile the standard Pillow wheels. Compiling libraqm requires
+ a C99-compliant compiler.
+
+* Build flag: ``-C platform-guessing=disable``. Skips all of the
+ platform dependent guessing of include and library directories for
+ automated build systems that configure the proper paths in the
+ environment variables (e.g. Buildroot).
+
+* Build flag: ``-C debug=true``. Adds a debugging flag to the include and
+ library search process to dump all paths searched for and found to
+ stdout.
+
+
+Sample usage::
+
+ python3 -m pip install --upgrade Pillow -C [feature]=enable
diff --git a/docs/installation/index.rst b/docs/installation/index.rst
new file mode 100644
index 000000000..9e6e5eeec
--- /dev/null
+++ b/docs/installation/index.rst
@@ -0,0 +1,11 @@
+Installation
+============
+
+.. toctree::
+ :maxdepth: 2
+
+ basic-installation
+ python-support
+ platform-support
+ building-from-source
+ old-versions
diff --git a/docs/newer-versions.csv b/docs/installation/newer-versions.csv
similarity index 100%
rename from docs/newer-versions.csv
rename to docs/installation/newer-versions.csv
diff --git a/docs/installation/old-versions.rst b/docs/installation/old-versions.rst
new file mode 100644
index 000000000..48f3f727d
--- /dev/null
+++ b/docs/installation/old-versions.rst
@@ -0,0 +1,6 @@
+Old Versions
+------------
+
+You can download old distributions from the `release history at PyPI
+`_ and by direct URL access
+eg. https://pypi.org/project/pillow/1.0/.
diff --git a/docs/older-versions.csv b/docs/installation/older-versions.csv
similarity index 100%
rename from docs/older-versions.csv
rename to docs/installation/older-versions.csv
diff --git a/docs/installation/platform-support.rst b/docs/installation/platform-support.rst
new file mode 100644
index 000000000..da98d4b9e
--- /dev/null
+++ b/docs/installation/platform-support.rst
@@ -0,0 +1,166 @@
+Platform Support
+----------------
+
+Current platform support for Pillow. Binary distributions are
+contributed for each release on a volunteer basis, but the source
+should compile and run everywhere platform support is listed. In
+general, we aim to support all current versions of Linux, macOS, and
+Windows.
+
+Continuous Integration Targets
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+These platforms are built and tested for every change.
+
++----------------------------------+----------------------------+---------------------+
+| Operating system | Tested Python versions | Tested architecture |
++==================================+============================+=====================+
+| Alpine | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Amazon Linux 2 | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Amazon Linux 2023 | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Arch | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| CentOS 7 | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| CentOS Stream 8 | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| CentOS Stream 9 | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Debian 11 Bullseye | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Debian 12 Bookworm | 3.11 | x86, x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Fedora 38 | 3.11 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Fedora 39 | 3.12 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Gentoo | 3.9 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| macOS 12 Monterey | 3.8, 3.9, 3.10, 3.11, | x86-64 |
+| | 3.12, PyPy3 | |
++----------------------------------+----------------------------+---------------------+
+| Ubuntu Linux 20.04 LTS (Focal) | 3.8 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Ubuntu Linux 22.04 LTS (Jammy) | 3.8, 3.9, 3.10, 3.11, | x86-64 |
+| | 3.12, PyPy3 | |
+| +----------------------------+---------------------+
+| | 3.10 | arm64v8, ppc64le, |
+| | | s390x |
++----------------------------------+----------------------------+---------------------+
+| Windows Server 2016 | 3.8 | x86-64 |
++----------------------------------+----------------------------+---------------------+
+| Windows Server 2022 | 3.8, 3.9, 3.10, 3.11, | x86-64 |
+| | 3.12, PyPy3 | |
+| +----------------------------+---------------------+
+| | 3.12 | x86 |
+| +----------------------------+---------------------+
+| | 3.9 (MinGW) | x86-64 |
+| +----------------------------+---------------------+
+| | 3.8, 3.9 (Cygwin) | x86-64 |
++----------------------------------+----------------------------+---------------------+
+
+
+Other Platforms
+^^^^^^^^^^^^^^^
+
+These platforms have been reported to work at the versions mentioned.
+
+.. note::
+
+ Contributors please test Pillow on your platform then update this
+ document and send a pull request.
+
++----------------------------------+----------------------------+------------------+--------------+
+| Operating system | | Tested Python | | Latest tested | | Tested |
+| | | versions | | Pillow version | | processors |
++==================================+============================+==================+==============+
+| macOS 14 Sonoma | 3.8, 3.9, 3.10, 3.11, 3.12 | 10.2.0 |arm |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 13 Ventura | 3.8, 3.9, 3.10, 3.11 | 10.0.1 |arm |
+| +----------------------------+------------------+ |
+| | 3.7 | 9.5.0 | |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 12 Monterey | 3.7, 3.8, 3.9, 3.10, 3.11 | 9.3.0 |arm |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 11 Big Sur | 3.7, 3.8, 3.9, 3.10 | 8.4.0 |arm |
+| +----------------------------+------------------+--------------+
+| | 3.7, 3.8, 3.9, 3.10, 3.11 | 9.4.0 |x86-64 |
+| +----------------------------+------------------+ |
+| | 3.6 | 8.4.0 | |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 10.15 Catalina | 3.6, 3.7, 3.8, 3.9 | 8.3.2 |x86-64 |
+| +----------------------------+------------------+ |
+| | 3.5 | 7.2.0 | |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 10.14 Mojave | 3.5, 3.6, 3.7, 3.8 | 7.2.0 |x86-64 |
+| +----------------------------+------------------+ |
+| | 2.7 | 6.0.0 | |
+| +----------------------------+------------------+ |
+| | 3.4 | 5.4.1 | |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 10.13 High Sierra | 2.7, 3.4, 3.5, 3.6 | 4.2.1 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| macOS 10.12 Sierra | 2.7, 3.4, 3.5, 3.6 | 4.1.1 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Mac OS X 10.11 El Capitan | 2.7, 3.4, 3.5, 3.6, 3.7 | 5.4.1 |x86-64 |
+| +----------------------------+------------------+ |
+| | 3.3 | 4.1.0 | |
++----------------------------------+----------------------------+------------------+--------------+
+| Mac OS X 10.9 Mavericks | 2.7, 3.2, 3.3, 3.4 | 3.0.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Mac OS X 10.8 Mountain Lion | 2.6, 2.7, 3.2, 3.3 | |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Redhat Linux 6 | 2.6 | |x86 |
++----------------------------------+----------------------------+------------------+--------------+
+| CentOS 6.3 | 2.7, 3.3 | |x86 |
++----------------------------------+----------------------------+------------------+--------------+
+| CentOS 8 | 3.9 | 9.0.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Fedora 23 | 2.7, 3.4 | 3.1.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Ubuntu Linux 12.04 LTS (Precise) | | 2.6, 3.2, 3.3, 3.4, 3.5 | 3.4.1 |x86,x86-64 |
+| | | PyPy5.3.1, PyPy3 v2.4.0 | | |
+| +----------------------------+------------------+--------------+
+| | 2.7 | 4.3.0 |x86-64 |
+| +----------------------------+------------------+--------------+
+| | 2.7, 3.2 | 3.4.1 |ppc |
++----------------------------------+----------------------------+------------------+--------------+
+| Ubuntu Linux 10.04 LTS (Lucid) | 2.6 | 2.3.0 |x86,x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Debian 8.2 Jessie | 2.7, 3.4 | 3.1.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Raspbian Jessie | 2.7, 3.4 | 3.1.0 |arm |
++----------------------------------+----------------------------+------------------+--------------+
+| Raspbian Stretch | 2.7, 3.5 | 4.0.0 |arm |
++----------------------------------+----------------------------+------------------+--------------+
+| Raspberry Pi OS | 3.6, 3.7, 3.8, 3.9 | 8.2.0 |arm |
+| +----------------------------+------------------+ |
+| | 2.7 | 6.2.2 | |
++----------------------------------+----------------------------+------------------+--------------+
+| Gentoo Linux | 2.7, 3.2 | 2.1.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| FreeBSD 11.1 | 2.7, 3.4, 3.5, 3.6 | 4.3.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| FreeBSD 10.3 | 2.7, 3.4, 3.5 | 4.2.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| FreeBSD 10.2 | 2.7, 3.4 | 3.1.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 11 | 3.9, 3.10, 3.11, 3.12 | 10.2.0 |arm64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 11 Pro | 3.11, 3.12 | 10.2.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 10 | 3.7 | 7.1.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 10/Cygwin 3.3 | 3.6, 3.7, 3.8, 3.9 | 8.4.0 |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 8.1 Pro | 2.6, 2.7, 3.2, 3.3, 3.4 | 2.4.0 |x86,x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 8 Pro | 2.6, 2.7, 3.2, 3.3, 3.4a3 | 2.2.0 |x86,x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows 7 Professional | 3.7 | 7.0.0 |x86,x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
+| Windows Server 2008 R2 Enterprise| 3.3 | |x86-64 |
++----------------------------------+----------------------------+------------------+--------------+
diff --git a/docs/installation/python-support.rst b/docs/installation/python-support.rst
new file mode 100644
index 000000000..ab075f254
--- /dev/null
+++ b/docs/installation/python-support.rst
@@ -0,0 +1,17 @@
+Python Support
+--------------
+
+Pillow supports these Python versions.
+
+.. csv-table:: Newer versions
+ :file: newer-versions.csv
+ :header-rows: 1
+
+.. csv-table:: Older versions
+ :file: older-versions.csv
+ :header-rows: 1
+
+.. _Linux Installation:
+.. _macOS Installation:
+.. _Windows Installation:
+.. _FreeBSD Installation: