diff --git a/src/armnnTfLiteParser/TfLiteParser.cpp b/src/armnnTfLiteParser/TfLiteParser.cpp
index 80b6d99..521c5db 100644
--- a/src/armnnTfLiteParser/TfLiteParser.cpp
+++ b/src/armnnTfLiteParser/TfLiteParser.cpp
@@ -428,6 +428,7 @@
     m_ParserFunctions[tflite::BuiltinOperator_LOGISTIC]          =  &TfLiteParser::ParseLogistic;
     m_ParserFunctions[tflite::BuiltinOperator_MAX_POOL_2D]       =  &TfLiteParser::ParseMaxPool2D;
     m_ParserFunctions[tflite::BuiltinOperator_MAXIMUM]           =  &TfLiteParser::ParseMaximum;
+    m_ParserFunctions[tflite::BuiltinOperator_MINIMUM]           =  &TfLiteParser::ParseMinimum;
     m_ParserFunctions[tflite::BuiltinOperator_RELU]              =  &TfLiteParser::ParseRelu;
     m_ParserFunctions[tflite::BuiltinOperator_RELU6]             =  &TfLiteParser::ParseRelu6;
     m_ParserFunctions[tflite::BuiltinOperator_RESHAPE]           =  &TfLiteParser::ParseReshape;
@@ -925,6 +926,39 @@
     RegisterOutputSlots(subgraphIndex, operatorIndex, layer, {outputTensorIndexes[0]});
 }
 
+void TfLiteParser::ParseMinimum(size_t subgraphIndex, size_t operatorIndex)
+{
+    CHECK_MODEL(m_Model, subgraphIndex, operatorIndex);
+
+    auto inputs = GetInputs(m_Model, subgraphIndex, operatorIndex);
+    CHECK_VALID_SIZE(inputs.size(), 2);
+
+    auto outputs = GetOutputs(m_Model, subgraphIndex, operatorIndex);
+    CHECK_VALID_SIZE(outputs.size(), 1);
+
+    armnn::TensorInfo inputTensorInfo  = ToTensorInfo(inputs[0]);
+    armnn::TensorInfo input1TensorInfo = ToTensorInfo(inputs[1]);
+
+    auto layerName = boost::str(boost::format("Minimum:%1%:%2%") % subgraphIndex % operatorIndex);
+    IConnectableLayer* layer = m_Network->AddMinimumLayer(layerName.c_str());
+
+    TensorInfo outputTensorInfo = ToTensorInfo(outputs[0]);
+    layer->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
+
+    auto inputTensorIndexes = AsUnsignedVector(GetInputTensorIds(m_Model, subgraphIndex, operatorIndex));
+    if (inputTensorInfo.GetNumDimensions() != input1TensorInfo.GetNumDimensions())
+    {
+        AddBroadcastReshapeLayer(subgraphIndex, operatorIndex, layer);
+    }
+    else
+    {
+        RegisterInputSlots(subgraphIndex, operatorIndex, layer, {inputTensorIndexes[0], inputTensorIndexes[1]});
+    }
+
+    auto outputTensorIndexes = AsUnsignedVector(GetOutputTensorIds(m_Model, subgraphIndex, operatorIndex));
+    RegisterOutputSlots(subgraphIndex, operatorIndex, layer, {outputTensorIndexes[0]});
+}
+
 void TfLiteParser::ParsePool(size_t subgraphIndex,
                              size_t operatorIndex,
                              PoolingAlgorithm algorithm)
diff --git a/src/armnnTfLiteParser/TfLiteParser.hpp b/src/armnnTfLiteParser/TfLiteParser.hpp
index 1e09e72..6940376 100644
--- a/src/armnnTfLiteParser/TfLiteParser.hpp
+++ b/src/armnnTfLiteParser/TfLiteParser.hpp
@@ -101,6 +101,7 @@
     void ParseLogistic(size_t subgraphIndex, size_t operatorIndex);
     void ParseMaxPool2D(size_t subgraphIndex, size_t operatorIndex);
     void ParseMaximum(size_t subgraphIndex, size_t operatorIndex);
+    void ParseMinimum(size_t subgraphIndex, size_t operatorIndex);
     void ParseRelu(size_t subgraphIndex, size_t operatorIndex);
     void ParseRelu6(size_t subgraphIndex, size_t operatorIndex);
     void ParseReshape(size_t subgraphIndex, size_t operatorIndex);
diff --git a/src/armnnTfLiteParser/test/Minimum.cpp b/src/armnnTfLiteParser/test/Minimum.cpp
new file mode 100644
index 0000000..70b249f
--- /dev/null
+++ b/src/armnnTfLiteParser/test/Minimum.cpp
@@ -0,0 +1,176 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <boost/test/unit_test.hpp>
+#include "ParserFlatbuffersFixture.hpp"
+#include "../TfLiteParser.hpp"
+
+#include <string>
+#include <iostream>
+
+BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
+
+struct MinimumFixture : public ParserFlatbuffersFixture
+{
+    explicit MinimumFixture(const std::string & inputShape1,
+                            const std::string & inputShape2,
+                            const std::string & outputShape)
+    {
+        m_JsonString = R"(
+            {
+                "version": 3,
+                "operator_codes": [ { "builtin_code": "MINIMUM" } ],
+                "subgraphs": [ {
+                    "tensors": [
+                        {
+                            "shape": )" + inputShape1 + R"(,
+                            "type": "FLOAT32",
+                            "buffer": 0,
+                            "name": "inputTensor1",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + inputShape2 + R"(,
+                            "type": "FLOAT32",
+                            "buffer": 1,
+                            "name": "inputTensor2",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + outputShape + R"( ,
+                            "type": "FLOAT32",
+                            "buffer": 2,
+                            "name": "outputTensor",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        }
+                    ],
+                    "inputs": [ 0, 1 ],
+                    "outputs": [ 2 ],
+                    "operators": [
+                        {
+                            "opcode_index": 0,
+                            "inputs": [ 0, 1 ],
+                            "outputs": [ 2 ],
+                            "custom_options_format": "FLEXBUFFERS"
+                        }
+                    ],
+                } ],
+                "buffers" : [
+                    { },
+                    { }
+                ]
+            }
+        )";
+        Setup();
+    }
+};
+
+
+struct MinimumFixture4D : MinimumFixture
+{
+    MinimumFixture4D() : MinimumFixture("[ 1, 2, 2, 3 ]",
+                                        "[ 1, 2, 2, 3 ]",
+                                        "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimum4D, MinimumFixture4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 0.0f,  1.0f,  2.0f,
+                          3.0f,  4.0f,  5.0f,
+                          6.0f,  7.0f,  8.0f,
+                          9.0f, 10.0f, 11.0f }},
+      {"inputTensor2",  { 0.0f, 0.0f, 0.0f,
+                          5.0f, 5.0f, 5.0f,
+                          7.0f, 7.0f, 7.0f,
+                          9.0f, 9.0f, 9.0f }}},
+      {{"outputTensor", { 0.0f, 0.0f, 0.0f,
+                          3.0f, 4.0f, 5.0f,
+                          6.0f, 7.0f, 7.0f,
+                          9.0f, 9.0f, 9.0f }}});
+}
+
+struct MinimumBroadcastFixture4D : MinimumFixture
+{
+    MinimumBroadcastFixture4D() : MinimumFixture("[ 1, 1, 2, 1 ]",
+                                                 "[ 1, 2, 1, 3 ]",
+                                                 "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D, MinimumBroadcastFixture4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 2.0f,
+                          4.0f }},
+      {"inputTensor2",  { 1.0f, 2.0f, 3.0f,
+                          4.0f, 5.0f, 6.0f }}},
+      {{"outputTensor", { 1.0f, 2.0f, 2.0f,
+                          1.0f, 2.0f, 3.0f,
+                          2.0f, 2.0f, 2.0f,
+                          4.0f, 4.0f, 4.0f }}});
+}
+
+struct MinimumBroadcastFixture4D1D : MinimumFixture
+{
+    MinimumBroadcastFixture4D1D() : MinimumFixture("[ 1, 2, 2, 3 ]",
+                                                   "[ 1 ]",
+                                                   "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D1D, MinimumBroadcastFixture4D1D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 0.0f,  1.0f,  2.0f,
+                          3.0f,  4.0f,  5.0f,
+                          6.0f,  7.0f,  8.0f,
+                          9.0f, 10.0f, 11.0f }},
+      {"inputTensor2",  { 5.0f }}},
+      {{"outputTensor", {  0.0f, 1.0f, 2.0f,
+                           3.0f, 4.0f, 5.0f,
+                           5.0f, 5.0f, 5.0f,
+                           5.0f, 5.0f, 5.0f }}});
+}
+
+struct MinimumBroadcastFixture1D4D : MinimumFixture
+{
+    MinimumBroadcastFixture1D4D() : MinimumFixture("[ 3 ]",
+                                                   "[ 1, 2, 2, 3 ]",
+                                                   "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast1D4D, MinimumBroadcastFixture1D4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 5.0f,  6.0f,  7.0f }},
+      {"inputTensor2",  { 0.0f,  1.0f,  2.0f,
+                          3.0f,  4.0f,  5.0f,
+                          6.0f,  7.0f,  8.0f,
+                          9.0f, 10.0f, 11.0f }}},
+      {{"outputTensor", { 0.0f, 1.0f, 2.0f,
+                          3.0f, 4.0f, 5.0f,
+                          5.0f, 6.0f, 7.0f,
+                          5.0f, 6.0f, 7.0f }}});
+}
+
+BOOST_AUTO_TEST_SUITE_END()
