diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 3696dd974c8ea8fdab4b5e4544062a0eb5c8921a..0d174548c4d4f31a4679e78b0e3c406c43907009 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -1452,7 +1452,12 @@ static void Command_Playdemo_f(void)
 
 	CONS_Printf(M_GetText("Playing back demo '%s'.\n"), name);
 
-	G_DoPlayDemo(name);
+	// Internal if no extension, external if one exists
+	// If external, convert the file name to a path in SRB2's home directory
+	if (FIL_CheckExtension(name))
+		G_DoPlayDemo(va("%s"PATHSEP"%s", srb2home, name))
+	else
+		G_DoPlayDemo(name);
 }
 
 static void Command_Timedemo_f(void)