diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 7dff123170c6097975d73ff85fac1b81ac94c36d..e940d4b6db47ee90aa0045649749118be6d51e89 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -848,6 +848,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 10bd76acceb218d840142514f0596d2aedb9b9e5..efb939046cd9e869bc17cb8eeef0398c0d2b627a 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 a69f91421db3c18a67b0d0456f2d926cf5a16e6c..d5128a67d228b7074956b4384456ad512dd6acf0 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 9b5e98e4420d2f043d7c173c982c3bb50badf6a0..757c2f344cac6fefa690ceaa9dd82b286cf6bf18 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)