diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp
index 029f518f7294..120917eb632d 100644
--- a/src/apps/cam/main.cpp
+++ b/src/apps/cam/main.cpp
@@ -126,6 +126,8 @@ int CamApp::parseOptions(int argc, char *argv[])
 			 ArgumentRequired, "camera", true);
 	parser.addOption(OptHelp, OptionNone, "Display this help message",
 			 "help");
+	parser.addOption(OptVersion, OptionNone, "Display libcamera version information",
+			 "version");
 	parser.addOption(OptInfo, OptionNone,
 			 "Display information about stream(s)", "info");
 	parser.addOption(OptList, OptionNone, "List all cameras", "list");
@@ -197,6 +199,12 @@ int CamApp::parseOptions(int argc, char *argv[])
 		return options_.empty() ? -EINVAL : -EINTR;
 	}
 
+	if (options_.isSet(OptVersion)) {
+		const std::string &version = CameraManager::version();
+		std::cout << "libcamera version " << version << std::endl;
+		return -EINTR;
+	}
+
 	return 0;
 }
 
diff --git a/src/apps/cam/main.h b/src/apps/cam/main.h
index 64e6a20e8668..9bec1e712dfb 100644
--- a/src/apps/cam/main.h
+++ b/src/apps/cam/main.h
@@ -20,6 +20,7 @@ enum {
 	OptOrientation = 'o',
 	OptSDL = 'S',
 	OptStream = 's',
+	OptVersion = 'v',
 	OptListControls = 256,
 	OptStrictFormats = 257,
 	OptMetadata = 258,
