diff --git a/CHANGELOG.md b/CHANGELOG.md
index ff25efb34be031a7257675ac810bb111201bdac3..2dd5ba87f739f982931af2493d9615d96b9b4961 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # CoCOTS Changelog
 
+## v0.1.6
+
+* Better website validation.
+
 ## v0.1.5
 
 * Website: min length to 2, and authorize - and _.
diff --git a/htdocs/lib/forms/creation.php b/htdocs/lib/forms/creation.php
index 73d7dd1a87958713bc97cafca421b1f9cb2886df..b178ce3eeaaa7c4c24dea18870d592fd4f3bcfdd 100644
--- a/htdocs/lib/forms/creation.php
+++ b/htdocs/lib/forms/creation.php
@@ -22,7 +22,7 @@ class CreationForm extends Form {
       'required' => true,
       'label' => $this->app->loc->translateSafe('website_name'),
       'placeholder' => true,
-      'pattern' => '[a-z0-9_-]{2,40}',
+      'pattern' => '[a-z0-9][a-z0-9-]{1,40}',
       'title' => $this->app->loc->translateSafe('website_name_constraints'),
       'aria-label' => $this->app->loc->translateSafe('website_name_constraints')
     ));
@@ -106,6 +106,12 @@ class CreationForm extends Form {
 
     $name = $this->fields['website_name']->getValue();
 
+    $tmpurl = $name . '.example.com';
+    if (!filter_var($tmpurl, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
+      $this->fields['website_name']->addErrorCode('error_website_name_invalid');
+      return false;
+    }
+
     if (defined('COCOTS_RESERVED_NAMES') && is_array(COCOTS_RESERVED_NAMES)) {
       if (in_array($name, COCOTS_RESERVED_NAMES)) {
         $this->fields['website_name']->addErrorCode('error_website_name_already_exists');
diff --git a/htdocs/translations/en.lang b/htdocs/translations/en.lang
index 5c0207d8e78af9b9208214abd636696036892a4c..5ac10a55ef9c2e91968cccd173c89111a7d28008 100644
--- a/htdocs/translations/en.lang
+++ b/htdocs/translations/en.lang
@@ -18,7 +18,7 @@ website_plugin_2 = Plugin 2
 website_plugin_3 = Plugin 3
 website_plugin_4 = Plugin 4
 
-website_name_constraints = 3 to 40 lowercase alphanumeric characters
+website_name_constraints = 2 to 40 lowercase alphanumeric characters
 error_field_required = This field is mandatory
 error_field_pattern = Invalid value
 error_field_maxlength = Value too long
diff --git a/htdocs/translations/fr.lang b/htdocs/translations/fr.lang
index ec7a7cb11c7693e8c5d26ea0db4e04e1052c87c9..f2a251a081d5e93083661c054786985da1768912 100644
--- a/htdocs/translations/fr.lang
+++ b/htdocs/translations/fr.lang
@@ -18,7 +18,7 @@ website_plugin_2 = Plugin 2
 website_plugin_3 = Plugin 3
 website_plugin_4 = Plugin 4
 
-website_name_constraints = 3 à 40 caractères alphanumériques minuscules
+website_name_constraints = 2 à 40 caractères alphanumériques minuscules
 error_field_required = Ce champ est requis
 error_field_pattern = Valeur invalide
 error_field_maxlength = Valeur trop longue