diff --git a/main.js b/main.js
index 362240c..3167af9 100644
--- a/main.js
+++ b/main.js
@@ -319,7 +319,10 @@ function transcodeToMp4(input, output, opts) {
// Rescale/crop needed (e.g. vertical reels) or non-H264 fallback source.
// Post-processing, not realtime: spend encode time on quality. -r 60
// turns the recorder's variable frame timing into constant fps.
- const vf = `scale=${w}:${h}:force_original_aspect_ratio=increase,crop=${w}:${h}`;
+ // cropX 0..1 picks WHICH strip survives the cover-crop (0.5 = centre).
+ const p = Math.max(0, Math.min(1, (opts && opts.cropX != null) ? opts.cropX : 0.5));
+ const vf = `scale=${w}:${h}:force_original_aspect_ratio=increase,` +
+ `crop=${w}:${h}:(iw-ow)*${p.toFixed(3)}:(ih-oh)*${p.toFixed(3)}`;
args.push('-vf', vf, '-r', '60',
'-c:v', 'libx264', '-preset', 'slow', '-crf', '16', '-pix_fmt', 'yuv420p',
'-c:a', 'aac', '-b:a', '256k');
diff --git a/src/control.html b/src/control.html
index a2572a3..c61c032 100644
--- a/src/control.html
+++ b/src/control.html
@@ -427,6 +427,11 @@
+
+
+