The video file is the easy part. A 9:16 MP4 with H.264 video and AAC audio is accepted by every destination in the stack, so one export usually serves all ten.
Everything around the file is where the differences live, and several of those differences cause silent failures: uploads that succeed, look fine, and get no distribution.
The universal baseline
Start here and the file works everywhere in the stack:
- Container: MP4
- Video codec: H.264
- Audio codec: AAC
- Aspect ratio: 9:16, native
- Resolution: 1080 by 1920
- Frame rate: 30fps, matching your source rather than interpolated
Nothing exotic. The failures in this stack come from framing and metadata, not from codecs.
Aspect ratio, and the letterboxing trap
9:16 native, always. This deserves emphasis because it is the mistake with the widest blast radius.
A 16:9 clip with black bars added top and bottom is technically 9:16. It also looks instantly reposted, and most of the screen is black, so viewers swipe past it. Nothing fails, the clip just quietly gets no reach, which makes the problem very hard to diagnose from the outside.
Crop into vertical instead. If the subject moves, the crop should follow rather than sitting centred and losing them.
The safe zone
Every feed platform overlays interface elements on the video: the handle, the caption, action buttons down one side, a progress bar at the bottom.
Keep important content inside the middle 80 percent vertically and away from the right edge. Anything in the bottom 15 percent will be covered on several destinations simultaneously, so burned-in captions belong in the middle third rather than at the bottom where video convention puts them.
Length, which genuinely differs
This is the specification that varies most, and getting it wrong costs more than any codec choice.
Short-form feeds: 15 to 30 seconds. Completion rate is the dominant ranking signal. A twenty-second clip that gets finished outperforms a forty-five second clip that is better but gets abandoned. On FikFap in particular, shorter reliably beats longer.
Video platforms: 30 to 60 seconds. These weight watch time as well as completion, so there is real room to be longer. Pornhub and xHamster both treat a forty-second clip as a proper video rather than a fragment.
Loop platforms: as short as the moment allows. RedGIFs wants loop length, not story length. This is the shortest format in the stack, and clips whose last frame matches their first play as an endless loop and accumulate replays.
Community platforms: flexible. Xfree, Sharesome and XXXFollow are tolerant, because reach comes from your audience rather than from a completion-rate algorithm.
When in doubt, cut shorter. The downside of too short is small; the downside of too long is a clip most viewers never finish, on more than half the stack.
Audio: assume nobody hears it
Most playback across these destinations is muted by default, and on the loop platforms, embedded playback on third-party sites is muted in a way you cannot influence at all.
Include audio, because some viewers unmute and silent files look broken. But every clip must work with the sound off. If the hook is something said out loud, burn it in as text, placed in the middle third where the interface will not cover it.
Metadata, where the real per-platform work is
The file is portable. The metadata is not, and this is where a single paste-everywhere approach fails on most of the stack:
- Free-text tags, typed individually. Pornhub, EroMe, RedGIFs, XXXFollow.
- Fixed catalogue, selected not typed. FikFap. Its hashtags come from its own list, and WizeClip picks the one that matches the clip.
- Hashtags as rooms. Sharesome. A hashtag takes the post to a community, and WizeClip puts hashtags on every post.
- No tag field at all. Waptap. Three hashtags go inline in the description or nowhere.
- Categories from a list. Pornhub and xHamster each keep their own, and WizeClip chooses from it for every clip.
- A second taxonomy. RedGIFs has Niches alongside tags, and niches are what actually drive placement.
- Tag caps. EroMe stops at ten, so tag selection has to be deliberate rather than exhaustive.
Caption lengths vary just as much, from a short title field to TikPorn's long description box. A caption written for the shortest field wastes the longest one; a caption written for the longest gets truncated in the shortest. Writing titles and tags covers how to handle both ends.
File size and encoding in practice
Nobody in this stack imposes a file size limit you are likely to hit with a thirty-second vertical clip. A 1080x1920 H.264 export at a sensible bitrate lands somewhere between 4 and 15 MB, which every destination accepts comfortably.
What does cause trouble is over-compression. Several platforms re-encode on upload, so a clip you already compressed hard gets compressed again, and the second pass is where visible artefacts appear. Export at a higher bitrate than feels necessary and let the platform do its own reduction; you cannot control their encoder, only what you hand it.
Variable frame rate is the other avoidable problem. Screen and stream recordings frequently produce VFR files, and several upload pipelines handle them badly, producing audio drift or clips that report the wrong duration. Normalise to constant frame rate on export.
Thumbnails
Most destinations sample a frame automatically, usually near the start. That makes your opening frame a thumbnail whether you designed it as one or not, which is another argument for opening on motion rather than on a held shot.
Xfree is the exception: it offers a thumbnail selection step of its own. It is the only place in the stack where you get a real choice, so it is worth taking rather than accepting the default frame.
A pre-publish checklist
- 9:16 native, no letterboxing
- Important content inside the middle 80 percent, clear of the bottom 15
- Length matched to destination type, shorter when uncertain
- Reads correctly with sound off
- Opening frame works as a thumbnail
- Metadata generated per destination, not pasted across them
- A tracking link on the profile for that channel
The first five are export settings you set once. The last two are per-upload work that multiplies by ten every time you add a destination, which is the whole reason the comparison pages treat distribution as a separate capability from clipping.