diff --git a/dune-project b/dune-project
index f854518419..6ea0734887 100644
--- a/dune-project
+++ b/dune-project
@@ -45,6 +45,7 @@ Goblint includes analyses for assertions, overflows, deadlocks, etc and can be e
(ppx_deriving (>= 6.0.2))
(ppx_deriving_hash (>= 0.1.2))
(ppx_deriving_yojson (>= 3.7.0))
+ (ppx_blob (>= 0.8.0))
(ounit2 :with-test)
(qcheck-ounit :with-test)
(odoc :with-doc)
diff --git a/goblint.opam b/goblint.opam
index 37cd36bf6e..6ea4183992 100644
--- a/goblint.opam
+++ b/goblint.opam
@@ -45,6 +45,7 @@ depends: [
"ppx_deriving" {>= "6.0.2"}
"ppx_deriving_hash" {>= "0.1.2"}
"ppx_deriving_yojson" {>= "3.7.0"}
+ "ppx_blob" {>= "0.8.0"}
"ounit2" {with-test}
"qcheck-ounit" {with-test}
"odoc" {with-doc}
diff --git a/goblint.opam.locked b/goblint.opam.locked
index 7b23cc8a18..ed6424dbd3 100644
--- a/goblint.opam.locked
+++ b/goblint.opam.locked
@@ -85,6 +85,7 @@ depends: [
"ordering" {= "3.16.0"}
"ounit2" {= "2.2.7" & with-test}
"pp" {= "1.2.0"}
+ "ppx_blob" {= "0.9.0"}
"ppx_derivers" {= "1.2.1"}
"ppx_deriving" {= "6.0.2"}
"ppx_deriving_hash" {= "0.1.2"}
diff --git a/src/vendor/ppx_blob/LICENSE.txt b/src/vendor/ppx_blob/LICENSE.txt
deleted file mode 100644
index 00d2e135a7..0000000000
--- a/src/vendor/ppx_blob/LICENSE.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-For more information, please refer to
\ No newline at end of file
diff --git a/src/vendor/ppx_blob/README.md b/src/vendor/ppx_blob/README.md
deleted file mode 100644
index fdd7448a32..0000000000
--- a/src/vendor/ppx_blob/README.md
+++ /dev/null
@@ -1 +0,0 @@
-ppx_blob fix for `(lang dune 3.0)` vendored from .
diff --git a/src/vendor/ppx_blob/src/dune b/src/vendor/ppx_blob/src/dune
deleted file mode 100644
index 112b1d07c0..0000000000
--- a/src/vendor/ppx_blob/src/dune
+++ /dev/null
@@ -1,5 +0,0 @@
-(library
- (name ppx_blob)
- ; (public_name ppx_blob)
- (kind ppx_rewriter)
- (libraries ppxlib))
\ No newline at end of file
diff --git a/src/vendor/ppx_blob/src/ppx_blob.ml b/src/vendor/ppx_blob/src/ppx_blob.ml
deleted file mode 100644
index 622a99f8f6..0000000000
--- a/src/vendor/ppx_blob/src/ppx_blob.ml
+++ /dev/null
@@ -1,35 +0,0 @@
-open Ppxlib
-
-let location_errorf ~loc =
- Format.ksprintf (fun err ->
- raise (Ocaml_common.Location.Error (Ocaml_common.Location.error ~loc err))
- )
-
-let find_file_path ~loc file_name =
- let dirname = loc.Ocaml_common.Location.loc_start.pos_fname |> Filename.dirname in
- let relative_path = Filename.concat dirname file_name in
- List.find Sys.file_exists [relative_path; file_name]
-
-let get_blob ~loc file_name =
- try
- let file_path = find_file_path ~loc file_name in
- let c = open_in_bin file_path in
- let s = String.init (in_channel_length c) (fun _ -> input_char c) in
- close_in c;
- s
- with _ ->
- location_errorf ~loc "[%%blob] could not find or load file %s" file_name
-
-let expand ~ctxt file_name =
- let loc = Expansion_context.Extension.extension_point_loc ctxt in
- Ast_builder.Default.estring ~loc (get_blob ~loc file_name)
-
-let extension =
- Extension.V3.declare "blob" Extension.Context.expression
- Ast_pattern.(single_expr_payload (estring __))
- expand
-
-let rule = Ppxlib.Context_free.Rule.extension extension
-
-;;
-Driver.register_transformation ~rules:[rule] "ppx_blob"
\ No newline at end of file