diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index 3aa946d..fae9ec8 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -2328,6 +2328,44 @@ irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
 }
 
 /*
+ * Sends a kick reason to a channel.
+ */
+
+void
+irc_command_kick_channel (struct t_irc_server *server,
+                          struct t_irc_channel *channel, const char *channel_name,
+                          const char *nick_name, const char *kick_message)
+{
+    const char *ptr_arg, *msg_kick;
+    char *cmd_vars_replaced;
+
+    msg_kick = IRC_SERVER_OPTION_STRING(server,
+                                        IRC_SERVER_OPTION_DEFAULT_MSG_KICK);
+    ptr_arg = (kick_message) ? kick_message :
+        ((msg_kick && msg_kick[0]) ? msg_kick : NULL);
+
+    if (ptr_arg)
+    {
+        cmd_vars_replaced = irc_message_replace_vars (server,
+                                                      channel,
+                                                      ptr_arg);
+
+        irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
+                          "KICK %s %s :%s",
+                          channel_name, nick_name, cmd_vars_replaced);
+
+        if (cmd_vars_replaced)
+            free (cmd_vars_replaced);
+    }
+    else
+    {
+        irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
+                          "KICK %s %s",
+                          channel_name, nick_name);
+    }
+}
+
+/*
  * Callback for command "/kick": forcibly removes a user from a channel.
  */
 
@@ -2379,18 +2417,8 @@ irc_command_kick (void *data, struct t_gui_buffer *buffer, int argc,
             }
         }
 
-        if (pos_comment)
-        {
-            irc_server_sendf (ptr_server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
-                              "KICK %s %s :%s",
-                              pos_channel, pos_nick, pos_comment);
-        }
-        else
-        {
-            irc_server_sendf (ptr_server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
-                              "KICK %s %s",
-                              pos_channel, pos_nick);
-        }
+        irc_command_kick_channel (ptr_server, ptr_channel, pos_channel, pos_nick, pos_comment);
+
     }
     else
     {
@@ -2499,12 +2527,7 @@ irc_command_kickban (void *data, struct t_gui_buffer *buffer, int argc,
             }
 
             /* kick nick */
-            irc_server_sendf (ptr_server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL,
-                              "KICK %s %s%s%s",
-                              pos_channel,
-                              nick_only,
-                              (pos_comment) ? " :" : "",
-                              (pos_comment) ? pos_comment : "");
+            irc_command_kick_channel (ptr_server, ptr_channel, pos_channel, nick_only, pos_comment);
             free (nick_only);
         }
     }
@@ -5958,14 +5981,17 @@ irc_command_init ()
                           N_("[<channel>] <nick> [<reason>]"),
                           N_("channel: channel where user is\n"
                              "   nick: nick to kick\n"
-                             " reason: reason for kick"),
+                             " reason: reason for kick (special variables "
+                             "$nick, $channel and $server are replaced by their "
+                             "value)"),
                           "%(nicks) %-", &irc_command_kick, NULL);
     weechat_hook_command ("kickban",
                           N_("kicks and bans a nick from a channel"),
                           N_("[<channel>] <nick> [<reason>]"),
                           N_("channel: channel where user is\n"
                              "   nick: nick to kick and ban\n"
-                             " reason: reason for kick\n\n"
+                             " reason: reason for kick (special variables "
+                             "$nick, $channel and $channel are replaced by their value)\n\n"
                              "It is possible to kick/ban with a mask, nick "
                              "will be extracted from mask and replaced by "
                              "\"*\".\n\n"
diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c
index 6ee8cc9..50c8604 100644
--- a/src/plugins/irc/irc-config.c
+++ b/src/plugins/irc/irc-config.c
@@ -1881,6 +1881,21 @@ irc_config_server_new_option (struct t_config_file *config_file,
                 callback_change, callback_change_data,
                 NULL, NULL);
             break;
+        case IRC_SERVER_OPTION_DEFAULT_MSG_KICK:
+            new_option = weechat_config_new_option (
+                config_file, section,
+                option_name, "string",
+                N_("default kick message (forcibly removes a user from a channel). This "
+                   "option will be used for \"/kick\" and \"/kickban\" "
+                   "(special variables $nick, $channel and $server are replaced "
+                   "by their value) "),
+                NULL, 0, 0,
+                default_value, value,
+                null_value_allowed,
+                callback_check_value, callback_check_value_data,
+                callback_change, callback_change_data,
+                NULL, NULL);
+            break;
         case IRC_SERVER_OPTION_DEFAULT_MSG_PART:
             new_option = weechat_config_new_option (
                 config_file, section,
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index 5cecbbc..f6fea27 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -77,7 +77,7 @@ char *irc_server_option_string[IRC_SERVER_NUM_OPTIONS] =
   "connection_timeout",
   "anti_flood_prio_high", "anti_flood_prio_low",
   "away_check", "away_check_max_nicks",
-  "default_msg_part", "default_msg_quit",
+  "default_msg_kick","default_msg_part", "default_msg_quit",
   "notify",
 };
 
@@ -92,7 +92,7 @@ char *irc_server_option_default[IRC_SERVER_NUM_OPTIONS] =
   "60",
   "2", "2",
   "0", "25",
-  "WeeChat %v", "WeeChat %v",
+  "","WeeChat %v", "WeeChat %v",
   "",
 };
 
@@ -4726,6 +4726,9 @@ irc_server_add_to_infolist (struct t_infolist *infolist,
     if (!weechat_infolist_new_var_integer (ptr_item, "away_check_max_nicks",
                                            IRC_SERVER_OPTION_INTEGER(server, IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS)))
         return 0;
+    if (!weechat_infolist_new_var_string (ptr_item, "default_msg_kick",
+                                          IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_MSG_KICK)))
+        return 0;
     if (!weechat_infolist_new_var_string (ptr_item, "default_msg_part",
                                           IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_MSG_PART)))
         return 0;
@@ -5040,6 +5043,13 @@ irc_server_print_log ()
         else
             weechat_log_printf ("  away_check_max_nicks : %d",
                                 weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS]));
+        /* default_msg_kick */
+        if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_DEFAULT_MSG_KICK]))
+            weechat_log_printf ("  default_msg_kick . . : null ('%s')",
+                                IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_DEFAULT_MSG_KICK));
+        else
+            weechat_log_printf ("  default_msg_kick . . : '%s'",
+                                weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_DEFAULT_MSG_KICK]));
         /* default_msg_part */
         if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_DEFAULT_MSG_PART]))
             weechat_log_printf ("  default_msg_part . . : null ('%s')",
diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h
index 0f746dd..27fd222 100644
--- a/src/plugins/irc/irc-server.h
+++ b/src/plugins/irc/irc-server.h
@@ -65,6 +65,7 @@ enum t_irc_server_option
     IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_LOW,  /* anti-flood (low priority)     */
     IRC_SERVER_OPTION_AWAY_CHECK,           /* delay between away checks     */
     IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS, /* max nicks for away check      */
+    IRC_SERVER_OPTION_DEFAULT_MSG_KICK,     /* default kick message          */
     IRC_SERVER_OPTION_DEFAULT_MSG_PART,     /* default part message          */
     IRC_SERVER_OPTION_DEFAULT_MSG_QUIT,     /* default quit message          */
     IRC_SERVER_OPTION_NOTIFY,               /* notify list                   */
