diff --git a/src/io/bam_io.cpp b/src/io/bam_io.cpp
index 3e6aba4..2d1f19c 100644
--- a/src/io/bam_io.cpp
+++ b/src/io/bam_io.cpp
@@ -5,6 +5,7 @@
 #include "bam_io.h"
 #include <cstring>
 #include <cassert>
+#include <stdexcept>
 
 using namespace moss;
 
diff --git a/src/io/vcf_io.cpp b/src/io/vcf_io.cpp
index bb81c60..c70fdc2 100644
--- a/src/io/vcf_io.cpp
+++ b/src/io/vcf_io.cpp
@@ -11,6 +11,7 @@
 #include <ctime>
 #include <cmath>
 #include <algorithm>
+#include <stdexcept>
 #include "vcf_io.h"
 
 using namespace moss;
diff --git a/src/io/vcf_io.h b/src/io/vcf_io.h
index 968e558..c636622 100644
--- a/src/io/vcf_io.h
+++ b/src/io/vcf_io.h
@@ -10,6 +10,7 @@
 #include <vector>
 #include <map>
 #include <functional>
+#include <stdexcept>
 #include <htslib/hfile.h>
 #include <htslib/vcf.h>
 #include <htslib/faidx.h>
diff --git a/src/moss.cpp b/src/moss.cpp
index 9e048d2..8db286a 100644
--- a/src/moss.cpp
+++ b/src/moss.cpp
@@ -11,6 +11,7 @@
 #include <cmath>
 #include <chrono>
 #include <iomanip>
+#include <stdexcept>
 
 struct Flags {
     int dry = 0;
diff --git a/test/catch.hpp b/test/catch.hpp
index 02302b8..a8ec2b3 100644
--- a/test/catch.hpp
+++ b/test/catch.hpp
@@ -22,6 +22,7 @@
 #elif defined __GNUC__
 #    pragma GCC system_header
 #endif
+#include <stdexcept>
 
 // start catch_suppress_warnings.h
 
