diff --git a/resources/frontend_client/app/query_builder/visualization.react.js b/resources/frontend_client/app/query_builder/visualization.react.js
index 8136f2cb9ac7bc4aff712c8bbdb2338604417d5e..fd762d7eb4b4da13d12b12051824a868d0649852 100644
--- a/resources/frontend_client/app/query_builder/visualization.react.js
+++ b/resources/frontend_client/app/query_builder/visualization.react.js
@@ -177,6 +177,16 @@ var QueryVisualization = React.createClass({
                             data={this.props.result.data} />
                     );
                 }
+
+                // check if the query result was truncated and let the user know about it if so
+                if (this.props.result.data.rows_truncated && !rowMaxMessage) {
+                    rowMaxMessage = (
+                        <div className="mt1">
+                            <span className="Badge Badge--headsUp mr2">Too many rows!</span>
+                            Result data was capped at <b>{this.props.result.data.rows_truncated}</b> rows.
+                        </div>
+                    );
+                }
             }
         }
 
diff --git a/src/metabase/driver/query_processor.clj b/src/metabase/driver/query_processor.clj
index ea3cf31e7efe2b3d30404ec48cb3164756650dfa..0aa1d547f1d54f0a5cc137d1ca0e78822d96ff92 100644
--- a/src/metabase/driver/query_processor.clj
+++ b/src/metabase/driver/query_processor.clj
@@ -200,7 +200,7 @@
     (cond-> {:row_count num-results
              :status    :completed
              :data      results}
-      (= num-results max-result-rows) (assoc :num_results_over_limit true)))) ; so the front-end can let the user know why they're being arbitarily limited
+      (= num-results max-result-rows) (assoc-in [:data :rows_truncated] max-result-rows)))) ; so the front-end can let the user know why they're being arbitarily limited
 
 ;; ### POST-PROCESS