Framer looping video: keep it under 5 MB, Framer won't compress

Framer says keep looping videos under 5 MB, uses H.264 MP4, and serves a 4K upload at full size. Render and trim a Sume clip small before you upload.

4 min readSume
All posts

Framer tells you to keep looping videos under 5 MB, to use H.264 in an .mp4 file, and not to expect any compression: Framer does not change an uploaded video, so a 4K file is served at full resolution even on a small screen. Generate the Sume clip at 720p, cut it to a few seconds, and drop the audio before you upload it.

This post turns Framer's own wording into a short render plan. It is for a hero or section loop, not for a long product demo.

What Framer's help pages say

Both facts below come from Framer's help center, read 2026-10-10. Framer's page on adding video lists no upload size limit, so the 5 MB figure is guidance for looping video, not a hard refusal.

Framer video guidance, read 2026-10-10 from framer.com/help
Framer saysWhat it means for the file
H.264 codec with the .mp4 extension is universally supported across browsersUpload H.264 MP4
Keep looping videos under 5 MB; most browsers have a 5-8 MB caching limit for media filesShort loop, small frame
Framer does not alter uploaded videos; a 4K video is served in full resolution, even on small screensChoose the final resolution before upload
Muted, looping, auto-playing videos without controls pause outside the viewportA silent loop behaves like a GIF
For adaptive quality, use YouTube or Vimeo embedsA native upload is one fixed rendition

Render small on purpose

Sume gives you three levers that change file size: the clip length, the pixel size, and the frame rate. It has no bitrate field, so you measure the downloaded file instead of setting a target. The Video Router lists seedance-2.5 at 4 to 30 seconds and 480p, 720p or 1080p, so a 720p, 5-second request is a good first try for a section loop.

curl -X POST https://api.sume.com/v1/video-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: framer-loop-001" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "Slow macro push-in on a ceramic mug of coffee, steam rising, soft morning light, no text",
    "resolution": "720p",
    "duration": 5,
    "aspect_ratio": "16:9",
    "mode": "async"
  }'

Trim, shrink and drop audio

If the download is still over 5 MB, run video trim at $0.02 per job. Send a shorter range, set audio to drop because a muted loop does not need a sound track, and use the output object to conform the width, height and fps. Trim's exact mode re-encodes to libx264 in yuv420p, which matches the H.264 MP4 Framer recommends. Output width and height run from 256 to 2160, and fps is 24, 25, 30 or 60.

curl -X POST https://api.sume.com/v1/video-trim \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: framer-trim-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
    "start": 0.5,
    "duration": 3.5,
    "audio": "drop",
    "output": { "width": 1280, "height": 720, "fps": 24 }
  }'

The checklist

The arithmetic is yours to run: 5 MB is 40 megabits if you count a megabyte as 1,000,000 bytes, so a 4-second loop averages about 10 megabits per second at the cap and a 8-second loop about 5. Shorter loops leave more room per second.

  • Pick the final pixel size first; Framer will not scale a big file down for you.
  • Cut to a loop of a few seconds and check the file size after the download.
  • Send audio as drop; a silent loop does not need a sound track.
  • Re-read Framer's page before launch; it may change.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume