diff --git a/README.md b/README.md
index aee45fdda..6276720d1 100644
--- a/README.md
+++ b/README.md
@@ -307,7 +307,7 @@ To learn more about the docker pull rate limits and the open source software pro
| [snp-dists](https://hub.docker.com/r/staphb/snp-dists)
[](https://hub.docker.com/r/staphb/snp-dists) |
| https://github.com/tseemann/snp-dists |
| [SNP-sites](https://hub.docker.com/r/staphb/snp-sites)
[](https://hub.docker.com/r/staphb/snp-sites) | | https://github.com/sanger-pathogens/snp-sites |
| [SNVPhyl-tools](https://hub.docker.com/r/staphb/snvphyl-tools)
[](https://hub.docker.com/r/staphb/snvphyl-tools) | | https://github.com/phac-nml/snvphyl-tools |
-| [SPAdes](https://hub.docker.com/r/staphb/spades/)
[](https://hub.docker.com/r/staphb/spades) | - [3.8.2](./spades/3.8.2/)
- [3.12.0](./spades/3.12.0/)
- [3.13.0](./spades/3.13.0/)
- [3.14.0](./spades/3.14.0/)
- [3.14.1](./spades/3.14.1/)
- [3.15.0](./spades/3.15.0/)
- [3.15.1](./spades/3.15.1/)
- [3.15.2](./spades/3.15.2/)
- [3.15.3](./spades/3.15.3/)
- [3.15.4](./spades/3.15.4/)
- [3.15.5](./spades/3.15.5/)
- [4.0.0](./spades/4.0.0/)
| https://github.com/ablab/spades http://cab.spbu.ru/software/spades/ |
+| [SPAdes](https://hub.docker.com/r/staphb/spades/)
[](https://hub.docker.com/r/staphb/spades) | - [3.8.2](./build-files/spades/3.8.2/)
- [3.12.0](./build-files/spades/3.12.0/)
- [3.13.0](./build-files/spades/3.13.0/)
- [3.14.0](./build-files/spades/3.14.0/)
- [3.14.1](./build-files/spades/3.14.1/)
- [3.15.0](./build-files/spades/3.15.0/)
- [3.15.1](./build-files/spades/3.15.1/)
- [3.15.2](./build-files/spades/3.15.2/)
- [3.15.3](./build-files/spades/3.15.3/)
- [3.15.4](./build-files/spades/3.15.4/)
- [3.15.5](./build-files/spades/3.15.5/)
- [4.0.0](./build-files/spades/4.0.0/)
- [4.1.0](./build-files/spades/4.1.0/)
| https://github.com/ablab/spades http://cab.spbu.ru/software/spades/ |
| [SRA-toolkit](https://hub.docker.com/r/staphb/sratoolkit/)
[](https://hub.docker.com/r/staphb/sratoolkit) | - 2.9.2
- [3.0.7](./sratoolkit/3.0.7/)
| https://github.com/ncbi/sra-tools |
| [SRST2](https://hub.docker.com/r/staphb/srst2/)
[](https://hub.docker.com/r/staphb/srst2) | - 0.2.0
- [0.2.0 + custom Vibrio cholerae database](srst2/0.2.0-vibrio-230224/README.md)
| https://github.com/katholt/srst2 |
| [Staramr](https://hub.docker.com/r/staphb/staramr/)
[](https://hub.docker.com/r/staphb/staramr) | - [0.5.1](./staramr/0.5.1/)
- [0.7.1](./staramr/0.7.1/)
- [0.8.0](./staramr/0.8.0/)
- [0.10.0](./staramr/0.10.0/)
| https://github.com/phac-nml/staramr |
diff --git a/build-files/spades/4.1.0/Dockerfile b/build-files/spades/4.1.0/Dockerfile
new file mode 100644
index 000000000..f40842b04
--- /dev/null
+++ b/build-files/spades/4.1.0/Dockerfile
@@ -0,0 +1,57 @@
+FROM ubuntu:jammy AS app
+
+# to make it easier to upgrade for new versions; ARG variables only persist during docker image build time
+ARG SPADES_VER="4.1.0"
+
+LABEL base.image="ubuntu:jammy"
+LABEL dockerfile.version="1"
+LABEL software="SPAdes"
+LABEL software.version="${SPADES_VER}"
+LABEL description="de novo DBG genome assembler"
+LABEL website="https://github.com/ablab/spades"
+LABEL license="https://github.com/ablab/spades/blob/main/LICENSE"
+LABEL maintainer="Curtis Kapsak"
+LABEL maintainer.email="kapsakcj@gmail.com"
+
+# install dependencies; cleanup apt garbage
+# python v3.8.10 is installed here; point 'python' to python3
+RUN apt-get update && apt-get install --no-install-recommends -y \
+ python3 \
+ python3-distutils \
+ wget \
+ pigz \
+ ca-certificates \
+ libgomp1 && \
+ apt-get autoclean && rm -rf /var/lib/apt/lists/* && \
+ update-alternatives --install /usr/bin/python python /usr/bin/python3 10
+
+# install SPAdes binary; make /data
+RUN wget -q https://github.com/ablab/spades/releases/download/v${SPADES_VER}/SPAdes-${SPADES_VER}-Linux.tar.gz && \
+ tar -xzf SPAdes-${SPADES_VER}-Linux.tar.gz && \
+ rm -r SPAdes-${SPADES_VER}-Linux.tar.gz && \
+ mkdir /data
+
+# set PATH and locale settings for singularity
+ENV LC_ALL=C.UTF-8 \
+ PATH="${PATH}:/SPAdes-${SPADES_VER}-Linux/bin"
+
+CMD ["spades.py", "--help"]
+
+WORKDIR /data
+
+# test layer
+FROM app AS test
+
+# print version and run the supplied test flag
+RUN spades.py --version && spades.py --help
+
+# run the supplied test
+RUN spades.py --test
+
+WORKDIR /test
+
+# run on some test files
+RUN wget -q ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR323/020/SRR32343420/SRR32343420_1.fastq.gz && \
+ wget -q ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR323/020/SRR32343420/SRR32343420_2.fastq.gz && \
+ spades.py --isolate -1 SRR32343420_1.fastq.gz -2 SRR32343420_2.fastq.gz --threads 4 -o test && \
+ head /test/test/contigs.fasta
diff --git a/build-files/spades/4.1.0/README.md b/build-files/spades/4.1.0/README.md
new file mode 100644
index 000000000..cacd13cc8
--- /dev/null
+++ b/build-files/spades/4.1.0/README.md
@@ -0,0 +1,22 @@
+# SPAdes
+
+Main tool: [SPAdes](https://github.com/ablab/spades)
+
+SPAdes genome assembler
+
+## Example commands
+
+```bash
+# Test with supplied E. coli data
+docker run --rm -u $(id -u):$(id -g) -v ${PWD}:/data staphb/spades:latest spades.py --test
+
+# paired-end Illumina reads are in the $PWD
+$ ls
+SRR7062227_1.fastq.gz SRR7062227_2.fastq.gz
+
+# assemble with your own data (broken into two lines for readability)
+docker run --rm -u $(id -u):$(id -g) -v ${PWD}:/data staphb/spades:latest \
+ spades.py -1 /data/SRR7062227_1.fastq.gz -2 /data/SRR7062227_2.fastq.gz -t 8 --isolate -o /data/SRR7062227-spades-output/
+```
+
+View full `spades` help options: `docker run --rm -u $(id -u):$(id -g) -v ${PWD}:/data staphb/spades:latest spades.py --help`