diff --git a/.gitmodules b/.gitmodules
index a21dc049a14f22cdefc6a9cd09fc38c3a542404c..94ecfc21545420f03dd994fcaac512cbe85bac7a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,3 +10,6 @@
 [submodule "lib/crypto/SHA256"]
 	path = lib/crypto/SHA256
 	url = https://github.com/ilvn/SHA256
+[submodule "lib/lodepng/lodepng"]
+	path = lib/lodepng/lodepng
+	url = https://github.com/lvandeve/lodepng
diff --git a/lib/lodepng/lodepng b/lib/lodepng/lodepng
new file mode 160000
index 0000000000000000000000000000000000000000..7fdcc96a5e5864eee72911c3ca79b1d9f0d12292
--- /dev/null
+++ b/lib/lodepng/lodepng
@@ -0,0 +1 @@
+Subproject commit 7fdcc96a5e5864eee72911c3ca79b1d9f0d12292
diff --git a/lib/lodepng/lodepng.c b/lib/lodepng/lodepng.c
new file mode 120000
index 0000000000000000000000000000000000000000..c5f0d591106af0a8f58d21b0c5194e8759ae05ed
--- /dev/null
+++ b/lib/lodepng/lodepng.c
@@ -0,0 +1 @@
+lodepng/lodepng.cpp
\ No newline at end of file
diff --git a/lib/lodepng/meson.build b/lib/lodepng/meson.build
new file mode 100644
index 0000000000000000000000000000000000000000..5d50b024b932005afaecaa7eab4994700cfd481f
--- /dev/null
+++ b/lib/lodepng/meson.build
@@ -0,0 +1,19 @@
+includes = include_directories(
+  './lodepng',
+)
+
+sources = files(
+  './lodepng.c',
+)
+
+lib = static_library(
+  'lodepng',
+  sources,
+  include_directories: includes,
+  c_args: ['-O3', '-w', '-DLODEPNG_NO_COMPILE_ENCODER', '-DLODEPNG_NO_COMPILE_DISK', '-DLODEPNG_NO_COMPILE_ALLOCATORS'],
+)
+
+lodepng = declare_dependency(
+  include_directories: includes,
+  link_with: lib,
+)
diff --git a/lib/meson.build b/lib/meson.build
index 86d05cc0678947c81845e658b983d7a8c023d4d5..7f094776ff8feb56a9faa009ac06cf64df2b6804 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -17,3 +17,4 @@ subdir('./crypto/')
 subdir('./card10/')
 subdir('./mx25lba/')
 subdir('./ff13/')
+subdir('./lodepng/')
diff --git a/tools/code-style.sh b/tools/code-style.sh
index 3256654a089239c56da6c24bf427ad8ab2140943..311df9bea8f01ccab1497ccd3fdace27a54a89a7 100755
--- a/tools/code-style.sh
+++ b/tools/code-style.sh
@@ -41,6 +41,7 @@ formatter_blacklist=(
     lib/ff13/
     lib/FreeRTOS/
     lib/FreeRTOS-Plus/
+    lib/lodepng/
     lib/micropython/
     lib/mx25lba/
     lib/sdk/