diff --git a/fuzzers/README.md b/fuzzers/README.md
new file mode 100644
index 0000000000..4c7ca5ecbf
--- /dev/null
+++ b/fuzzers/README.md
@@ -0,0 +1,18 @@
+# OSS-Fuzz integration
+
+The fuzzers in this folder are used for our [OSS-Fuzz](https://github.com/google/oss-fuzz)
+integration.
+
+To run this, you can follow the steps:
+
+```sh
+git clone https://github.com/google/oss-fuzz
+cd oss-fuzz
+python3 infra/helper.py build_fuzzers pacemaker
+python3 infra/helper.py run_fuzzer pacemaker utils_fuzzer
+```
+
+
+## OSS-Fuzz logic
+
+The corresponding logic for Pacemaker on OSS-Fuzz can be found [here](https://github.com/google/oss-fuzz/tree/master/projects/pacemaker)
diff --git a/fuzzers/cib_file_fuzzer.c b/fuzzers/cib_file_fuzzer.c
new file mode 100644
index 0000000000..579f34c8c7
--- /dev/null
+++ b/fuzzers/cib_file_fuzzer.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2024 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <crm_internal.h>
+#include <crm/cib/internal.h>
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+  char *filename;
+  int fd;
+
+  // Have at least some data
+  if (size < 5) {
+    return 0;
+  }
+
+  filename = crm_strdup_printf("%s/libfuzzer.XXXXXX", pcmk__get_tmpdir());
+  fd = mkstemp(filename);
+  if (fd == -1) {
+    return 0;
+  }
+  write(fd, data, size);
+  close(fd);
+
+  cib_file_read_and_verify(filename, NULL, NULL);
+
+  unlink(filename);
+  free(filename);
+
+  return 0;
+}
diff --git a/fuzzers/iso8601_fuzzer.c b/fuzzers/iso8601_fuzzer.c
new file mode 100644
index 0000000000..cb83cb8f2a
--- /dev/null
+++ b/fuzzers/iso8601_fuzzer.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2024 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <crm/common/util.h>
+#include <crm/common/iso8601.h>
+#include <crm/common/iso8601_internal.h>
+
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+  char *ns;
+  char *result;
+  time_t epoch;
+  pcmk__time_hr_t *now;
+
+  // Ensure we have enough data.
+  if (size < 10) {
+    return 0;
+  }
+  ns = malloc(size+1);
+  memcpy(ns, data, size);
+  ns[size] = '\0';
+
+  crm_time_parse_period(ns);
+  pcmk__time_hr_new(ns);
+
+  epoch = 0;
+  now = NULL;
+  now = pcmk__time_hr_now(&epoch);
+  result = pcmk__time_format_hr(ns, now);
+  free(result);
+
+  free(ns);  
+  return 0;
+}
diff --git a/fuzzers/strings_fuzzer.c b/fuzzers/strings_fuzzer.c
new file mode 100644
index 0000000000..91b09cbaf0
--- /dev/null
+++ b/fuzzers/strings_fuzzer.c
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2024 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <strings.h>
+#include <glib.h>
+
+#include <crm/common/util_compat.h>
+#include <crm/common/strings_internal.h>
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+  char *ns;
+  guint res;
+
+  if (size < 10) {
+    return 0;
+  }
+  ns = malloc(size+1);
+  memcpy(ns, data, size);
+  ns[size] = '\0';
+
+  pcmk_numeric_strcasecmp(ns, ns);
+  pcmk__trim(ns);
+  pcmk_parse_interval_spec(ns, &res);
+  crm_get_msec(ns);
+
+  free(ns);  
+  return 0;
+}
diff --git a/fuzzers/utils_fuzzer.c b/fuzzers/utils_fuzzer.c
new file mode 100644
index 0000000000..2bf79801c2
--- /dev/null
+++ b/fuzzers/utils_fuzzer.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2024 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <crm/common/util.h>
+#include <crm/common/util_compat.h>
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+  char *ns;
+  if (size < 10) {
+    return 0;
+  }
+  ns = malloc(size+1);
+  memcpy(ns, data, size);
+  ns[size] = '\0';
+   
+  crm_parse_interval_spec(ns);
+
+  free(ns);  
+  return 0;
+}