diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java
index 0e530c153b..43bb0df75f 100644
--- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java
@@ -1,6 +1,7 @@
 package se.su.dsv.scipro.admin.pages.grading;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.markup.html.GenericWebMarkupContainer;
@@ -13,7 +14,6 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.GenericPanel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LambdaModel;
-import org.apache.wicket.model.Model;
 
 class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTemplate> {
     EditingGradingTemplateComponentPanel(
@@ -25,7 +25,11 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
         add(new TextArea<>("note", LambdaModel.of(
                 editingGradingTemplateModel,
                 EditingGradingTemplate::getNote,
-                EditingGradingTemplate::setNote)));
+                EditingGradingTemplate::setNote)) {
+            {
+                add(new AutoSave());
+            }
+        });
 
         add(new ListView<>("criteria", editingGradingTemplateModel.map(EditingGradingTemplate::getCriteria)) {
             {
@@ -48,11 +52,19 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
             add(new TextField<>("title_sv", LambdaModel.of(
                     model,
                     EditingGradingTemplate.Criteria::getTitleSv,
-                    EditingGradingTemplate.Criteria::setTitleSv)));
+                    EditingGradingTemplate.Criteria::setTitleSv)) {
+                {
+                    add(new AutoSave());
+                }
+            });
             add(new TextField<>("title_en", LambdaModel.of(
                     model,
                     EditingGradingTemplate.Criteria::getTitleEn,
-                    EditingGradingTemplate.Criteria::setTitleEn)));
+                    EditingGradingTemplate.Criteria::setTitleEn)) {
+                {
+                    add(new AutoSave());
+                }
+            });
 
             add(new ListView<>("points", model.map(EditingGradingTemplate.Criteria::getPoints)) {
                 @Override
@@ -88,12 +100,20 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
                 add(new TextArea<>("requirement_en", LambdaModel.of(
                         model,
                         EditingGradingTemplate.Criteria.Point::getRequirementEn,
-                        EditingGradingTemplate.Criteria.Point::setRequirementEn)));
+                        EditingGradingTemplate.Criteria.Point::setRequirementEn)) {
+                    {
+                        add(new AutoSave());
+                    }
+                });
 
                 add(new TextArea<>("requirement_sv", LambdaModel.of(
                         model,
                         EditingGradingTemplate.Criteria.Point::getRequirementSv,
-                        EditingGradingTemplate.Criteria.Point::setRequirementSv)));
+                        EditingGradingTemplate.Criteria.Point::setRequirementSv)) {
+                    {
+                        add(new AutoSave());
+                    }
+                });
 
                 add(new AjaxLink<>("remove") {
                     @Override
@@ -106,4 +126,15 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
             }
         }
     }
+
+    private static class AutoSave extends AjaxFormComponentUpdatingBehavior {
+        public AutoSave() {
+            super("keyup");
+        }
+
+        @Override
+        protected void onUpdate(AjaxRequestTarget target) {
+            // just trigger the ajax call is enough to update the model object
+        }
+    }
 }