diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 497864fac5669d99808c600bd6d8ad3a91d3b47c..119e69f6fbceaf6cb671255cca90d0c7354ca0f9 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -2448,6 +2448,7 @@ These functions return the leftover itemstack.
 * `minetest.request_shutdown([message],[reconnect])`: request for server shutdown. Will display `message` to clients,
     and `reconnect` == true displays a reconnect button.
 * `minetest.get_server_status()`: returns server status string
+* `minetest.get_server_uptime()`: returns the server uptime in seconds
 
 ### Bans
 * `minetest.get_ban_list()`: returns the ban list (same as `minetest.get_ban_description("")`)
diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp
index 95e5da07f03ee2249f746b6fa7fb621d9aa13b29..b6d44e0ff5251a98e64f999f59d8fe35c4366001 100644
--- a/src/script/lua_api/l_server.cpp
+++ b/src/script/lua_api/l_server.cpp
@@ -45,6 +45,15 @@ int ModApiServer::l_get_server_status(lua_State *L)
 	return 1;
 }
 
+// get_server_uptime()
+int ModApiServer::l_get_server_uptime(lua_State *L)
+{
+	NO_MAP_LOCK_REQUIRED;
+	lua_pushnumber(L, getServer(L)->getUptime());
+	return 1;
+}
+
+
 // print(text)
 int ModApiServer::l_print(lua_State *L)
 {
@@ -507,6 +516,7 @@ void ModApiServer::Initialize(lua_State *L, int top)
 {
 	API_FCT(request_shutdown);
 	API_FCT(get_server_status);
+	API_FCT(get_server_uptime);
 	API_FCT(get_worldpath);
 	API_FCT(is_singleplayer);
 
diff --git a/src/script/lua_api/l_server.h b/src/script/lua_api/l_server.h
index 06a5ddc24d23a66e229864f0d1722c770d20b314..1ad46d44048f994edd61e8c5903a407055f7b316 100644
--- a/src/script/lua_api/l_server.h
+++ b/src/script/lua_api/l_server.h
@@ -30,6 +30,9 @@ class ModApiServer : public ModApiBase {
 	// get_server_status()
 	static int l_get_server_status(lua_State *L);
 
+	// get_server_uptime()
+	static int l_get_server_uptime(lua_State *L);
+
 	// get_worldpath()
 	static int l_get_worldpath(lua_State *L);
 
diff --git a/src/server.h b/src/server.h
index 5fc2a913369d607a27101a40dcae9726c5972fc3..f8b3ec106484035cb354179e2f593a4c57d097b2 100644
--- a/src/server.h
+++ b/src/server.h
@@ -216,6 +216,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
 
 	// Connection must be locked when called
 	std::wstring getStatusString();
+	inline double getUptime() const { return m_uptime.m_value; }
 
 	// read shutdown state
 	inline bool getShutdownRequested() const { return m_shutdown_requested; }