diff --git a/android/build.py b/android/build.py
index dd5bb2f5b..9d90512ca 100755
--- a/android/build.py
+++ b/android/build.py
@@ -151,7 +151,6 @@ thirdparty_libs = [
     libmpdclient,
     libogg,
     opus,
-    flac,
     libid3tag,
     libmodplug,
     wildmidi,
diff --git a/meson.build b/meson.build
index b8f81ef28..79fd3beba 100644
--- a/meson.build
+++ b/meson.build
@@ -13,6 +13,7 @@ project(
     # If we build those libraries as Meson subproject, they shall be
     # linked statically into the MPD executable.
     'expat:default_library=static',
+    'flac:default_library=static',
     'fmt:default_library=static',
     'gtest:default_library=static',
     'sqlite3:default_library=static',
@@ -21,6 +22,8 @@ project(
     # Not interested in compiler warnings from subprojects.
     'expat:werror=false',
     'expat:warning_level=0',
+    'flac:werror=false',
+    'flac:warning_level=0',
     'fmt:warning_level=0',
     'gtest:warning_level=0',
     'sqlite3:warning_level=0',
diff --git a/python/build/libs.py b/python/build/libs.py
index fa419b11d..1c7d80919 100644
--- a/python/build/libs.py
+++ b/python/build/libs.py
@@ -42,18 +42,6 @@ opus = AutotoolsProject(
     cppflags='-DOPUS_EXPORT=',
 )
 
-flac = AutotoolsProject(
-    'http://downloads.xiph.org/releases/flac/flac-1.3.3.tar.xz',
-    '213e82bd716c9de6db2f98bcadbc4c24c7e2efe8c75939a1a84e28539c4e1748',
-    'lib/libFLAC.a',
-    [
-        '--disable-shared', '--enable-static',
-        '--disable-xmms-plugin', '--disable-cpplibs',
-        '--disable-doxygen-docs',
-    ],
-    subdirs=['include', 'src/libFLAC'],
-)
-
 zlib = ZlibProject(
     'http://zlib.net/zlib-1.2.11.tar.xz',
     '4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066',
diff --git a/src/lib/xiph/meson.build b/src/lib/xiph/meson.build
index 8786ac7e6..729b75fcc 100644
--- a/src/lib/xiph/meson.build
+++ b/src/lib/xiph/meson.build
@@ -1,4 +1,6 @@
-libflac_dep = dependency('flac', version: '>= 1.2', required: get_option('flac'))
+libflac_dep = dependency('flac', version: '>= 1.2',
+                         fallback: ['flac', 'flac_dep'],
+                         required: get_option('flac'))
 libopus_dep = dependency('opus', required: get_option('opus'))
 
 if get_option('tremor').enabled()
diff --git a/subprojects/.gitignore b/subprojects/.gitignore
index 4eb01d547..5534fb826 100644
--- a/subprojects/.gitignore
+++ b/subprojects/.gitignore
@@ -1,6 +1,7 @@
 /packagecache/
 
 /expat-*/
+/flac-*/
 /fmt-*/
 /googletest-*/
 /sqlite-*/
diff --git a/subprojects/flac.wrap b/subprojects/flac.wrap
new file mode 100644
index 000000000..d99ffa31a
--- /dev/null
+++ b/subprojects/flac.wrap
@@ -0,0 +1,12 @@
+[wrap-file]
+directory = flac-1.3.3
+source_url = https://github.com/xiph/flac/archive/refs/tags/1.3.3.tar.gz
+source_filename = 1.3.3.tar.gz
+source_hash = 668cdeab898a7dd43cf84739f7e1f3ed6b35ece2ef9968a5c7079fe9adfe1689
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/flac/1.3.3/1/get_zip
+patch_filename = flac-1.3.3-1-wrap.zip
+patch_hash = bcd79061d1d29f8871646a356eb15ee2b6bacdc960594f584dcd4f90d7e0d4dd
+
+[provide]
+flac = flac_dep
+
diff --git a/win32/build.py b/win32/build.py
index 86969d206..3301b1bd9 100755
--- a/win32/build.py
+++ b/win32/build.py
@@ -94,7 +94,6 @@ thirdparty_libs = [
     libmpdclient,
     libogg,
     opus,
-    flac,
     zlib,
     libid3tag,
     liblame,