diff --git a/Framework/Indexing/src/Extract.cpp b/Framework/Indexing/src/Extract.cpp
index 58910a360e54f83e74d3b917a42ceba9b7f230be..a1d0ce74590cc6ea969a66e217cae6b7ab95864e 100644
--- a/Framework/Indexing/src/Extract.cpp
+++ b/Framework/Indexing/src/Extract.cpp
@@ -6,6 +6,15 @@
 namespace Mantid {
 namespace Indexing {
 
+namespace {
+void checkStorageMode(const IndexInfo &indexInfo) {
+  using namespace Parallel;
+  if (indexInfo.storageMode() == StorageMode::Distributed)
+    throw std::runtime_error("extract() does not support " +
+                             Parallel::toString(StorageMode::Distributed));
+}
+}
+
 /// Extracts IndexInfo from source IndexInfo, extracting data for all indices
 /// specified by index set.
 IndexInfo extract(const IndexInfo &source, const SpectrumIndexSet &indices) {
@@ -15,6 +24,7 @@ IndexInfo extract(const IndexInfo &source, const SpectrumIndexSet &indices) {
 /// Extracts IndexInfo from source IndexInfo, extracting data for all indices
 /// specified by vector.
 IndexInfo extract(const IndexInfo &source, const std::vector<size_t> &indices) {
+  checkStorageMode(source);
   std::vector<SpectrumNumber> specNums;
   std::vector<SpectrumDefinition> specDefs;
   const auto &sourceDefs = source.spectrumDefinitions();
@@ -31,6 +41,7 @@ IndexInfo extract(const IndexInfo &source, const std::vector<size_t> &indices) {
 /// specified by range.
 IndexInfo extract(const IndexInfo &source, const size_t minIndex,
                   const size_t maxIndex) {
+  checkStorageMode(source);
   std::vector<SpectrumNumber> specNums;
   std::vector<SpectrumDefinition> specDefs;
   const auto &sourceDefs = source.spectrumDefinitions();