diff --git a/invenio_previewer/config.py b/invenio_previewer/config.py
index f68748ffdfd37da03a457649d8caaa006e18a4b9..0790b0d0b6249c7a06cd1338f028ef3e043ffa8f 100644
--- a/invenio_previewer/config.py
+++ b/invenio_previewer/config.py
@@ -21,7 +21,7 @@ PREVIEWER_CHARDET_CONFIDENCE = 0.9
 """Confidence threshold for character encoding detection by `cchardet`."""
 
 PREVIEWER_MAX_FILE_SIZE_BYTES = 1 * 1024 * 1024
-"""Maximum file size in bytes for JSON/XML files."""
+"""Maximum file size in bytes for JSON/XML/CSV files."""
 
 PREVIEWER_MAX_IMAGE_SIZE_BYTES = 0.5 * 1024 * 1024
 """Maximum file size in bytes for image files."""
diff --git a/invenio_previewer/extensions/csv_papaparsejs.py b/invenio_previewer/extensions/csv_papaparsejs.py
index 21a5100b5ff6d847aea70904f39bd96426e487ec..9b34b2b85144ea29d6f2da6369b923267196779f 100644
--- a/invenio_previewer/extensions/csv_papaparsejs.py
+++ b/invenio_previewer/extensions/csv_papaparsejs.py
@@ -15,11 +15,20 @@ from ..proxies import current_previewer
 previewable_extensions = ["csv", "dsv"]
 
 
+def validate_csv(file):
+    """Return dialect information about given csv file."""
+    max_file_size = current_app.config.get(
+        "PREVIEWER_MAX_FILE_SIZE_BYTES", 10 * 1024 * 1024
+    )
+    is_size_valid = file.size <= max_file_size
+    return is_size_valid
+
+
 def can_preview(file):
     """Determine if the given file can be previewed."""
-    if file.is_local() and file.has_extensions(".csv", ".dsv"):
-        return True
-    return False
+    return (
+        file.is_local() and file.has_extensions(".csv", ".dsv") and validate_csv(file)
+    )
 
 
 def preview(file):