diff --git a/mo/csv.py b/mo/csv.py
index 73e6e98c9e68545fba9a4695c85e775e23eba8e1..1a5d516518b2295da7efe74d0f90b9678e234ef9 100644
--- a/mo/csv.py
+++ b/mo/csv.py
@@ -7,7 +7,7 @@
 #   - quoting pomocí uvozovek
 
 import csv
-from difflib import get_close_matches
+import difflib
 from enum import auto
 from dataclasses import dataclass, fields
 from typing import Type, List, IO, Sequence
@@ -96,16 +96,10 @@ class MissingHeaderError(RuntimeError):
 
 
 class UnknownColumnError(RuntimeError):
-    def __init__(self, unknown_name: str, columns: set):
-        best_matches = get_close_matches(unknown_name, columns, n=1)
-        if not best_matches:
-            self.message = (
-                "Neznámý sloupec '{}'. Podporovaná množina sloupců je tato: {}".format(
-                    unknown_name, columns))
-        else:
-            self.message = (
-                "Neznámý sloupec '{}', měli jste na mysli '{}'?".format(
-                    unknown_name, best_matches[0]))
+    def __init__(self, unknown_name: str, expected_name: str):
+        self.message = (
+            "Neznámý sloupec '{}', měli jste na mysli '{}'?".format(
+                unknown_name, expected_name))
 
 
 def write(file: IO, fmt: FileFormat, row_class: Type[Row], rows: Sequence[Row]):
@@ -122,6 +116,7 @@ def write(file: IO, fmt: FileFormat, row_class: Type[Row], rows: Sequence[Row]):
 def read(file: IO, fmt: FileFormat, row_class: Type[Row]):
     reader = csv.reader(file, dialect=fmt.get_dialect(), strict=True)
 
+    warnings = []
     header: List[str] = []
     rows: List[Row] = []
     columns = set(field.name for field in fields(row_class))
@@ -136,7 +131,11 @@ def read(file: IO, fmt: FileFormat, row_class: Type[Row]):
                 raise MissingHeaderError()
             for h in header:
                 if not h in columns:
-                    raise UnknownColumnError(h, columns)
+                    best_matches = difflib.get_close_matches(h, columns, n=1, cutoff=0.8)
+                    if best_matches:
+                        warnings.append(
+                            "Neznámý sloupec '{}', měli jste na mysli '{}'?".format(
+                                h, best_matches[0]))
         else:
             row = row_class()
             not_empty = False
@@ -150,4 +149,4 @@ def read(file: IO, fmt: FileFormat, row_class: Type[Row]):
             if not_empty:
                 rows.append(row)
 
-    return rows
+    return (rows, warnings)
diff --git a/mo/imports.py b/mo/imports.py
index c42df868088ab9b420c125d563a269a2a96cd9ce..8993a7f8c3511933e5926c83859903c56480adf1 100644
--- a/mo/imports.py
+++ b/mo/imports.py
@@ -69,6 +69,7 @@ class Import:
 
     def __init__(self):
         self.errors = []
+        self.warnings = []
         self.rr = None
         self.place_cache = {}
         self.school_place_cache = {}
@@ -382,7 +383,9 @@ class Import:
         try:
             with open(path, encoding=charset) as file:
                 try:
-                    rows: List[mo.csv.Row] = mo.csv.read(file=file, fmt=self.fmt, row_class=self.row_class)
+                    rows: List[mo.csv.Row]
+                    rows, warnings = mo.csv.read(file=file, fmt=self.fmt, row_class=self.row_class)
+                    self.warnings += warnings
                 except MissingHeaderError:
                     return self.error('Souboru chybí první řádek s názvy sloupců')
                 except UnknownColumnError as e:
diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 71fce79775fc997234e8dbbe431fe4589fc31a8f..8f9e2328d93f0935d58b40701b2915b57d1118b8 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -364,6 +364,7 @@ def generic_import(round: db.Round, contest: Optional[db.Contest]):
 
     form = ImportForm()
     errs = []
+    warnings = []
     if form.validate_on_submit():
         fmt = form.fmt.data
         imp = create_import(user=g.user, type=form.typ.data, fmt=fmt, round=round, contest=contest)
@@ -383,6 +384,7 @@ def generic_import(round: db.Round, contest: Optional[db.Contest]):
                             return redirect(url_for('org_round', id=round.round_id))
                 else:
                     errs = imp.errors
+                    warnings = imp.warnings
             else:
                 flash('Vyberte si prosím soubor', 'danger')
         elif form.get_template.data:
@@ -398,6 +400,7 @@ def generic_import(round: db.Round, contest: Optional[db.Contest]):
         round=round,
         form=form,
         errs=errs,
+        warnings=warnings
     )
 
 
diff --git a/mo/web/templates/org_generic_import.html b/mo/web/templates/org_generic_import.html
index 3b60d4459b5c1160a6205c69bba32f9a19b73c0c..ebe4616a3b4ec546ed6704446e8efc829e73adec 100644
--- a/mo/web/templates/org_generic_import.html
+++ b/mo/web/templates/org_generic_import.html
@@ -9,6 +9,16 @@ Import dat do {% if contest %}soutěžní oblasti {{ contest.place.name }}{% els
 {% endblock %}
 
 {% block body %}
+{% if warnings %}
+<h3>Varování při importu</h3>
+
+<div class="alert alert-warning" role="alert" style="white-space: pre-line">{{ "" -}}
+{% for e in warnings %}
+{{ e }}
+{% endfor %}
+</div>
+{% endif %}
+
 {% if errs %}
 <h3>Chyby při importu</h3>