instagramvideo-repurposing

Instagram Features long form video: 8 Reels from one master

··10 min read
Instagram Features long form video: 8 Reels from one master

Instagram Features long form video is a horizontal 16:9 upload of up to 90 minutes, and the number that decides your production work is eight: one Feature can have up to eight vertical Reels linked to it, each tapping through to the full episode. So the deliverable per episode is one 16:9 master plus eight 1080x1920 cutdowns from that same file. In FFmpeg that's a probe, eight trims and a crop-or-pad chain per clip. Without hosting an encoder or babysitting a 90-minute render, it's one API call per clip and a status poll, billed on the eight minutes you cut rather than the ninety you recorded.

Instagram announced the format on October 26, 2026. Social Media Today reported a limited test with select US creators after a first run in Brazil, aimed at podcasts, interviews and vlogs. Variety confirmed the clips-as-Reels side: as many as eight short clips can send viewers to one long video, and Instagram said it's "too early to share a long-term monetization model."

What Instagram Features is, and the one number that matters

Features is a long-form horizontal container with linked Reels as its discovery layer. Clips surface in Feed and Explore with a button into the full video, so the eight verticals do the work and the 16:9 master is the destination.

Instagram has published no ranking signals, no analytics and no revenue share for the format, so every reach claim is a guess. The defensible move is making eight clips per episode cheap enough that the first few can flop.

Reels want 1080x1920 at 9:16, the only ratio that fills the Reels tab without cropping, in MP4 or MOV with H.264 video and AAC audio, per Hopper HQ's size guide. Length caps are 90 seconds by default and three minutes for most accounts, per Sprout Social's specs guide, so 45 to 60 second cuts stay safe everywhere.

Read the master with ffprobe before you cut anything

Probing the master gives you the real resolution, frame rate and duration, which every later command depends on. A podcast export labeled 1080p is sometimes 1440x1080 from a webcam grid, and a crop filter written for 1920x1080 will silently produce the wrong frame.

ffprobe -v error \
  -show_entries format=duration,size:stream=index,codec_name,width,height,r_frame_rate \
  -of default=noprint_wrappers=1 ep214-master.mp4

The same inspection runs as POST /v1/ffprobe with a media_url, returning the streams and format object as JSON you can route on. Inspection costs close to nothing next to a transcode, per FFmpeg Micro's ffprobe reference, so it belongs before the eight jobs.

Check the file size. A 90-minute 1080p interview usually lands between 1.5 and 3 GB, and input caps are 100 MB on the free tier, 1,024 MB on Starter and 2,048 MB on Pro. Over the cap, trim the eight segments locally and upload those.

Eight frame-accurate trims out of a 90-minute recording

Cut each segment with -ss for the start and -t for the duration, and re-encode rather than stream-copy. Trimming with -c copy only cuts on keyframe boundaries, so your 12:40 start becomes 12:38 or 12:43 depending on the GOP, a drift Ottverse documents clearly.

Put -ss before -i so FFmpeg seeks instead of decoding from zero, a few seconds per clip on a long master instead of a few minutes.

ffmpeg -ss 00:12:40 -i ep214-master.mp4 -t 60 \
  -c:v libx264 -crf 20 -preset veryfast -pix_fmt yuv420p \
  -c:a aac -b:a 128k -movflags +faststart \
  ep214_clip01.mp4

Trim, reframe and caption in one command. Every extra pass re-encodes the same 60 seconds and bills it twice.

Horizontal video to vertical Reels: crop a talking head, pad a screen share

The crop-or-pad call is the one real decision, and the content makes it for you. Crop when the subject is a person and the frame edges are empty room. Pad when the edges carry information: a whiteboard, a shared screen, a two-person split where cutting either side loses a speaker.

FFmpeg centers a crop when you omit x and y, as the ffmpeglab crop reference explains:

ffmpeg -ss 00:12:40 -i ep214-master.mp4 -t 60 \
  -vf "crop=ih*9/16:ih,scale=1080:1920:flags=lanczos,setsar=1" \
  -c:v libx264 -crf 20 -preset veryfast -pix_fmt yuv420p \
  -c:a aac -b:a 128k -movflags +faststart ep214_clip01_9x16.mp4

On a 1920x1080 input, ih*9/16 evaluates to 607.5 and truncates to an odd width, which libx264 rejects. The scale=1080:1920 after it normalizes the dimensions, so keep the two filters in that order.

When the speaker sits left of center, shift the crop window: crop=ih*9/16:ih:x=(iw-ih*9/16)/2-180:y=0 moves it 180 pixels left. Pick the offset once per guest and reuse it for every clip from that episode.

For screen-share segments, the letterbox chain keeps the whole 16:9 frame inside the vertical canvas, the approach vgmoose writes up:

-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1"

That leaves black bars top and bottom, which you can fill with a blurred copy of the frame.

Burn captions in the same pass, and name the output for the uploader

Add the subtitles filter last so font sizes apply at the final 1080x1920 canvas instead of being scaled with the video. Instagram's interface covers the bottom strip of a Reel with caption text and buttons, plus the right edge, so lift burned text clear with MarginV:

-vf "crop=ih*9/16:ih,scale=1080:1920,subtitles=ep214_clip01.srt:force_style='Alignment=2,MarginV=340,FontSize=20,Outline=2,Shadow=0'"

Name the file so whoever uploads eight clips can tell which Feature each links to. One scheme: ep214_clip03_004110_9x16.mp4, meaning episode, clip index, start timestamp in the master, output ratio. The timestamp earns its keep: when a clip underperforms or a guest asks for a change, you re-cut from the same master without rewatching anything. We've argued the same for ad variant reframing and episodic output.

The same eight clips as one API call each

If you'd rather not keep an FFmpeg build and a machine holding 90 minutes of 1080p, the identical filter chain runs as an API job. Upload the master once, then submit eight transcodes against that one file, each with its own -ss, -t and reframe mode.

curl -X POST https://api.ffmpeg-micro.com/v1/transcodes \
  -H "Authorization: Bearer $FFMPEG_MICRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "file_8f3c9a21",
    "options": "-ss 00:12:40 -t 60 -vf crop=ih*9/16:ih,scale=1080:1920,setsar=1 -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 128k",
    "output_filename": "ep214_clip01_001240_9x16.mp4"
  }'

Three steps come ahead of that call: POST /v1/upload/presigned-url, a PUT of the file straight to storage, then POST /v1/upload/confirm. Poll the job until it reports complete, then download the result. Polling, listing and downloading are free, so a 10-second loop costs nothing, and there are no completion callbacks. Field names and the full option list live in the API docs. To settle a guest's crop offset before wiring eight calls into a loop, the reframe blueprint runs the same crop-or-pad job as an upload and a download.

Fan eight rows out of a Google Sheet in n8n or Make

The repeatable version reads timestamps from a sheet instead of your shell history. Keep one row per clip with episode_id, clip_no, start, duration and mode (crop or pad), and let the workflow build the options string.

  1. Google Sheets node reads the rows for the current episode.
  2. Split In Batches in n8n, or an Iterator in Make, runs the rest once per row.
  3. An HTTP Request node posts the transcode, options string built from start, duration and mode.
  4. A Wait node pauses 15 seconds, then an HTTP Request checks job status and loops back while it runs.
  5. The last node downloads the output to Drive, named from episode_id and clip_no.

Eight rows in, eight named MP4s out, and nothing holds a 2 GB file in memory, which is why this shape survives on n8n Cloud, where passing large binaries between nodes kills executions. If your instance just lost its community nodes, keeping the FFmpeg step alive with an HTTP Request node covers the migration.

What eight Reels per episode costs you

Billing on FFmpeg Micro is metered per second of video processed, no rounding up to the minute, and trimming a clip out of a longer file bills the clip, not the source. Eight 60-second cuts out of a 90-minute recording bill eight minutes, not ninety.

Line itemInput durationTokensNotes
ffprobe the masternone processednegligibleMetadata read, not a transcode
8 clips, trim plus reframe plus captions in one pass480 s481 token per 10 seconds of input
Same 8 clips, captions as a second job960 s96Two passes bill the 60 seconds twice
Processing the whole 90-minute master5,400 s540What you avoid by trimming in the job
A job that failsany0Failed jobs are never billed

At the top-up rate of 500 tokens for $5, those 48 tokens are about $0.48 of machine work per episode. The free tier's 200 tokens cover four episodes with no card, and Starter's 2,500 monthly tokens at $19.99 cover roughly 52 episodes a month. Current numbers are on the pricing page.

An hour a week goes into dragging in and out points and re-centering crops, the human half of an editing rate.

Where this pipeline stops

Choosing the eight moments is still your job. Nothing here reads a transcript and picks which 60 seconds of a two-hour interview is worth clipping. That's a human pass, or an LLM pass that writes the sheet.

A static crop also doesn't follow a speaker. If your show cuts between two camera angles mid-clip, one offset frames one of them badly. Split that clip at the camera change, or use a subject-tracking reframe tool, a different class of product than a media API. Templated openers, lower thirds and brand furniture on every clip are a template editor's job.

FAQ

Does a Feature need a separate 16:9 upload, or can the Reels come from the same file?

The eight linked Reels come from the same 16:9 master you upload as the Feature. Keep the horizontal export intact for the long-form upload and cut the vertical clips from that identical file, which is why output names should carry the start timestamp in the master.

How do I repurpose a podcast into Reels without re-editing each clip by hand?

Repurposing a podcast into Reels works best as a timestamp sheet plus a loop: one row per clip with start, duration and crop-or-pad mode, and a workflow that submits one job per row. The editorial call stays with you, and the trim, reframe and caption burn run as eight identical API calls.

Should I crop or pad a two-person interview?

Crop a two-person interview only when the shot is a single speaker filling the frame. On a side-by-side two-shot or a split-screen remote recording, a centered 9:16 crop drops one participant, so pad to 1080x1920 and keep both faces, or cut into single-speaker segments and crop each with its own x offset.

Has Instagram said how Features or linked Reels are ranked?

Instagram has published no ranking, analytics or payout detail for Features, and told Variety it's too early to share a long-term monetization model. Plan the asset production, and treat any claim about how the format distributes clips as speculation until Instagram documents it.

Weekly interview shows feel this first, because the eight-clip job arrives every episode whether or not last week's clips worked. Running the mechanical half through the API is what content repurposing looks like when nobody is watching a progress bar. Sign up free: no encoder to keep running, callable from your own code, from n8n, Make or Zapier, or from an AI agent, and the free tier covers your first few episodes.

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.

Software EngineeringVideo ProcessingFFmpegCloud ArchitectureAPI DesignAutomation

Skip the command line

The Resize for Format blueprint reframes your video to any platform ratio: upload, pick the format, done.

Run it (free)