diff --git a/integrations/signup_test.go b/integrations/signup_test.go
index 325c90632..e122efa39 100644
--- a/integrations/signup_test.go
+++ b/integrations/signup_test.go
@@ -19,8 +19,8 @@ func TestSignup(t *testing.T) {
 	req := NewRequestWithValues(t, "POST", "/user/sign_up", map[string]string{
 		"user_name": "exampleUser",
 		"email":     "exampleUser@example.com",
-		"password":  "examplePassword",
-		"retype":    "examplePassword",
+		"password":  "examplePassword!1",
+		"retype":    "examplePassword!1",
 	})
 	MakeRequest(t, req, http.StatusFound)
 
diff --git a/routers/user/auth.go b/routers/user/auth.go
index 82a508e4d..b328ac094 100644
--- a/routers/user/auth.go
+++ b/routers/user/auth.go
@@ -1070,6 +1070,11 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
 		ctx.RenderWithErr(ctx.Tr("auth.password_too_short", setting.MinPasswordLength), tplSignUp, &form)
 		return
 	}
+	if !password.IsComplexEnough(form.Password) {
+		ctx.Data["Err_Password"] = true
+		ctx.RenderWithErr(ctx.Tr("form.password_complexity"), tplSignUp, &form)
+		return
+	}
 
 	u := &models.User{
 		Name:     form.UserName,