diff --git a/minetest.conf.example b/minetest.conf.example
index aef82c3ad8e4ee53de3146d801b863dd5e87f94e..7029f591e191bc5fef20e44954e17170dc973514 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -388,6 +388,12 @@
 #        "log"    = mimic and log backtrace of deprecated call (default for debug).
 #        "error"  = abort on usage of deprecated call (suggested for mod developers).
 #deprecated_lua_api_handling = legacy
+
+#kick_msg_shutdown = Server shutting down.
+#    A message to be displayed to all clients when the server shuts down
+#kick_msg_crash = This server has experienced an internal error. You will now be disconnected.
+#    A message to be displayed to all clients when the server crashes
+
 #    Mod profiler
 #mod_profiling = false
 #    Detailed mod profile data
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index da5dcae94c96353c8220a08340c92b741fec15d9..8df0fbbd806e5e909b90b2cff420e08ec24d62a3 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -252,6 +252,9 @@ void set_default_settings(Settings *settings)
 	settings->setDefault("deprecated_lua_api_handling", "log");
 #endif
 
+	settings->setDefault("kick_msg_shutdown", "Server shutting down.");
+	settings->setDefault("kick_msg_crash", "This server has experienced an internal error. You will now be disconnected.");
+
 	settings->setDefault("profiler_print_interval", "0");
 	settings->setDefault("enable_mapgen_debug_info", "false");
 	settings->setDefault("active_object_send_range_blocks", "3");
diff --git a/src/environment.cpp b/src/environment.cpp
index cad1f298bded3f0b92627b930154b52f17824aa2..d22982b688f789a99f4ad8891943aaedf64037da 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -428,10 +428,11 @@ bool ServerEnvironment::line_of_sight(v3f pos1, v3f pos2, float stepsize, v3s16
 
 void ServerEnvironment::kickAllPlayers(const std::string &reason)
 {
+	std::wstring wreason = utf8_to_wide(reason);
 	for (std::vector<Player*>::iterator it = m_players.begin();
 			it != m_players.end();
 			++it) {
-		((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, utf8_to_wide(reason));
+		((Server*)m_gamedef)->DenyAccess_Legacy((*it)->peer_id, wreason);
 	}
 }
 
diff --git a/src/server.cpp b/src/server.cpp
index 0cad82613307dfa2f2d464a8d51573d2a644cddf..2d6de1c9db0c8d38007cd6acde10e4784e244497 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -397,8 +397,8 @@ Server::~Server()
 		infostream << "Server: Saving players" << std::endl;
 		m_env->saveLoadedPlayers();
 
-		infostream << "Server: kick players" << std::endl;
-		m_env->kickAllPlayers("Server shutting down...");
+		infostream << "Server: Kicking players" << std::endl;
+		m_env->kickAllPlayers(g_settings->get("kick_msg_shutdown"));
 
 		infostream << "Server: Saving environment metadata" << std::endl;
 		m_env->saveMeta();
@@ -502,7 +502,7 @@ void Server::step(float dtime)
 			throw ServerError(async_err);
 		}
 		else {
-			m_env->kickAllPlayers("The server has crashed. Disconnecting all players. Please reconnect soon...");
+			m_env->kickAllPlayers(g_settings->get("kick_msg_crash"));
 			errorstream << "UNRECOVERABLE error occurred. Stopping server. "
 					<< "Please fix the following error:" << std::endl
 					<< async_err << std::endl;