diff --git a/web/app/static/js/modules/corpus_analysis/client/Client.js b/web/app/static/js/modules/corpus_analysis/client/Client.js
index bd4f92bc717c0cd7fd8b4a315eb417c43ab1839d..57148af18bbb06b9c2ecd453f17ddf2821ce5eca 100644
--- a/web/app/static/js/modules/corpus_analysis/client/Client.js
+++ b/web/app/static/js/modules/corpus_analysis/client/Client.js
@@ -114,6 +114,8 @@ class Client {
    * Requests results data either for, 'full-results', 'sub-results' or
    * 'inspect-results' (resultsType).
    * Gets full results for evere provided dataIndex (one match).
+   * Full results means with full context. So the Client has to request all
+   * matches from the server again!
    **/
   getResultsData(resultsType, dataIndexes, results) {
     let tmp_first_cpos = [];
@@ -129,6 +131,65 @@ class Client {
                          last_cpos: tmp_last_cpos,});
   }
 
+  //
+  getResultsDataWithoutContext(resultsType, dataIndexes, results, resultsList) {
+    let objectKey = '';
+    if (resultsType === 'full-results') {
+      console.info('Saving full-results data without full context.');
+      objectKey = 'fullResultsData';
+    } else if (resultsType === 'sub-results') {
+      console.info('Saving sub-results data without full context.');
+      objectKey = 'subResultsData';
+    }
+    // Get matches from results.data.
+    let matches = [];
+    let cpos = [];
+    let match;
+    for (let index of dataIndexes) {
+      match = results.data.matches[index]
+      matches.push(match)
+      // Get cpos from match.
+      let {lc, c, rc} = resultsList.helperCreateCpos(results.data.cpos_ranges,
+                                                     match);
+      cpos.push(...lc);
+      cpos.push(...c);
+      cpos.push(...rc);
+    }
+    // Get cpos_lookups from cposes.
+    let cpos_lookup = {};
+    let single_lookup = {};
+    let textIds = new Set;
+    for (let single_cpos of cpos) {
+      single_lookup[single_cpos] = results.data.cpos_lookup[single_cpos];
+      textIds.add(single_lookup[single_cpos].text);
+      Object.assign(cpos_lookup, single_lookup);
+    }
+    let text = {};
+    let text_lookup = {};
+    for (let id of textIds) {
+      text[id] = results.data.text_lookup[id];
+      Object.assign(text_lookup, text);
+    }
+    /**
+     * Save the data from results.dat either in results.fullResultsData or
+     * results.subResultsData.
+     */
+    results[objectKey].init();
+    results[objectKey].matches.push(...matches);
+    results[objectKey].addData(cpos_lookup, "cpos_lookup");
+    results[objectKey].addData(text_lookup, "text_lookup");
+    results[objectKey].addData(results.metaData);
+    results[objectKey].query = results.data.query;
+    results[objectKey].corpus_type = resultsType;
+    results[objectKey].match_count = matches.length;
+    results[objectKey].cpos_ranges = results.data.cpos_ranges;
+    results[objectKey].fullContext = false;
+    console.info('Results data without context has been saved.', results);
+    this.isBusy = false;
+    this.notifyView('results-data-recieved', {type: resultsType,
+                                                results: results});
+  }
+
 }
 
 
diff --git a/web/app/static/js/modules/corpus_analysis/client/callbacks.js b/web/app/static/js/modules/corpus_analysis/client/callbacks.js
index 4db0c200e7613e2b2471cd6796682dc98e93a463..a2cc29f2948e5a63428b02a134cf423c4a905e26 100644
--- a/web/app/static/js/modules/corpus_analysis/client/callbacks.js
+++ b/web/app/static/js/modules/corpus_analysis/client/callbacks.js
@@ -71,10 +71,16 @@ function saveQueryData() {
 }
 
 function getResultsData() {
-  let [resultsType, dataIndexes, client, results, rest] = arguments;
+  let [resultsType, dataIndexes, resultsList, client, results, rest] = arguments;
   client.isBusy = true;
   client.notifyView('results-data-recieving');
-  client.getResultsData(resultsType, dataIndexes, results);
+  if (resultsList.exportFullInspectContext.checked) {
+    console.log('Get with full context');
+    client.getResultsData(resultsType, dataIndexes, results);
+  } else {
+    client.getResultsDataWithoutContext(resultsType, dataIndexes, results,
+                                        resultsList);
+  }
 }
 
 function saveResultsData() {
@@ -100,6 +106,7 @@ function saveResultsData() {
   results[objectKey].corpus_type = type;
   results[objectKey].match_count = [...payload.matches].length;
   results[objectKey].cpos_ranges = payload.cpos_ranges;
+  results[objectKey].fullContext = true;
   console.info('Results data has been saved.', results);
   client.isBusy = false;
   client.notifyView('results-data-recieved', {type: type,
diff --git a/web/app/static/js/modules/corpus_analysis/client/listeners.js b/web/app/static/js/modules/corpus_analysis/client/listeners.js
index ceae01ba4f546a1ee8fc0455018869781d3d6271..883c639e193801397e06d9586eeb97ac9c1c49d2 100644
--- a/web/app/static/js/modules/corpus_analysis/client/listeners.js
+++ b/web/app/static/js/modules/corpus_analysis/client/listeners.js
@@ -179,7 +179,8 @@ function recieveViewNotification(type, client) {
         console.info('Client getting full results for export.');
         // execute callback or functions
         client.eventListeners[type].executeCallback([event.detail.resultsType,
-                                                     event.detail.dataIndexes],
+                                                     event.detail.dataIndexes,
+                                                     event.detail.resultsList],
                                                      caseIdentifier);
         break
         default:
diff --git a/web/app/templates/corpora/analyse_corpus.html.j2 b/web/app/templates/corpora/analyse_corpus.html.j2
index f0a5e31241e9366ef89d5a8daec548f1f9838a19..36f271da158f05f26b0c342d844b4e90659c1211 100644
--- a/web/app/templates/corpora/analyse_corpus.html.j2
+++ b/web/app/templates/corpora/analyse_corpus.html.j2
@@ -245,6 +245,7 @@ document.addEventListener("DOMContentLoaded", () => {
     '#show-meta-data',
     '#sub-results-create',
     '#sub-results-export',
+    '#export-full-inspect-context',
   ]);
 
   /**
@@ -322,6 +323,19 @@ document.addEventListener("DOMContentLoaded", () => {
     }
   };
 
+  /**
+   * Checks if resultsList.exportFullInspectContext switch is changed.#
+   * If it has been changed reset all Download buttons.
+   */
+  resultsList.exportFullInspectContext.onchange = (event) => {
+    // Hide all download buttons.
+    resultsList.fullResultsExport.classList.toggle('hide', true);
+    resultsList.subResultsExport.classList.toggle('hide', true);
+    // Show result create buttons.
+    resultsList.fullResultsCreate.classList.toggle('hide', false);
+    resultsList.subResultsCreate.classList.toggle('hide', false);
+  }
+
   /**
    * The following event listeners are handeling the data export.
    * 1. Create full-results
@@ -338,7 +352,9 @@ document.addEventListener("DOMContentLoaded", () => {
                                                       loadingSpinnerHTML);
     let dataIndexes = [...Array(results.data.match_count).keys()];
     resultsList.notifyClient('get-results', { resultsType: 'full-results',
-                                              dataIndexes: dataIndexes});
+                                              dataIndexes: dataIndexes,
+                                              resultsList: resultsList,
+                                            });
   }
   // 2. Add events for sub-results create
   resultsList.subResultsCreate.onclick = (event) => {
@@ -351,14 +367,20 @@ document.addEventListener("DOMContentLoaded", () => {
     resultsList.subResultsCreate.insertAdjacentHTML('afterbegin',
     loadingSpinnerHTML);
     resultsList.notifyClient('get-results', { resultsType: 'sub-results',
-                                              dataIndexes: dataIndexes});
+                                              dataIndexes: dataIndexes,
+                                              resultsList: resultsList,
+                                            });
   }
   // 3. Open download modal when full results export button is pressed
   resultsList.fullResultsExport.onclick = (event) => {
     resultsList.queryResultsDownloadModal.open();
     // add onclick to download JSON button and download the file
     resultsList.downloadResultsJson.onclick = (event) => {
-      let filename = results.fullResultsData.createDownloadFilename('full-results');
+      let suffix = 'full-results'
+      if (resultsList.exportFullInspectContext.checked) {
+        suffix += '_full-context';
+      }
+      let filename = results.fullResultsData.createDownloadFilename(suffix);
       results.fullResultsData.addData(results.metaData);
       results.fullResultsData.downloadJSONRessource(filename,
                                                     results.fullResultsData,
@@ -369,7 +391,11 @@ document.addEventListener("DOMContentLoaded", () => {
     resultsList.queryResultsDownloadModal.open();
     // add onclick to download JSON button and download the file
     resultsList.downloadResultsJson.onclick = (event) => {
-      let filename = results.subResultsData.createDownloadFilename('sub-results');
+      let suffix = 'sub-results'
+      if (resultsList.exportFullInspectContext.checked) {
+        suffix += '_full-context';
+      }
+      let filename = results.subResultsData.createDownloadFilename(suffix);
       results.subResultsData.addData(results.metaData);
       results.subResultsData.downloadJSONRessource(filename,
                                                    results.subResultsData,
@@ -380,7 +406,7 @@ document.addEventListener("DOMContentLoaded", () => {
     resultsList.queryResultsDownloadModal.open();
     // add onclick to download JSON button and download the file
     resultsList.downloadResultsJson.onclick = (event) => {
-      let filename = results.subResultsData.createDownloadFilename('inspect-results');
+      let filename = results.subResultsData.createDownloadFilename('inspect-results_full-context');
       results.subResultsData.addData(results.metaData);
       results.subResultsData.downloadJSONRessource(filename,
                                                    results.inspectResultsData,
diff --git a/web/app/templates/interactions/export.html.j2 b/web/app/templates/interactions/export.html.j2
index 7e2b3c04c66cadcc65c778e7aaefcbd06ed90428..3c8194988aa181b96245aa441095ca7fcd662bd9 100644
--- a/web/app/templates/interactions/export.html.j2
+++ b/web/app/templates/interactions/export.html.j2
@@ -5,6 +5,26 @@ the selected sub results.-->
   <h6 style="margin-top: 0px;">Export</h6>
   <div class="divider" style="margin-bottom: 10px;"></div>
   <div class="row">
+    <div class="col s12" style="line-height: 38px;">
+        <div class="col s8">
+          Full context
+          <a class="tooltipped black-text" data-tooltip="Check this switch to
+            create results for the download with full context. Creating
+            results like this will take much longer but you will be able to
+            inspect your matches in detail when you import them into the query
+            results viewer.">
+            <i class="material-icons tiny">info_outline</i>
+          </a>
+        </div>
+        <div class="class col s4">
+          <div class="switch">
+            <label style="margin-left: -20px;">
+              <input type="checkbox" id="export-full-inspect-context">
+              <span class="lever"></span>
+            </label>
+          </div>
+        </div>
+    </div>
     <div class="col s12">
       <button class="waves-effect
               waves-light