diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index e1f038ad4996381ab3c6b6880798945b372b4741..323fee4751bc1d0a432e6c36bc898ec35862ffa7 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -861,6 +861,7 @@ void D_RegisterClientCommands(void)
 	CV_RegisterVar(&cv_chatnotifications);
 	CV_RegisterVar(&cv_chatbacktint);
 	CV_RegisterVar(&cv_songcredits);
+	CV_RegisterVar(&cv_showviewpoint);
 	//CV_RegisterVar(&cv_crosshair);
 	//CV_RegisterVar(&cv_crosshair2);
 	//CV_RegisterVar(&cv_crosshair3);
diff --git a/src/g_game.c b/src/g_game.c
index 33d8848185e2ced907429b81edaf890c5ed64582..98c0e9ad7d489aa16eb47fda5d79a8cd65b41cf1 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -450,6 +450,9 @@ consvar_t cv_pauseifunfocused = {"pauseifunfocused", "Yes", CV_SAVE, CV_YesNo, N
 // Display song credits
 consvar_t cv_songcredits = {"songcredits", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
 
+// Show "VIEWPOINT:" annonation on HUD
+consvar_t cv_showviewpoint = {"showviewpoint", "Yes", CV_SAVE, CV_YesNo, };
+
 /*consvar_t cv_crosshair = {"crosshair", "Off", CV_SAVE, crosshair_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 consvar_t cv_crosshair2 = {"crosshair2", "Off", CV_SAVE, crosshair_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 consvar_t cv_crosshair3 = {"crosshair3", "Off", CV_SAVE, crosshair_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
diff --git a/src/g_game.h b/src/g_game.h
index a8629b6bac202e26d904516dd9ef0925091b4c7a..abcae629958e76639e5bf0b4cce64d7ed128b183 100644
--- a/src/g_game.h
+++ b/src/g_game.h
@@ -106,6 +106,7 @@ extern INT16 rw_maximums[NUM_WEAPONS];
 // used in game menu
 extern consvar_t cv_chatwidth, cv_chatnotifications, cv_chatheight, cv_chattime, cv_consolechat, cv_chatbacktint, cv_chatspamprotection/*, cv_compactscoreboard*/;
 extern consvar_t cv_songcredits;
+extern consvar_t cv_showviewpoint;
 extern consvar_t cv_pauseifunfocused;
 //extern consvar_t cv_crosshair, cv_crosshair2, cv_crosshair3, cv_crosshair4;
 extern consvar_t cv_invertmouse/*, cv_alwaysfreelook, cv_chasefreelook, cv_mousemove*/;
diff --git a/src/m_menu.c b/src/m_menu.c
index 97b1ce9b5c1bee155f1e1f08db2911a68503113d..245c01485f71c89396f3e606fcf4c96bf279174b 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -1447,6 +1447,8 @@ static menuitem_t OP_HUDOptionsMenu[] =
 	{IT_STRING | IT_CVAR, NULL,	"Console Text Size",		&cv_constextsize,		120},
 
 	{IT_STRING | IT_CVAR, NULL,   "Show \"FOCUS LOST\"",  &cv_showfocuslost,   135},
+
+	{IT_STRING | IT_CVAR, NULL,   "Show Viewpoint In Replays", &cv_showviewpoint, 150},
 };
 
 // Ok it's still called chatoptions but we'll put ping display in here to be clean
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 50bac3eef07eea974aee42d1561d7e662dbaf29d..a960ab2e491a9f59dc00605be664a242479b36b4 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -1907,7 +1907,7 @@ static void ST_overlayDrawer(void)
 				V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_ALLOWLOWERCASE, player_names[stplyr-players]);
 			}
 		}
-		else if (!demo.title)
+		else if (!demo.title && cv_showviewpoint.value)
 		{
 
 			if (!splitscreen)