diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake
index 9275f36aaf1..dba8c9fd0e9 100644
--- a/CMakeLists_files.cmake
+++ b/CMakeLists_files.cmake
@@ -573,6 +573,7 @@ list(APPEND TEST_SOURCE_FILES
tests/test_Wells.cpp
tests/test_WindowedArray.cpp
tests/material/test_2dtables.cpp
+ tests/material/test_bakedsatfunctables.cpp
tests/material/test_eclmateriallawmanager.cpp
tests/material/test_hysteresis.cpp
tests/material/test_spline.cpp
@@ -1361,6 +1362,7 @@ list(APPEND PUBLIC_HEADER_FILES
opm/material/fluidmatrixinteractions/EclHysteresisTwoPhaseLawParams.hpp
opm/material/fluidmatrixinteractions/EclMaterialLawHystParams.hpp
opm/material/fluidmatrixinteractions/EclMaterialLawInitParams.hpp
+ opm/material/fluidmatrixinteractions/BakedSatfuncTables.hpp
opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp
opm/material/fluidmatrixinteractions/EclMaterialLawReadEffectiveParams.hpp
opm/material/fluidmatrixinteractions/EclMaterialLawTwoPhaseTypes.hpp
diff --git a/opm/material/fluidmatrixinteractions/BakedSatfuncTables.hpp b/opm/material/fluidmatrixinteractions/BakedSatfuncTables.hpp
new file mode 100644
index 00000000000..2940f253a25
--- /dev/null
+++ b/opm/material/fluidmatrixinteractions/BakedSatfuncTables.hpp
@@ -0,0 +1,528 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*
+ Copyright 2026 Equinor ASA.
+
+ This file is part of the Open Porous Media project (OPM).
+
+ OPM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OPM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OPM. If not, see .
+*/
+/*!
+ * \file
+ * \brief Baked-table evaluation of relative permeability and capillary
+ * pressure for the ECL-default three-phase material law.
+ *
+ * For each cell the installed material law (multiplexer params from the
+ * EclMaterialLawManager, endpoint scaling included) is sampled onto minimal
+ * exact piecewise-linear tables on three axes:
+ * Sw axis: [krw, pcow-diff] (pcow-diff = pC[w]-pC[o])
+ * Sg axis: [krg, pcgo-diff]
+ * S axis: [kro_ow, kro_go] (S = max(Sw,Swco)+Sg; ECL default 3ph oil)
+ * Exactness comes from bake-then-refine: candidate nodes are densified (with
+ * kink snapping) until midpoint probes of every interval reproduce the true
+ * law, then collinear nodes are pruned. Tables are deduplicated across cells
+ * by the shape of the scaled EPS info; vertical endpoint scales (maxKr*,
+ * maxPc*, e.g. from SWATINIT) are factored into per-cell linear multipliers.
+ * Storage is a small table pool plus one index and a few scalars per cell.
+ * Correctness is checked at build time against the true law (spotValidate).
+ */
+#ifndef OPM_BAKED_SATFUNC_TABLES_HPP
+#define OPM_BAKED_SATFUNC_TABLES_HPP
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include