diff --git a/lib/cli.js b/lib/cli.js
index dd0c9feb2..8129b668e 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -91,6 +91,12 @@ const FLAGS = {
 		description: 'Re-run tests when files change',
 		type: 'boolean',
 	},
+	'clear-screen': {
+		alias: 'C',
+		coerce: coerceLastValue,
+		description: 'Clears the screen before every test run',
+		type: 'boolean',
+	},
 };
 
 export default async function loadCli() { // eslint-disable-line complexity
@@ -465,6 +471,7 @@ export default async function loadCli() { // eslint-disable-line complexity
 			reportStream: process.stdout,
 			stdStream: process.stderr,
 			watching: argv.watch,
+			clearScreen: argv['clear-screen'],
 		});
 	}
 
diff --git a/lib/reporters/default.js b/lib/reporters/default.js
index a70f24e4e..14ec9e7f6 100644
--- a/lib/reporters/default.js
+++ b/lib/reporters/default.js
@@ -3,6 +3,7 @@ import path from 'node:path';
 import stream from 'node:stream';
 import {fileURLToPath} from 'node:url';
 
+import ansiEscapes from 'ansi-escapes';
 import figures from 'figures';
 import indentString from 'indent-string';
 import plur from 'plur';
@@ -73,12 +74,14 @@ export default class Reporter {
 		stdStream,
 		projectDir,
 		watching,
+		clearScreen,
 		durationThreshold,
 	}) {
 		this.extensions = extensions;
 		this.reportStream = reportStream;
 		this.stdStream = stdStream;
 		this.watching = watching;
+		this.clearScreen = clearScreen;
 		this.relativeFile = file => {
 			if (file.startsWith('file://')) {
 				file = fileURLToPath(file);
@@ -128,6 +131,10 @@ export default class Reporter {
 	}
 
 	startRun(plan) {
+		if (this.clearScreen) {
+			this.lineWriter.write(ansiEscapes.clearTerminal);
+		}
+
 		if (plan.bailWithoutReporting) {
 			return;
 		}