Etsy Listing Video Requirements: 15 Seconds, No Audio, One Encode

Etsy video requirements are 5 to 15 seconds of runtime, a maximum file size of 100 MB, an aspect ratio between 2:1 and 1:2, at least 500 pixels on the short side with 1080p preferred, and no audio at all: Etsy strips the audio track on upload and plays listing videos muted. You get two videos per listing. A video longer than 15 seconds is clipped, not rejected, according to Etsy's own help page. So the working path is one re-encode per clip: seek to the window, hold 15 seconds, drop the audio, scale into the ratio band.
The clipping is what costs sellers money. A 30-second upload throws no error. Etsy keeps the front, and your reveal, the shot where the lid actually seats or the glaze catches the light, is gone. The listing just quietly ends mid-motion.
One master, two legal clips
One product master you already shot turns into two files Etsy accepts without mutating them: each between 5 and 15 seconds, H.264 in an MP4 container, no audio stream at all, 1080p on the long side, and a width-to-height ratio between 0.5 and 2.0. Two files, because Etsy allows two videos per listing and the second slot is free evidence most sellers leave empty.
Trimming one clip in an editor is fine. At 20 listings the editor is the bottleneck, and at 200 it's the whole job.
Three numbers to read off the master before you cut
Pull the dimensions, frame rate and bitrate off your master first, because two of Etsy's rules are decided by the source, not by your trim. One ffprobe call tells you everything:
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height,r_frame_rate,duration,bit_rate \
-of default=noprint_wrappers=1 master.mov
Divide width by height. That number has to land between 0.5 (Etsy's 1:2) and 2.0 (Etsy's 2:1). Etsy's help page words the rule as "2:1 or 1:2", and the band between the two is the only reading that makes sense of the 500-pixel minimum sitting next to it.
A 9:16 vertical master is legal on Etsy, which runs against the usual assumption. 1080x1920 is 0.5625, above the 0.5 floor, so the TikTok asset you already own passes on ratio. What the band excludes is cinematic wide and tall phone-screen shapes.
| Master | Width ÷ height | Inside Etsy's band? | What to do |
|---|---|---|---|
| 1080x1920 (9:16 Reels/TikTok) | 0.5625 | Yes | trim, drop audio, re-encode |
| 1080x1350 (4:5 Meta feed) | 0.8 | Yes | same |
| 1920x1080 (16:9) | 1.78 | Yes | same |
| 2048x858 (2.39:1 cinema) | 2.39 | No | crop or pad to 2:1 |
| 2560x1080 ([21:9](https://en.wikipedia.org/wiki/21:9_aspect_ratio)) | 2.37 | No | crop or pad to 2:1 |
| 1080x2400 (20:9 screen capture) | 0.45 | No | pad width to reach 0.5 |
The bitrate answers the file size question with arithmetic. 100 MB is 800 megabits, and 800 divided by 15 seconds is 53 Mbps, so any encode below roughly 53 Mbps fits 15 seconds under Etsy's cap. A 1080p H.264 clip at CRF 20 runs 6 to 12 Mbps. ProRes exports and 4K60 phone originals clear 53 Mbps easily, which is why uploading the camera original is the one reliable way to hit the 100 MB wall.
The order to do this in
Each of the six steps below has a check attached, so problems surface at the step, not at upload.
- Pick the two windows by timecode, not by feel. Scrub the master and write down two start times where the product does something: hands lifting it, a lid seating, steam, a pour. Etsy's seller handbook tells sellers to plan for silent visual proof and skip filters and saturation changes, so the window carries the claim on its own.
- Decide what the narration was saying. Whatever a voiceover told the buyer has to become burned-in text, because Etsy plays the video muted. "Dishwasher safe, 12 oz" is a
drawtextline now, not a sentence of audio. - Fix the ratio only if the table above says you're outside the band. Crop to 2:1 from a 2.39:1 master keeps 2 ÷ 2.39 of the width, so you lose about 16% off the sides. Padding keeps the whole frame and adds bars. Crop when the product is center-framed, pad when the sides matter.
- Cut each window with a re-encode, never a stream copy.
-c copycuts at the nearest keyframe, so a "15 second" copy can land on either side of the window (Baeldung explains why). On the wrong side, Etsy clips it. - Drop the audio with
-an. Not a muted track, not a silent AAC stream. No audio stream in the file at all. - Verify duration, stream count and file size with ffprobe, then upload both to the listing.
The commands, one per clip
For a master already inside the ratio band, which covers 9:16, 4:5 and 16:9, this is the whole job:
ffmpeg -ss 00:00:38 -i master.mov -t 15 -an \
-vf "scale=w=1920:h=1920:force_original_aspect_ratio=decrease:force_divisible_by=2,fps=30" \
-c:v libx264 -preset slow -crf 20 -profile:v high -pix_fmt yuv420p \
-movflags +faststart etsy-01.mp4
The scale call caps the long side at 1920 without touching the ratio, and force_divisible_by=2 keeps both dimensions even so libx264 doesn't refuse the frame. fps=30 pins constant frame rate, which matters for variable-frame-rate phone and screen recordings. Run the same line again with your second timecode and etsy-02.mp4 as the output.
For an ultrawide master that sits outside the band, add a pad to land exactly on 2:1:
ffmpeg -ss 00:01:24 -i master.mov -t 15 -an \
-vf "scale=w=1920:h=1920:force_original_aspect_ratio=decrease:force_divisible_by=2,\
pad=1920:960:(ow-iw)/2:(oh-ih)/2:color=white,fps=30" \
-c:v libx264 -preset slow -crf 20 -profile:v high -pix_fmt yuv420p \
-movflags +faststart etsy-02.mp4
Swap pad for crop=ih*2:ih if you'd rather lose the edges than gain white bars. And when narration carried a claim, put it back as text in the same pass:
-vf "...,drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:\
text='Dishwasher safe · 12 oz':fontcolor=white:fontsize=54:\
x=(w-text_w)/2:y=h-240:box=1:boxcolor=black@0.45:boxborderw=22"
The same two cuts as one job submission
An API instead of a local binary changes two things: nothing to install, and the trim is what you pay for. Upload the master once with POST /v1/upload/presigned-url, PUT the bytes, confirm with POST /v1/upload/confirm, then submit each cut as its own transcode job and poll it:
curl -s -X POST https://api.ffmpeg-micro.com/v1/upload/presigned-url \
-H "Authorization: Bearer $FFMPEG_MICRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename":"master.mov"}'
# one job per window; the body carries the same -ss / -t / -an / -vf recipe
curl -s -X POST https://api.ffmpeg-micro.com/v1/transcodes \
-H "Authorization: Bearer $FFMPEG_MICRO_API_KEY" \
-H "Content-Type: application/json" \
-d @etsy-clip-01.json
curl -s https://api.ffmpeg-micro.com/v1/transcodes/$JOB_ID \
-H "Authorization: Bearer $FFMPEG_MICRO_API_KEY"
curl -s https://api.ffmpeg-micro.com/v1/transcodes/$JOB_ID/download \
-H "Authorization: Bearer $FFMPEG_MICRO_API_KEY"
Field names for the job body are in the transcode docs. There are no completion callbacks: poll the job until it reports complete, then fetch a signed download URL. Status checks and downloads are free.
The billing unit is the reason this job belongs on an API. FFmpeg Micro bills the duration of video processed, per second, with no rounding to the minute, so pulling 15 seconds out of a two-minute master bills 15 seconds. One token covers 10 seconds, which puts a two-clip Etsy listing at 3 tokens, about three cents at top-up rates of 500 tokens for $5. Failed jobs aren't billed. The free 200 tokens cover roughly 66 listings, and 200 listings at two clips each is 600 tokens, inside Starter's 2,500 monthly grant. The same per-second math applies when you're reframing one master into several platform cuts.
A 2:12 ceramics master, start to finish
The input is a stoneware mug filmed vertically on a phone at 3840x2160 rotated, 2 minutes 12 seconds long, with a voiceover explaining the glaze. Three of Etsy's rules are already broken, and only one of them is the duration.
The ratio is fine at 0.5625. The voiceover is dead weight: Etsy deletes it, so the "dishwasher safe" line moves to drawtext and -an skips the audio stage entirely. Window one starts at 0:38, where two hands lift the mug and the glaze breaks on the rim. Window two starts at 1:24, on the pour and the steam. Both scaled to 1080x1920 at CRF 20 land in the 8 to 15 MB range for 15 seconds, under a sixth of Etsy's cap.
Billed duration for the pair is 30 seconds, not the 4 minutes 24 seconds of master. 3 tokens.
Checking both files before you upload
Verify the output, not the input, because the output is what Etsy judges. One ffprobe line per file answers all four questions:
ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,duration \
-of csv=p=0 etsy-01.mp4
You want exactly one line back. A second line means an audio stream survived and -an wasn't applied. Duration should read between 5 and 15, and if it reports 15.033, trim with -t 14.9 instead so Etsy has nothing to clip. Width divided by height stays between 0.5 and 2.0, and ls -lh confirms what you already know from the bitrate math.
Checking the output also explains upload failures sellers report in Etsy's own community forum, where uploads stall near 10% and return "we're having trouble uploading that file" on clips already inside the 15-second limit. Duration isn't the variable there. File weight and the encode profile are: HEVC in an MP4 wrapper off a recent iPhone, 10-bit color, variable frame rate from a screen recording. The command above fixes all three by re-encoding to 8-bit H.264 High profile at constant 30 fps, the same class of fix as converting 4K AI output down to 1080x1920 before posting.
FAQ
Does Etsy reject a listing video longer than 15 seconds?
Etsy doesn't reject it. Etsy's help page says videos longer than 15 seconds will be clipped, so a 30-second upload goes through and plays as a truncated clip that ends mid-shot. The trim is your job because the platform won't warn you.
Is the minimum Etsy video length 3 seconds or 5 seconds?
Etsy's own help documentation states 5 to 15 seconds. Several third-party guides publish 3 seconds as the floor, and none of them cite a source. Cut at 5 seconds or longer and the question stops mattering.
Is a 9:16 vertical video allowed on an Etsy listing?
A 9:16 vertical video is allowed. 1080x1920 works out to 0.5625 width over height, which sits inside Etsy's 1:2 floor of 0.5. The shapes outside the band are cinematic widescreen above 2:1, like 2.39:1 and 21:9, and tall phone-screen captures like 1080x2400 at 0.45.
Should I render a voiceover or music bed for an Etsy listing video?
Rendering audio for an Etsy listing video is wasted render time, because Etsy's help page states the uploaded video will not contain any audio. Anything the narration said has to be burned into the frame as text, which is why a music-scored product slideshow built for Instagram arrives on Etsy silent.
How do I do this across 200 listings without opening an editor?
Keep the timecode pair per product in a spreadsheet, then loop the trim. The two start times are the only values that change per listing, so one script row per product drives both cuts, whether you run FFmpeg locally or submit each cut as a job. The same loop structure shows up whenever one source video has to become many platform-specific files.
Pick the two windows on your next master and this becomes one command per clip, or one job submission per clip if you'd rather not keep an encoder current on your own machine. The mechanical half of UGC video content is exactly this: trim, strip, reframe, encode, repeat per listing. Sign up free and run the first pair on the free tier: no servers to run and no FFmpeg to install, called from your own code, from n8n, Make or Zapier, or from an AI agent.
About Javid Jamae
Founder & CEO at FFmpeg Micro
Javid is a software engineer, author, and entrepreneur with over 25 years of professional software development experience across enterprise, startup, and consulting environments. He founded FFmpeg Micro to make video processing accessible to developers through a simple, automation-first REST API.
You might also like

X (Twitter) Video Specs That Survive the Upload (and the API)
Twitter video specs tables miss the two rules that fail an API upload: H.264 High Profile with AAC LC, and the real chunked INIT/APPEND/FINALIZE byte math.

FFmpeg Builds for Windows: Essentials or Full, gyan or BtbN
FFmpeg builds for Windows, decided: gyan essentials vs full, static vs shared, gyan vs BtbN, with real OS and CPU requirements and the codec drift to avoid.

FFmpeg 9.1: what to re-test before you upgrade
FFmpeg 9.1 ships the rewritten AAC encoder deferred from 9.0, so `-c:a aac` output changes silently. What to re-measure, how to pin, why it's no security fix.
Ready to process videos at scale?
Start using FFmpeg Micro's simple API today. No infrastructure required.
Get Started Free