Why the shorter video loops rather than freezing
Two videos put side by side are almost never the same length, and there are only three honest things to do about it: cut the result short at the shorter one, hold its last frame for the remainder, or start it again. The [msm_tool slug="video-split-screen"] restarts it. The output runs for as long as the longer video, and the shorter one plays from its own beginning as many times as it takes to fill that length, so neither half of the frame ever goes still while the other is still moving. A frozen half reads as a fault in the file; a looping half reads as a choice.
Both videos are read in step, one frame at a time
Nothing is joined here. Each frame of the result is drawn by seeking both sources to the point they should be at for that moment, compositing them into a single canvas, and encoding that canvas as one frame. Where a source is looping, the point it seeks to is its own position within the current repeat rather than the elapsed time of the output. That is why the two never drift apart no matter how many times the shorter one comes round.
The diagonal split is always filled and cropped
The two split layouts that divide the frame in half — stacked and side by side — offer a choice of how each video fits its half: filled and cropped, fitted with bars, or fitted with an enlarged blurred copy of the same frame filling the space so nothing is cut and nothing is left black.
The diagonal offers no such choice, and the reason is geometric. A triangle has no sensible letterbox: bars drawn inside a corner-to-corner shape land at an angle and look like damage rather than framing. So each side of a diagonal is filled and cropped to reach every edge of its own triangle, and a thin line is drawn along the join so the division reads as deliberate. Both directions are available, corner to corner either way.
The overlay keeps its own shape, and its own control
In the picture-in-picture layout one video fills the frame and the other sits in a corner at a chosen size, the way a video call shows a second speaker. The small one is filled and cropped into its box rather than squashed to fit it, and a border is drawn around it — an unbordered inset over busy footage reads as a glitch rather than a second video.
This layout has its own control for which video is the main one, so the swap used by the split layouts is deliberately ignored while it is active. A swap toggled earlier has no visible button to undo it here, and silently reversing main and overlay on the strength of a setting that is no longer on screen would be a bad surprise.
Sound comes from one place, never both mixed
Either video's original sound can be kept, the result can be muted, or a music track can replace the audio entirely. Mixing both videos' audio together is not offered. Two unrelated recordings summed into one track produce speech over speech, and there is no volume balance that rescues that — the useful version of this feature is choosing, not blending.
Whichever original is chosen is decoded once at full length and then looped by wrapping the sample position, matching what the picture from that same source is doing. Replacement music that reaches the end of the output is faded out over the last second and a half rather than being cut off mid-note.
A thumbnail is real frames, and real silence
A thumbnail image is held as actual encoded frames at the front of the file for the chosen number of seconds, because a still stored as container metadata is ignored by most places a video ends up. That hold is genuinely silent: the audio track is written with the same length of silence before the chosen sound starts, so what plays stays lined up with what is on screen instead of starting early by exactly the length of the thumbnail.
Captions are timed against the finished video
Captions are drawn over the composited frame, on top of whichever layout is in use, rather than belonging to either source individually. Their timings run against the finished output's own clock — including any thumbnail hold at the front — not against the timeline of either video that went into it. An outline is drawn behind the text whether or not a dark band is switched on, since text relying on fill colour alone disappears the moment the footage behind it turns pale.
Where the sound can go missing
MP4 audio needs the AAC codec, which Firefox cannot encode on any platform and no browser can encode on desktop Linux. The page says so before anything starts. Chrome, Edge and Safari keep the audio.