diff --git a/Applications/Utils/FileConverter/TecPlotTools.cpp b/Applications/Utils/FileConverter/TecPlotTools.cpp
index 5d7d104758469201df752aa394d14a1e838e82e5..4565469897a0fd81af629fbb739084597a447aa7 100644
--- a/Applications/Utils/FileConverter/TecPlotTools.cpp
+++ b/Applications/Utils/FileConverter/TecPlotTools.cpp
@@ -197,7 +197,7 @@ void writeTecPlotSection(std::ofstream& out,
 
         val_count = 0;
         val_total = 0;
-        INFO("Writing section #{:i}", write_count);
+        INFO("Writing section #{}", write_count);
         out.close();
         out.open(base_name + std::to_string(write_count++) + extension);
     }
@@ -255,7 +255,7 @@ int writeDataToMesh(std::string const& file_name,
     std::string const base_name(file_name.substr(0, delim_pos + 1));
     std::string const extension(file_name.substr(delim_pos, std::string::npos));
 
-    INFO("Writing section #{:i}", write_count);
+    INFO("Writing section #{}", write_count);
     MeshLib::IO::VtuInterface vtu(mesh.get());
     vtu.writeToFile(base_name + std::to_string(write_count++) + extension);
     return 0;
@@ -331,7 +331,7 @@ int splitFile(std::ifstream& in, std::string const& file_name)
     {
         return -3;
     }
-    INFO("Writing time step #{:i}", write_count);
+    INFO("Writing time step #{}", write_count);
     out.close();
     INFO("Finished split.");
     return 0;
diff --git a/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp b/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp
index 118377c8afa72022d9d6cac8309af17185f4d997..b628eceb948208b963ac90e86dcf2e7a9b14fdd1 100644
--- a/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp
+++ b/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp
@@ -179,8 +179,8 @@ int main(int argc, char* argv[])
         id_and_area_fname += std::to_string(j) + ".txt";
         csv_fname += std::to_string(j) + ".csv";
         INFO(
-            "Polygonal part of surface '{:s}' contains %{ul} nodes. Writing to "
-            "files '{:s}' and '{:s}'.",
+            "Polygonal part of surface '{}' contains {} nodes. Writing to "
+            "files '{}' and '{}'.",
             polygon_name,
             ids_and_areas.size(),
             id_and_area_fname,
diff --git a/BaseLib/Algorithm.h b/BaseLib/Algorithm.h
index 211cb97f96a9bbeced11609dee6ef96327092176..4eabaf0826a7d996e2db0c998111a9a4c0698b8e 100644
--- a/BaseLib/Algorithm.h
+++ b/BaseLib/Algorithm.h
@@ -109,7 +109,7 @@ void insertIfKeyUniqueElseError(Map& map, Key const& key, Value&& value,
     auto const inserted = map.emplace(key, std::forward<Value>(value));
     if (!inserted.second)
     {  // insertion failed, i.e., key already exists
-        OGS_FATAL("{:s} Key `{:s}' already exists.", error_message, key);
+        OGS_FATAL("{} Key `{}' already exists.", error_message, key);
     }
 }
 
diff --git a/BaseLib/PrjProcessing.cpp b/BaseLib/PrjProcessing.cpp
index ae46ae3c60b42858998d9a02b3db6b202ff013b6..3dc7587555b5d99197d295b8b3341e8138bbac23 100644
--- a/BaseLib/PrjProcessing.cpp
+++ b/BaseLib/PrjProcessing.cpp
@@ -69,7 +69,7 @@ void traverseIncludes(xmlDoc* doc, xmlNode* node,
             const std::ifstream input_stream(filename, std::ios_base::binary);
             if (input_stream.fail())
             {
-                OGS_FATAL("Failed to open file {s}!", filename);
+                OGS_FATAL("Failed to open file {}!", filename);
             }
             std::stringstream buffer;
             buffer << input_stream.rdbuf();
diff --git a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CapillaryPressureVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CapillaryPressureVanGenuchten.cpp
index 1ef5b650f9b7f6a1a1a43a4990d23e7795a37118..63b72accde65837285113c79971f2a2053231b44 100644
--- a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CapillaryPressureVanGenuchten.cpp
+++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CapillaryPressureVanGenuchten.cpp
@@ -54,7 +54,7 @@ CapillaryPressureVanGenuchten::CapillaryPressureVanGenuchten(
         OGS_FATAL(
             "Van Genuchten capillary pressure model: The maximum liquid "
             "saturation S_L_max = {:g} must not be less or equal to the "
-            "residual liquid saturion S_L_res = { : g}.",
+            "residual liquid saturion S_L_res = {:g}.",
             S_L_max_, S_L_res_);
     }
     if (!(m_ > 0 && m_ < 1))
diff --git a/MaterialLib/MPL/Utils/FormEigenTensor.cpp b/MaterialLib/MPL/Utils/FormEigenTensor.cpp
index 248ccd8a28b1a05ff9b3cb75856d50bea8a3dea9..97745950d8f5ab31f5864cd632717c1a9508e3f2 100644
--- a/MaterialLib/MPL/Utils/FormEigenTensor.cpp
+++ b/MaterialLib/MPL/Utils/FormEigenTensor.cpp
@@ -94,8 +94,8 @@ struct FormEigenTensor
             return result;
         }
 
-        OGS_FATAL("Cannot convert a symmetric 3d tensor to {:d}x{:d} matrix",
-                  GlobalDim);
+        OGS_FATAL("Cannot convert a symmetric 3d tensor to a {}x{} matrix",
+                  GlobalDim, GlobalDim);
     }
 
     Eigen::Matrix<double, GlobalDim, GlobalDim> operator()(
@@ -106,9 +106,8 @@ struct FormEigenTensor
             return values;
         }
 
-        OGS_FATAL(
-            "Cannot convert a dynamic {:d}x{:d} matrix to a {:d}x{:d} matrix",
-            values.rows(), values.cols(), GlobalDim, GlobalDim);
+        OGS_FATAL("Cannot convert a dynamic {}x{} matrix to a {}x{} matrix",
+                  values.rows(), values.cols(), GlobalDim, GlobalDim);
     }
 };
 
diff --git a/MeshLib/MeshEditing/AddLayerToMesh.cpp b/MeshLib/MeshEditing/AddLayerToMesh.cpp
index a16f4bcfbf8758ee8905333933e861414a64b659..207b9e05d489d4947f28a21177dcd7828e5e2eec 100644
--- a/MeshLib/MeshEditing/AddLayerToMesh.cpp
+++ b/MeshLib/MeshEditing/AddLayerToMesh.cpp
@@ -114,7 +114,7 @@ MeshLib::Mesh* addLayerToMesh(MeshLib::Mesh const& mesh, double thickness,
         }
         else
         {
-            ERR("Could not create and initialize property '{%s}'.", prop_name);
+            ERR("Could not create and initialize property '{}'.", prop_name);
             return nullptr;
         }
     }
diff --git a/MeshLib/MeshSurfaceExtraction.cpp b/MeshLib/MeshSurfaceExtraction.cpp
index cdd2a2bdc26559d22d64dbc10e3464ddd177b7a3..ffd3a8905beeaf43f9e0fde27e602b2ba971c107 100644
--- a/MeshLib/MeshSurfaceExtraction.cpp
+++ b/MeshLib/MeshSurfaceExtraction.cpp
@@ -291,7 +291,7 @@ void MeshSurfaceExtraction::get2DSurfaceElements(
 {
     if (mesh_dimension < 2 || mesh_dimension > 3)
     {
-        ERR("Cannot handle meshes of dimension {:i}", mesh_dimension);
+        ERR("Cannot handle meshes of dimension {}", mesh_dimension);
     }
 
     bool const complete_surface = (dir.dot(dir) == 0);
@@ -465,7 +465,7 @@ std::unique_ptr<MeshLib::Mesh> getBoundaryElementsAsMesh(
     auto const mesh_dimension = bulk_mesh.getDimension();
     if (mesh_dimension < 2 || mesh_dimension > 3)
     {
-        ERR("Cannot handle meshes of dimension {:i}", mesh_dimension);
+        ERR("Cannot handle meshes of dimension {}", mesh_dimension);
     }
 
     // create boundary elements based on the subsurface nodes
diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
index 0683aa70d35b02f5ad391c84f1d4d49ce045ca56..0a8813daf1d8e29e41ccffed3a56c3e478d5490b 100644
--- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
+++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp
@@ -50,9 +50,9 @@ FixedTimeStepping::FixedTimeStepping(double t0, double t_end, double dt)
     {
         OGS_FATAL(
             "Resize of the time steps vector failed for the requested new "
-            "size {:d}. Probably there is not enough memory ({:g} GiB "
+            "size {}. Probably there is not enough memory ({:g} GiB "
             "requested).\n"
-            "Thrown exception: {:s}",
+            "Thrown exception: {}",
             new_size, new_size * sizeof(double) / 1024. / 1024. / 1024.,
             e.what());
     }
@@ -60,9 +60,9 @@ FixedTimeStepping::FixedTimeStepping(double t0, double t_end, double dt)
     {
         OGS_FATAL(
             "Allocation of the time steps vector failed for the requested "
-            "size {:d}. Probably there is not enough memory ({:d} GiB "
+            "size {}. Probably there is not enough memory ({:g} GiB "
             "requested).\n"
-            "Thrown exception: {:s}",
+            "Thrown exception: {}",
             new_size,
             new_size * sizeof(double) / 1024. / 1024. / 1024.,
             e.what());