diff --git a/src/apps/qcam/main.cpp b/src/apps/qcam/main.cpp
index 36cb93a53701..7e3f252e9f09 100644
--- a/src/apps/qcam/main.cpp
+++ b/src/apps/qcam/main.cpp
@@ -30,6 +30,7 @@ void signalHandler([[maybe_unused]] int signal)
 OptionsParser::Options parseOptions(int argc, char *argv[])
 {
 	StreamKeyValueParser streamKeyValue;
+	SensorKeyValueParser sensorKeyValue;
 
 	OptionsParser parser;
 	parser.addOption(OptCamera, OptionString,
@@ -42,6 +43,8 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
 			 "renderer", ArgumentRequired, "renderer");
 	parser.addOption(OptStream, &streamKeyValue,
 			 "Set configuration of a camera stream", "stream", true);
+	parser.addOption(OptSensorFmt, &sensorKeyValue,
+			 "Apply a format to the sensor", "sensor_format", true);
 	parser.addOption(OptVerbose, OptionNone,
 			 "Print verbose log messages", "verbose");
 
diff --git a/src/apps/qcam/main_window.cpp b/src/apps/qcam/main_window.cpp
index 0f16c038d516..e7511b4c7aa4 100644
--- a/src/apps/qcam/main_window.cpp
+++ b/src/apps/qcam/main_window.cpp
@@ -414,6 +414,13 @@ int MainWindow::startCapture()
 		return -EINVAL;
 	}
 
+	/* Apply a sensor configuration if requested. */
+	if (SensorKeyValueParser::updateConfiguration(config_.get(),
+						      options_[OptSensorFmt])) {
+		qWarning() << "Failed to apply sensor configuration";
+		return -EINVAL;
+	}
+
 	CameraConfiguration::Status validation = config_->validate();
 	if (validation == CameraConfiguration::Invalid) {
 		qWarning() << "Failed to create valid camera configuration";
diff --git a/src/apps/qcam/main_window.h b/src/apps/qcam/main_window.h
index 2e3e1b5c83c2..44646a87cfbf 100644
--- a/src/apps/qcam/main_window.h
+++ b/src/apps/qcam/main_window.h
@@ -42,6 +42,7 @@ enum {
 	OptHelp = 'h',
 	OptRenderer = 'r',
 	OptStream = 's',
+	OptSensorFmt = 'f',
 	OptVerbose = 'v',
 };
 
