diff --git a/templates/register.htm b/templates/register.htm
index 6a56af6..edfab84 100644
--- a/templates/register.htm
+++ b/templates/register.htm
@@ -2,7 +2,7 @@
     <?php echo $SERVICE_NAME;?>
 </h1>
 
-<form action="" method="POST">
+<form class="needs-validation" novalidate action="" method="POST">
     <!-- Username input -->
     <div class="form-outline mb-3">
         <label class="form-label font-weight-bold" for="form3Example3">Username*</label>
@@ -11,6 +11,9 @@
             class="form-control <?php if(isset($error) && $error && !isset($_POST['username'])){echo 'border-danger';}?>"
             placeholder="johndoe"
             value="<?php echo isset($_POST['username']) ? htmlspecialchars($_POST['username']) : '' ?>" />
+        <div class="invalid-feedback">
+            Please choose a username with at least 5 not whitespace characters.
+        </div>
     </div>
     <!-- 2 column grid layout with text inputs for the first and last names -->
     <div class="row mb-3">
@@ -18,21 +21,27 @@
             <div class="form-outline">
                 <label class="form-label font-weight-bold" for="form3Example1">First name*</label>
                 <input pattern="[^\s]{<?php echo $VAL_USER->min_first_name.','.$VAL_USER->max_first_name;?>}" required
-                    title="At least 3 not whitespace characters" name="name" type="text" id="form3Example1"
+                    title="At least 2 not whitespace characters" name="name" type="text" id="form3Example1"
                     class="form-control <?php if(isset($error) && $error && !isset($_POST['name'])){echo 'border-danger';}?>"
                     placeholder="John"
                     value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '' ?>" />
             </div>
+            <div class="invalid-feedback">
+                Please provide a first name with at least 2 not whitespace characters.
+            </div>
         </div>
         <div class="col">
             <div class="form-outline">
                 <label class="form-label font-weight-bold" for="form3Example2">Last name*</label>
                 <input pattern="[^\s]{<?php echo $VAL_USER->min_last_name.','.$VAL_USER->max_last_name;?>}" required
-                    title="At least 3 not whitespace characters" name="last_name" type="text" id="form3Example2"
+                    title="At least 2 not whitespace characters" name="last_name" type="text" id="form3Example2"
                     class="form-control <?php if(isset($error) && $error && !isset($_POST['last_name'])){echo 'border-danger';}?>"
                     placeholder="Doe"
                     value="<?php echo isset($_POST['last_name']) ? htmlspecialchars($_POST['last_name']) : '' ?>" />
             </div>
+            <div class="invalid-feedback">
+                Please provide a last name with at least 2 not whitespace characters.
+            </div>
         </div>
     </div>
 
@@ -43,25 +52,29 @@
             class="form-control <?php if(isset($error) && $error && !isset($_POST['email'])){echo 'border-danger';}?>"
             placeholder="myemail@example.com"
             value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '' ?>" />
+            <div class="invalid-feedback">
+                Please provide a valid email address.
+            </div>
     </div>
 
     <!-- Password input -->
     <div class="form-outline mb-3">
-        <label class="form-label font-weight-bold" for="form3Example4">Password*</label>
+        <label class="form-label font-weight-bold" for="pw1">Password*</label>
         <input pattern="[^\s]{<?php echo $VAL_USER->min_password.','.$VAL_USER->max_password;?>}" required
-            title="At least 8 not whitespace characters" name="password" type="password" id="form3Example4"
+            title="At least 8 not whitespace characters" name="password" type="password" id="pw1"
             class="form-control <?php if(isset($error) && $error && !isset($_POST['password'])){echo 'border-danger';}?>"
             placeholder="********"
             value="<?php echo isset($_POST['password']) ? htmlspecialchars($_POST['password']) : '' ?>" />
     </div>
     <!-- Password input -->
     <div class="form-outline mb-3">
-        <label class="form-label font-weight-bold" for="form3Example4">Confirm your Password*</label>
+        <label class="form-label font-weight-bold" for="pw2">Confirm your Password*</label>
         <input pattern="[^\s]{<?php echo $VAL_USER->min_password.','.$VAL_USER->max_password;?>}" required
-            title="At least 8 not whitespace characters" name="password_confirm" type="password" id="form3Example5"
+            title="At least 8 not whitespace characters" name="password_confirm" type="password" id="pw2"
             class="form-control <?php if(isset($error) && $error && !isset($_POST['password_confirm'])){echo 'border-danger';}?>"
             placeholder="********"
-            value="<?php echo isset($_POST['password_confirm']) ? htmlspecialchars($_POST['password_confirm']) : '' ?>" />
+            oninput="validate_pw2(this)"
+             />
     </div>
     <hr class="mt-2 mb-3" />
     <div class="form-outline mb-3">
@@ -92,7 +105,7 @@
                     href="https://www2.ids-mannheim.de/cosmas2/web-app/datenschutz.html">Privacy Policy</a>.
             </label>
             <div class="invalid-feedback">
-                You need to agree to the EULA in order to proceed.
+                You need to agree to the privacy policy in order to proceed.
             </div>
         </div>
     </div>
@@ -118,4 +131,32 @@
     <button name="type" value="register" type="submit" class="btn btn-primary float-right btn-md">Sign up</button>
 
 </form>
-</div>
\ No newline at end of file
+</div>
+
+<script>
+    // Example starter JavaScript for disabling form submissions if there are invalid fields
+    (function () {
+        'use strict';
+        window.addEventListener('load', function () {
+            // Fetch all the forms we want to apply custom Bootstrap validation styles to
+            var forms = document.getElementsByClassName('needs-validation');
+            // Loop over them and prevent submission
+            var validation = Array.prototype.filter.call(forms, function (form) {
+                form.addEventListener('submit', function (event) {
+                    if (form.checkValidity() === false) {
+                        event.preventDefault();
+                        event.stopPropagation();
+                    }
+                    form.classList.add('was-validated');
+                }, false);
+            });
+        }, false);
+    })();
+        function validate_pw2(pw2) {
+            if (pw2.value !== $("#pw1").val()) {
+                pw2.setCustomValidity("Passwords do not match");
+            } else {
+                pw2.setCustomValidity(""); // is valid
+            }
+        }
+</script>
\ No newline at end of file
