diff --git a/src/VmaReplay/VmaReplay.cpp b/src/VmaReplay/VmaReplay.cpp
index dfe84c3..cf3a1b3 100644
--- a/src/VmaReplay/VmaReplay.cpp
+++ b/src/VmaReplay/VmaReplay.cpp
@@ -36,6 +36,7 @@
     CMD_LINE_OPT_ITERATIONS,
     CMD_LINE_OPT_LINES,
     CMD_LINE_OPT_PHYSICAL_DEVICE,
+    CMD_LINE_OPT_USER_DATA,
 };
 
 static enum class VERBOSITY
@@ -103,6 +104,7 @@
 static size_t g_IterationCount = 1;
 static uint32_t g_PhysicalDeviceIndex = 0;
 static RangeSequence<size_t> g_LineRanges;
+static bool g_UserDataEnabled = true;
 
 static bool ValidateFileVersion()
 {
@@ -1088,6 +1090,12 @@
 
 bool Player::PrepareUserData(size_t lineNumber, uint32_t allocCreateFlags, const StrRange& userDataColumn, const StrRange& wholeLine, void*& outUserData)
 {
+    if(!g_UserDataEnabled)
+    {
+        outUserData = nullptr;
+        return true;
+    }
+
     // String
     if((allocCreateFlags & VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT) != 0)
     {
@@ -1241,6 +1249,11 @@
 {
     m_Stats.RegisterFunctionCall(VMA_FUNCTION::SetAllocationUserData);
 
+    if(!g_UserDataEnabled)
+    {
+        return;
+    }
+
     if(ValidateFunctionParameterCount(lineNumber, csvSplit, 2, true))
     {
         uint64_t origPtr = 0;
@@ -1910,7 +1923,7 @@
         "Command line syntax:\n"
         "    VmaReplay [Options] <SrcFile.csv>\n"
         "Available options:\n"
-        "    -v <Level> - Verbosity level:\n"
+        "    -v <Number> - Verbosity level:\n"
         "        0 - Minimum verbosity. Prints only warnings and errors.\n"
         "        1 - Default verbosity. Prints important messages and statistics.\n"
         "        2 - Maximum verbosity. Prints a lot of information.\n"
@@ -1919,6 +1932,8 @@
         "    --Lines <Ranges> - Replay only limited set of lines from file\n"
         "        Ranges is comma-separated list of ranges, e.g. \"-10,15,18-25,31-\".\n"
         "    --PhysicalDevice <Index> - Choice of Vulkan physical device. Default: 0.\n"
+        "    --UserData <Value> - 0 to disable or 1 to enable setting pUserData during playback.\n"
+        "        Default is 1. Affects both creation of buffers and images, as well as calls to vmaSetAllocationUserData.\n"
     );
 }
 
@@ -2074,6 +2089,7 @@
     cmdLineParser.RegisterOpt(CMD_LINE_OPT_ITERATIONS, 'i', true);
     cmdLineParser.RegisterOpt(CMD_LINE_OPT_LINES, "Lines", true);
     cmdLineParser.RegisterOpt(CMD_LINE_OPT_PHYSICAL_DEVICE, "PhysicalDevice", true);
+    cmdLineParser.RegisterOpt(CMD_LINE_OPT_USER_DATA, "UserData", true);
 
     CmdLineParser::RESULT res;
     while((res = cmdLineParser.ReadNext()) != CmdLineParser::RESULT_END)
@@ -2119,6 +2135,13 @@
                     return RESULT_ERROR_COMMAND_LINE;
                 }
                 break;
+            case CMD_LINE_OPT_USER_DATA:
+                if(!StrRangeToBool(StrRange(cmdLineParser.GetParameter()), g_UserDataEnabled))
+                {
+                    PrintCommandLineSyntax();
+                    return RESULT_ERROR_COMMAND_LINE;
+                }
+                break;
             default:
                 assert(0);
             }
