Build with AI

How to build a browser video editor with OpenAI Codex

Ship an editor that runs on your users’ machines instead of your bill. A timeline, trimming, reframing, and export, all encoded in the browser. Describe it one task at a time in plain English and your AI assistant writes the video processing rules automatically.

August 2026 · 40 min read · Updated September 2026

OpenAI Codex

$ Build a browser-based video editor: the cutting done on the visitor’s machine, a timeline they trim and reorder on, export presets for vertical and square, and projects saved per account.

  • Encoder proven first
  • Timeline and export written
  • Ready for your review
You describe it, Codex builds it
Start here

Overview & core architecture

A browser video editor is a full editing workspace that opens in a tab: clips on a timeline, a preview that scrubs, and an export at the end, with the cutting and encoding done by the visitor’s own computer rather than by a server you rent.

The familiar version of this is a service: someone uploads footage, a machine somewhere re-encodes it, and a finished file comes back. That works, and it costs money on every single minute of video that passes through. It also means your users hand their raw footage to a third party, which for some of them is the end of the conversation.

The other version builds the video processing into the page itself, so it runs inside the browser tab. The file is opened from the visitor’s disk, cut on their processor, and written back to their downloads folder. Your server never sees it, and never bills you for it. What you build instead is everything around that: the timeline, the projects, the library, and the export queue.

The editing workspace is your primary client feature

Non-technical users judge the experience instantly based on a clean, responsive interface that lets them preview and trim assets without installing complex software.

No raw footage to leak, no render servers to hack

The video is cut on the visitor’s own machine, so nothing is uploaded unless you choose to store it, and your servers never hold anyone’s raw footage. The security section below covers how your editor stays secure and how to protect sensitive client footage.

Decide your file-size ceiling early

Everything runs on the visitor’s own computer, so very long or very high-resolution files are where it strains. Decide the largest file you accept and say so in the interface before launch. It is the first of the six decisions further down.

What you are building

Essential editor components

Six building blocks make up the editor, and the timeline is the one visitors judge first. Each is something you can ask your AI coding tool to build or rework in plain words.

01

Drag-and-drop editing timeline

Clips laid end to end, draggable to reorder, trimmable from either edge, with a playhead and a preview that never disagree with each other. This is the hard one, and it is worth building first: if the interaction is wrong, nothing built on top of it will feel right.

02

In-browser video processing

Professional-grade video processing runs entirely within the browser tab, doing the actual cutting and re-encoding directly on the visitor’s machine. It loads once, works on files picked from their disk, and hands back a finished file, with no upload, no queue, and no per-minute bill.

03

Media library & saved projects

Media a person has added, the cut they are working on, and the exports they have already made. Without this the editor is a toy: people expect to close a tab and come back to their work.

04

Vertical, square & widescreen presets

The same cut wanted vertical for one platform, square for another, and widescreen for a third. Doing it as a defined set of output formats rather than a free-form crop keeps both the interface and the export queue simple.

05

Reliable export with live progress

Real progress rather than a spinner, a warning when a file is big enough to be slow, and something sensible when a tab runs out of memory. Export is where a browser editor either feels solid or feels like a trick.

06

No-signup demo workspace

An editor is the rare product people can evaluate in thirty seconds, and asking for an account first throws that away. A throwaway demo workspace with a sample clip converts far better than a screenshot.

Build vs buy

Own the editor or pay by the minute

Almost everything you could buy here runs video through somebody else’s machines and prices it by the rendered minute. That is the number worth holding on to while you read this table, because processing in the browser removes it rather than reducing it.

Build your own

An editor you own is a one-time build with no compute bill behind it (the visitor’s own processor does the work) and with an AI coding tool writing the plumbing, that build is weeks rather than quarters.

  • No per-minute rendering cost, at any volume, because there is no render farm in the loop
  • Raw footage never reaches your servers, so it is not yours to store, secure, or explain
  • Export presets, aspect ratios, and limits are yours to set rather than a vendor’s to allow
  • No watermark you have to pay a tier to remove
  • Add your own AI on a model of your choosing: captions, silence trimming, titles
  • The code and the records are yours outright, exportable whenever you like

Rent the processing

Shotstack · Cloudinary · IMG.LY · Creatomate

Renting gets you rendering that is faster than any laptop and does not care how big the file is. What it costs is a rate on every minute you process, and a dependency in the middle of your product.

  • Server rendering is faster than a browser and unbothered by a two-hour 4K source file
  • Someone else owns the hard parts: codecs, scaling, and the failures at 3am
  • Priced by the rendered minute, the credit, or a licence, so the bill tracks your usage rather than your headcount
  • Every minute of video your users make costs you money, including the ones they discard
  • Users’ raw footage is uploaded to a third party, which some of them will not accept
  • One of the four publishes no price at all, so budgeting means a sales call before you can compare
Shotstack$0.30 per rendered minute pay-as-you-go, or $0.20 on a subscription from $39/mo

Rented SaaS platforms charge recurring monthly subscriptions and meter every rendered minute. Owning your code outright eliminates per-seat fees, usage limits, and monthly processing bills.

shotstack.io · checked August 2026

CloudinaryFree (25 credits/mo) - Plus $99/mo, Advanced $249/mo, or $89 and $224 billed yearly

Prices the half a browser editor does not remove: storing the source and delivering the finished file still costs money wherever you keep it. Every plan is priced in credits that cover storage, delivery and processing interchangeably. Useful as a sanity check on your own storage bill even if you never use it.

cloudinary.com · checked August 2026

IMG.LYNo public price - every tier is quote-only

The closest thing to buying the editor itself rather than the rendering: an SDK you embed in your own product. No figure appears anywhere on the pricing page, and the reason is stated plainly: “Pricing is based on the platforms, components, and AI features you license — not a public per-seat tier”, with “You pay for what you ship. Contact sales for a quote tailored to your usage.” We quote no estimate of the cost, because the vendor publishes none. Evaluating it is free for a month: “Every license includes a 30-day free trial after you download a trial key, with full access to all features.”

img.ly · checked August 2026

CreatomateThree plans sized by output volume (the page showed us no dollar amounts)

Templated video automation rather than an editor a person drives, and included because plenty of teams reach for it when what they wanted was an editor. The plans are sized by output: Essential covers “200+ videos or 2,000 images” with 5 GB of storage, Growth “1,000+ videos or 10,000 images” with 50 GB, and Beyond “5,000+ videos or 50,000 images” with 500 GB. The page showed us no dollar amounts when we read it, so none is quoted here. Check the current prices there before you compare.

creatomate.com · checked August 2026

Rule of thumb: if your users are editing their own short clips (a minute or two, on ordinary hardware) the browser handles it and you never see a compute bill, which makes owning the editor the obvious call. If your product processes long or high-resolution files, or has to render hundreds of videos without anyone present, rent the rendering, because a laptop tab is the wrong machine for that job. The middle case is a product that mostly does short clips and occasionally does not, and the honest answer there is to build the editor and set a file-size ceiling you are comfortable defending.

No dev needed

Why build with Codex

Skip complex database engineering. Set clear controls for who can open which projects, and save every project and export automatically without managing server code.

Codex closes that gap by working the way a developer would, just faster. The whole workflow becomes a simple loop:

The build loop
1

Describe

Tell Codex what you want, in plain language.

2

Build

It edits the real project files, backend and auth and UI, rather than replying in a chat.

3

Check

Run the app yourself and confirm the change works.

Repeat

Describe the next change.

Loop back to Describe

None of that loop needs a computer-science background, which is why one person can take an idea to a working app over a handful of focused sessions.

Three hard partshandled for you

The data model, authentication, and access rules are the pieces that make software like this genuinely hard to build alone. Describe them and Codex scaffolds all three, leaving mostly screens to build on top.

Any language is the interface

There’s no code to write, and no requirement to describe it in English. Ask for a new field, a renamed step, or an AI summary in whatever language you think in, and Codex implements it.

Local files it edits directly

Codex works on the project on your own disk rather than a copy somewhere else, so what it changes is exactly what you see when you run the app. Point it at the handful of files that matter and it stays fast and focused.

What it costs

Pay a developer, or do it with AI

The unusual thing about this build is what is missing from the table: no rendering line, because no server touches the video. What is left is the one-time cost of writing it, and a small bill for keeping files somewhere.

Hire a developer

Custom build, from scratch
Developer
~$9.3k-$37k
Supabase (backend)
Free tier · $25/mo (Pro plan)*
Hosting
$0 free tier
Video processing
$0 - runs on the visitor’s device
Build time
~185 hrs of their work

~$9.3k-$37k to build, then from $25/mo after launch

Our ~185-hour estimate, costed against the rate survey linked below. Its bands run from $45-$75/hr for North American contractors up through $100-$150+/hr for senior US developers, before the 20-40% an agency adds, which brackets the range at roughly $50/hr and $200/hr. Where those hours actually go is worth knowing: most of them are the timeline, and none of them are anything a screenshot would reveal. Then look at the row above: processing costs nothing per minute at any volume, because it happens on hardware you neither own nor rent.

Build it with Codex

From scratch, with Codex
Codex
~$20/month (Plus) to ~$200/month (Pro)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting
$0 on a free tier
Your time
~89 hrs

~$20-$200/month while you build, then whichever plan you keep using

Codex itself is free to install. The cost sits in the ChatGPT plan behind it, or in API usage if you sign in with a key instead. Plus, around $20/month, covers a template import or a short build. A from-scratch build that runs for weeks usually needs Pro’s top usage-multiplier tier instead, which lands around $100 to $200 a month. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: the template changes how many of the hours in the estimator above you actually spend, not which ChatGPT plan you’re paying for.

* What you store is source files people chose to keep and the exports they made, so the number depends entirely on whether you keep either. Supabase Free includes 1 GB of file storage and 5 GB of egress a month. Pro, from $25/mo, includes 100 GB of storage and 250 GB of egress, then charges $0.0213 per GB stored and $0.09 per GB served. Deleting an export a week after it was downloaded is the single cheapest decision available here, and it belongs in your retention rule rather than in a bigger plan.

Whichever column you pick, the running cost afterwards is storage and hosting rather than compute, and it stays that way whether ten people or ten thousand are exporting, because every one of them brings their own processor to the job.

Prices and rates from supabase.com, developex.com and learn.chatgpt.com, checked August 2026.

Plan first

Decide before you build

Structure your project scope around six essential decision standards.

01

Maximum file size & length

The single most important number here, and the one nobody sets until it breaks. A browser tab has finite memory, so decide the ceiling (by length, by file size, or both) then say it in the interface before someone picks a file rather than after. A refusal with a reason is a fine experience. A tab that dies at 80% is not.

02

Input formats & export presets

Deciding you accept MP4 and MOV and produce MP4 in three aspect ratios is a smaller build and a clearer product than accepting anything and offering everything. Write the input list and the output presets down. They shape the editor, the export queue, and half the error messages.

03

Storage & retention policy

Three separate questions: do you store the source footage at all, do you keep exports after they are downloaded, and how long does an abandoned project live? Storing nothing is a legitimate and very cheap answer. Whatever you pick, build the deletion rather than leaving it to the day the storage bill arrives.

04

Demo access without an account

An editor sells itself in thirty seconds if you let it. A demo workspace with a sample clip and no sign-up is more work than a screenshot and converts better than one, but it needs its own throwaway data so nothing a stranger does touches your real tables.

05

Export speed & hosting choice

The default single-threaded encoder is simpler and works everywhere. A multithreaded one is faster but needs specific response headers from your host, which rules some hosting choices out. Decide which matters more before you choose where to deploy, not after.

06

Sharing & team access

Most editors are strictly private: your projects, nobody else’s. If you want shared team projects or a reviewer link, decide now, because “anyone with the link can watch this export” is an access rule and a storage rule at once, not a toggle you add later.

Approaches

Comparing your build options

The starting point decides how much of the estimate goes on the timeline rather than on everything around it. Below is one editor built three ways: entirely by hand, on a UI kit that stops at dashboards, or with Codex working task by task on the real source.

~185 hrsBuilding by hand

The timeline is where the weeks go. Dragging a clip edge and having the preview, the playhead, the duration, and every clip after it agree is a week nobody budgets for, and it arrives before you have exported a single file.

~140 hrsGeneric UI starter kit

A starter kit hands you a dashboard, a settings page, and a file table. It has never heard of a clip, a playhead, or an aspect ratio, so the editor (the only screen anybody came for) starts from nothing.

~89 hrsBuilt with Codex

Hand Codex one task at a time and it edits the real files (the encoder hook, the timeline components, the migrations) from the terminal, an editor extension, or a cloud run you check back on later. The same task list, worked as diffs you approve.

Interactive calculator

Estimate your exact build timeframe

Plenty of editors ship without half of this. A tool that only trims and only exports one format is a real product, and a much shorter build. Untick what you are leaving out.

What your video editor needs

Your estimate

89 hrs

start to finish

Based on the 6 of 6 features you’ve selected, plus ~26h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

Before step 01, four things go on your computer. It takes about 15 minutes in total, and none of it is coding. Three are ordinary installers, and the fourth is a ChatGPT plan with Codex access switched on. After that, you build by describing what you want in plain language.

1

OpenAI Codex

Cost: Free to install · needs a paid plan to build with

Your main AI assistant. The app itself costs nothing and installs with a single command from OpenAI, then runs in your Terminal. What it costs to use is the next card: every request spends the usage allowance on your ChatGPT plan, and the free plan’s allowance is small enough that a build of this size stops early. Codex is also built into an extension for popular code editors and into the ChatGPT desktop app, which can hand a longer task off to Codex cloud to keep running in an isolated environment while you do something else.

Install Codex CLI
2

ChatGPT plan

Cost: ~$20/month (Plus) or from ~$100/month (Pro)

Codex is technically included on the free ChatGPT plan too, but Free’s usage is the tightest of any tier. OpenAI doesn’t publish Free’s own cap, only that every paid tier gets a larger multiple of it, so treat Free as a way to try Codex rather than to build with it. ChatGPT Plus, around $20/month, is the realistic starting point, and a long, from-scratch build tends to need the top ChatGPT Pro tier, priced by usage multiplier at roughly $100 to $200/month. Codex can also run on pay-as-you-go API billing instead of a ChatGPT plan, if you’d rather pay per token than hold a subscription.

Compare ChatGPT plans
3

Node.js engine

Cost: Free

The engine that runs your app on your own computer. You never have to learn how it works: download the version marked LTS (the most stable one), install it, and forget about it.

Download Node.js (LTS)
4

Supabase (database)

Cost: Free to start

Where your project keeps its data. Install it, then sign in once by running supabase login. Words like migrations and row-level security turn up later in the guide, and Codex writes those parts for you.

Install Supabase CLI

Nothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Codex runs the commands.

Step by step

Build your editor, one Codex task at a time

You describe a task, Codex writes the files and runs the commands. The sequence puts the riskiest thing first: an encoder running in a browser tab is the one part of this build that can fail for reasons no amount of application code will fix, so it goes before the schema rather than after.

  1. 01

    Write AGENTS.md before anything is scaffolded

    Codex loads AGENTS.md at the start of every task, so the rule that matters most on this build (nothing is uploaded for processing) is loaded before there is any code to violate it.

    PromptSet up the project
    Start by writing an AGENTS.md at the project root: the stack is React 18, Vite, TypeScript, Tailwind, and the Supabase JS client, and this project is a browser video editor. Fix the vocabulary (projects, videos, clips, exports) and record the standing constraint that all video processing happens client-side through FFmpeg compiled to WebAssembly, so no task should ever add a server-side transcode. You load that file automatically at the start of every later task. Then scaffold the project: a typed Supabase client under src/lib reading VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key that replaced the older anon key) from .env, with .env confirmed present in .gitignore. Start the dev server once to prove it boots.

    The no-server-transcode line is the one worth writing down. It is a reasonable-sounding thing for any assistant to suggest later, and it would quietly reintroduce the cost this whole build exists to avoid.

  2. 02

    Have Codex prove the encoder before anything depends on it

    One task, one throwaway page, one trimmed file. Read the diff and then actually run it against a large video. This is the step where you learn what your practical ceiling is.

    PromptGet FFmpeg running in the browser
    Add @ffmpeg/ffmpeg and @ffmpeg/util and build a single throwaway page that proves in-browser encoding works end to end: pick a local video file, enter a start and end time, press a button, and get a trimmed file back as a download. Use the single-threaded @ffmpeg/core loaded via toBlobURL so the CDN assets are not blocked by CORS, and surface the real ffmpeg progress events. When it works, tell me what you observe about load time, memory, and how the browser behaves on a file over about a gigabyte.

    Ask for observations, not just code. What you want out of this task is a number for your file-size ceiling, and the only way to get it is to run the thing.

  3. 03

    Give the timeline its own task, and read that diff closely

    The timeline is the largest single piece of interactive code in the build. Keep it in one task, and read what comes back rather than approving it on trust.

    PromptBuild the timeline
    Build the editor screen as its own task. A horizontal timeline of clips laid end to end, each one draggable to reorder and trimmable from both edges, with a playhead, a second-by-second ruler, and a preview above that follows the playhead while scrubbing. Hold the timeline in a single source of truth so every clip’s in-point, out-point, and position derive from it, and nothing is tracked in two places. Use placeholder clips. The encoder and the database get wired in afterwards. Walk me through the state shape before you build the components on top of it.

    Asking for the state shape first is worth the extra round trip here. Almost every timeline bug is a state bug, and they are far cheaper to catch in a description than in a diff.

  4. 04

    Narrow permissions, then add accounts and the data model

    This task touches authentication, which is exactly the kind of change worth scoping Codex down for rather than leaving whatever settings you use for routine edits.

    PromptAdd auth, projects, and access rules
    This task touches authentication, so narrow your permissions to just this one. Wire in Supabase Auth for email-and-password sign-up, login, logout, a persisted session, a profiles row per account, and a useUser hook. Then write the migrations: projects owned by a user, videos belonging to a project, and exports recording each finished render with its settings. Add an app_role enum of 'visitor', 'user', and 'admin' with a user_roles table kept off the account itself, since anything stored there is editable by its owner, plus a SECURITY DEFINER has_role function. Finish with row-level security on all three tables: a user reaches only their own rows, an admin reaches everything, and every insert and update carries an explicit WITH CHECK. Show me the SQL before it runs, and walk me through proving a second account comes back empty.

    The ownership rule here is simpler than on most templates, which is exactly why it should be watertight. No complicated case exists to hide behind.

  5. 05

    Connect the timeline to the encoder

    The two halves you built separately now become one product. Codex only needs the timeline state and the encoder hook for this, not the whole project.

    PromptBuild the export flow
    Wire the timeline into the encoder. An Export action should translate the timeline state (the trims, the clip order, and the selected aspect ratio) into an ffmpeg invocation, run it in the browser with real progress reporting, and return a file. Offer widescreen, vertical, and square as fixed presets rather than free-form cropping. On completion, write a row to the exports table with the settings and the output duration, and generate a local thumbnail per clip. Handle the ugly cases explicitly: an oversized file, an unsupported input format, and a tab that runs out of memory partway through.
  6. 06
    Destination

    Hand the last pieces to a cloud run, then test it yourself

    Demo mode and the admin view are self-contained and well specified, a reasonable pair to hand to a cloud run while you do something else, provided you read the diff before it merges.

    PromptAdd demo mode, admin, and test
    Two remaining pieces, both self-contained. First, demo mode: a signed-out visitor gets a throwaway workspace with a sample clip, backed by separate demo tables so nothing they touch is real. Second, an admin view of storage used, exports run, and accounts, reachable only by the admin role. When they are in, run the app and take it end to end yourself: open the demo signed out and cut the sample, sign up, import a real file, trim and reorder it, export vertically, and confirm the export shows up in both the dashboard and the admin view, then fix whatever does not hold up.
Authentication & security

What you hold, and what you never have to

This build has an unusual security position: the most sensitive thing in it (somebody’s unedited footage) never arrives unless you ask for it. Here is what that changes, and what still needs doing.

Proven logins

Sign-up, sign-in, and sessions come from a system that has been attacked for years and held, so nobody here is writing password handling. Email and password works immediately, with social sign-in a small addition when you want it.

The footage stays on their machine

Because the encoder runs in the tab, a file is read from the visitor’s disk and written back to it. Nothing about editing requires an upload, which means the raw footage is not sitting on your infrastructure waiting to be breached, subpoenaed, or paid for. It is worth saying so on the marketing page, because it is a real difference rather than a positioning line.

Three roles, and the demo visitor

The template ships visitor, user, and admin. The interesting one is the first: a stranger trying the demo needs to do real editing without an account, and without touching anything real. Give the demo its own throwaway tables rather than letting an anonymous session near production rows.

Row-level security across every table

The template ships 80 row-level security policies, and for once the rule they enforce is simple: projects, videos, and exports belong to exactly one person, and nobody else reaches them. The database applies that on every read and write, so a screen that forgets to filter still cannot show one person another person’s work.

Stored files need their own rules

Anything you do choose to keep (an export somebody saved, a source file they uploaded on purpose) is a file in storage rather than a database row, and needs its own access rules written alongside the table’s. A private projects table in front of a readable bucket is the version of this that looks finished and is not.

Almost nothing to keep secret

This template ships with no third-party API keys at all, which is rare here and is a direct consequence of on-device processing. The only secret is the database’s service key, and it stays on the server. The moment you add an AI feature you add your first real key (see below) so build the habit before you need it.

The database is the only copy until you pay for one

Projects and exports are records like any other, and the free tier keeps no backups of them. Supabase Pro, from $25/mo, adds a daily backup with 7 days of history. Losing a customer’s finished edit is a support conversation you do not want to have without one.

PromptCheck who can see what
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.

Paste this before launch so Codex checks nobody can see data they shouldn’t.

The one rule that matters: the database service key, and any AI provider key you add later, never go into the app or a public repo. If one gets out, treat it as compromised and rotate it the same day.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • An AGENTS.md file at your project root: Codex reads it automatically before every task, so you never have to remind it
  • Setting Codex’s permissions once for the session, instead of approving every small edit by hand
  • Handing a long, well-scoped task to Codex cloud, so it keeps working in an isolated environment while you do something else
  • Reviewing a diff in the IDE extension, next to the code it touched, before you keep it

Slows the build

  • Leaving permissions wide open for a sensitive change instead of narrowing them for that one task
  • Skipping the AGENTS.md file, so Codex starts each new task without your conventions loaded
  • Handing Codex cloud a vague, open-ended task, where you can’t steer it mid-run the way you can in a live terminal session
  • Merging a cloud task’s changes back in without reading the diff first
Version control

Git: what it is, and why you need it

Before you build anything, meet the one tool that makes building safe. You need no coding background for it: Git remembers every version of your project, so you can try things, break things, and get back to a working state in seconds.

What Git actually is

Git is a quiet recorder that runs alongside your project. Each time you save your work it keeps a full snapshot, so the entire history of your project lives on your computer, not just whatever the files look like right now.

Why you need it

Codex asks before it edits files or runs commands, unless you widen its permissions for the session. Once you do, Git is what makes that safe: there’s always a working version to return to, so you can hand it a bigger task without the fear of losing what already works.

A commit is a save point

Each commit is a snapshot with a short note, like “added the home page”. Make one after every working step and you can jump back to any of them later.

GitHub’s beginner guide to Git

Undo anything, safely

If a change breaks something, you roll back to the last good commit instead of unpicking it by hand. It’s the safety net that keeps a Codex session low-risk even once you’ve widened its permissions.

GitHub is also where Codex can start from

Git lives on your computer. GitHub is a free, private cloud copy of the same project. Keep it private, and never commit secret keys or passwords. Once your project is pushed there, Codex cloud can pick up a task straight from a GitHub issue or repo, without you opening a terminal at all.

Create a free GitHub account

You rarely type git commands

There’s little to memorize. Ask Codex to “commit this” or “undo the last change” and it runs the git steps for you, inside whatever permission boundary you’ve set. Prefer clicking to typing? The Codex extension for your editor shows each change next to the code it touched before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.

Get Codex
Going live

Where to put the app once it works

The app itself is a folder of static files, and it stays small no matter how much video passes through it, because none of it passes through it. One hosting question here that the other builds do not have is answered in the notes beside each host.

HostBest forNotesFree tier
VercelOne-click deploysConnect the repository and it publishes on every push, with a Vite project needing no configuration. Response headers are configurable, which matters if you go multithreaded later. The free Hobby tier is personal, non-commercial only, so a product with users belongs on Pro at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitConnect the repository or drag the built folder in. Custom response headers are supported through a config file, so the multithreaded route stays open.Free tier
Cloudflare PagesCheapest at scaleServes from wherever is nearest the visitor, and supports custom headers. A reasonable default here, since the thing being served is small and static.Generous free tier
GitHub PagesFree Git-based hostingPublishes from your GitHub project with one routing setting. Two catches: serving from a private repository needs a paid plan, and it does not let you set custom response headers, which closes the multithreaded option permanently.Free from a public repo only
Firebase HostingTeams already on GoogleOne setup, then a single command per release, and headers are configurable in its own config file. Worth it mostly if Google is already your stack.Free Spark tier
AWS Amplify HostingTeams already on AWSDeploy from the AWS console with a rewrite rule for deep links, and custom headers available through its configuration. Sensible when AWS is already where your billing goes.Free tier (build + hosting)
SurgePublish from the terminalOne command puts the built folder online with no repository in the loop. Good for showing an early timeline to someone, less so for a product with headers to configure.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersPoint it at the project and it builds and serves it, alongside anything else in that account.Free - 3 static sites, 1 GB/mo transfer

Pick on two things here rather than one. The usual question is whether the plan allows commercial use. Vercel’s Hobby tier does not. The one specific to this build is whether the host lets you set custom response headers, because the faster multithreaded encoder needs them and the default single-threaded one does not. Building on the default and keeping the option open is the sensible order.

Faster exports have a hosting requirement, and it is worth knowing before you choose a host. The encoder ships in two forms. The single-threaded one this template uses runs anywhere with no special setup. The multithreaded one is considerably faster and needs SharedArrayBuffer, which browsers only expose to a cross-origin isolated page, meaning your host must send `Cross-Origin-Opener-Policy: same-origin` and `Cross-Origin-Embedder-Policy: require-corp` (or `credentialless`), per MDN. A host that cannot set response headers cannot run the fast path at all. Start on the default, and switch only if exports are genuinely too slow for your users.

Database & backend

Keep your data in Supabase

Records, accounts, and whatever files you decide to keep. Note what is missing: no transcoding service, because there is nothing left to transcode by the time a file reaches you.

ServiceBest forNotesFree tier
SupabaseData, auth, filesProjects and exports in Postgres, accounts in auth, and storage for whichever files you decide are worth keeping. Make a free project, hand over the URL and publishable key, and it is connected. Keep an eye on one line only, storage, because finished videos are the sole large thing that ever lands here.Free tier, then usage-based
AI workflows

Add AI capabilities in one simple step

Securely route your AI API keys through a lightweight serverless function. Use simple prompts to automatically caption a cut, trim the silence out of it, and draft its title and description.

Captions from the audio

Transcribe the cut and lay the text over it as subtitles the user can correct. The most-requested feature in any editor, and the one people will otherwise leave to do somewhere else.

PromptCaptions from the audio
Add a "Generate captions" action on the editor that extracts the audio track from the current cut, sends it to a server-side function that calls a speech-to-text model, and returns timed segments. Render them as an editable caption track on the timeline that the user can fix before burning them into an export, and keep the audio out of long-term storage once the transcript comes back.

Cutting the silence out

Find the gaps and the dead air, and propose cuts. Turns a rambling twelve-minute take into a tight four without anyone scrubbing through it by hand.

PromptCutting the silence out
Add a "Tighten this" action that analyses the transcript and the audio levels for long pauses, filler, and dead air, then proposes a set of cuts as a preview the user accepts, adjusts, or rejects on the timeline. Never apply them automatically, and always leave the original clip intact so the change can be undone.

Titles and descriptions from the cut

Draft the text that has to go around the video wherever it is published, from what the video actually says. It is the chore at the end that stops people shipping.

PromptTitles and descriptions from the cut
Add a panel on the export screen that sends the transcript to your ai function and returns a suggested title, a short description, and a handful of tags, sized for wherever the user says they are publishing. Present them as editable drafts rather than final copy, and let the user regenerate any one of them on its own.

Picking the thumbnail

Choose the frames worth using as a cover image, rather than making somebody scrub to find one. A small feature that removes a genuinely annoying step.

PromptPicking the thumbnail
Add a "Suggest a thumbnail" action that pulls several candidate frames from the finished cut (avoiding blur, blank frames, and mid-blink shots) and offers them as a row the user picks from, with the option to scrub for their own frame instead. Generate the candidates on the device using the frames you already have, so no video leaves the browser for this.

Each prompt above should pick whichever model tier fits the job: a fast, lower-cost model for high-volume work, and a stronger reasoning model for anything that weighs tradeoffs against each other. Codex’s model names change faster than this page does, so check OpenAI’s current model line-up (linked in the references below) before you build, rather than copying a name you saw once. Keep all of it behind that same ai function, so one key and one rule set covers every feature you add.

Ready-made option

Get a head start with our template

Everything above assumes an empty folder. It does not have to be. The same editor exists already built, which turns the twenty hours of timeline work into an afternoon of deciding what your export presets should be.

Browser Video Editor

The exact video editor this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A video editor that works in the browser: clips are trimmed, reformatted, and stitched right on the device, with no server needed to process video. Projects keep the work organized, and an export pipeline delivers the finished clip.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

The timeline already works. That is most of what this saves you. Behind it, the projects, the storage rules, the export flow, the demo mode, and the admin panel are done too.

Building the core from scratch

~89 hrs

Opening the template, already built

~1 hr

~88 hrs of building you skip

Two different measurements, deliberately: ~89 hrs is what building the editor and everything around it costs you, and ~1 hr is how long the finished one takes to open and point at your own database. Shaping the formats and presets to your product takes the same time either way, so neither side counts it.

A working editor from day one

Open an app where clips already trim, reorder, and export. The timeline is the piece that takes weeks to build and minutes to evaluate, so start by using it rather than building it.

Accounts and access rules already wired

Three roles and 80 row-level security policies work out of the box, so each person reaches their own projects and nobody else’s, and the demo visitor reaches neither.

The awkward machinery already built

Loading the encoder, driving it from the interface, generating thumbnails locally, reporting real export progress, and the admin view over storage and exports. Each one is days you are not spending.

Clean structure your AI can safely customize

Types everywhere, files grouped by feature, comments where the reasoning is not obvious. That pays back harder here than on most templates: editor code degrades quickly when changes land without an existing pattern to imitate, and a tool with one to follow produces work that fits.

Customer story

From founders who build on our templates

We needed a working product in front of users fast. I started from one of these templates instead of a blank repo, customized it in our AI tool, and shipped in days - not the weeks it usually takes.
Jeevan ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common questions

Not for editing, no. The encoder is compiled into the page and runs on the visitor’s own processor, so a file is opened from their disk, cut there, and written back there. The only things that reach your server are the ones you deliberately store: a project’s settings, and whichever finished exports you decide to keep.

No. Describe what you need in plain language and your AI coding tool writes the tables, the accounts, the access rules, and the storage rules. Your own job is creating a free Supabase project for it to point at, so the records end up somewhere you own.

That is a decision rather than a fixed number, and it is worth making early. A browser tab has finite memory, so long or high-resolution files are where it strains. Short clips at 1080p are comfortable on ordinary hardware. Set a ceiling you are happy to defend, tell people about it before they pick a file, and fail politely when they exceed it.

Because it is one browser tab rather than a whole machine, and by default it uses a single-threaded build of the encoder. A multithreaded build is meaningfully faster, at the cost of a hosting requirement: browsers only allow it on a cross-origin isolated page, which means your host has to send specific response headers. Start on the default and switch only if your users actually feel it.

Less than you would expect, because the expensive part of video is missing. No rendering bill arrives at any volume, because that work happens on your users’ devices. What is left is Supabase and a host, both starting free, with Supabase Pro from $25/mo once you have real users and free projects would otherwise pause. Your storage bill then depends entirely on how much you keep and for how long.

Yes, and this is the point where the template gains its first outside key. Captions are what most people add first, then silence trimming, titles and descriptions, and thumbnail suggestions. Add one small server-side function, route all of them through it, and keep the provider key on the server rather than in the app.

Yes, and for an editor it is worth the effort. The product demonstrates itself in about thirty seconds if you let it. The template ships a demo mode with its own throwaway tables, so a stranger can load a sample clip and cut it without an account and without touching anything real.

Nobody, unless you build that on purpose. Every project, video, and export belongs to one account, and the database enforces it on every query rather than trusting the screen to filter. Shared team projects and reviewer links are both possible, but both are features to design rather than settings to switch on.

Nothing here is proprietary. The records live in ordinary PostgreSQL, so a standard dump gives you every project and export in a form any Postgres host accepts, and stored files come out of storage the same way. The videos themselves were always ordinary files on ordinary disks.

Yes. Every host here connects a custom domain with free HTTPS in a few clicks. Worth doing before you invite anyone, since a tool asking people to open their own files deserves to look like it belongs to you.

No, though you will type the occasional command: installing Codex, starting the app, applying a database change. The setup section above lists what you need, with a link for each, and once it’s on your machine Codex runs most of those commands for you.

A regular ChatGPT chat can sketch ideas and write snippets, but it isn’t working on your actual project. Codex reads and edits the real files on your computer. The app you get out of it is one you can run and publish, not a preview.

On a ChatGPT plan, Codex’s usage resets on a rolling window rather than billing per token, so a heavy day of building can bump into a limit. You either wait for it to reset, move up a plan, or switch to pay-as-you-go API billing for the rest of the session. Nothing you’ve already built is lost either way, so the work only pauses.

References

Sources checked August 2026
  1. 01Pricing (per rendered minute), Shotstack. shotstack.io
  2. 02Pricing (credits, storage, video bandwidth), Cloudinary. cloudinary.com
  3. 03Pricing (quote-only licensing), IMG.LY. img.ly
  4. 04Pricing (plan volumes), Creatomate. creatomate.com
  5. 05Usage and multithreading requirements, ffmpeg.wasm docs. ffmpegwasm.netlify.app
  6. 06Cross-Origin-Embedder-Policy and cross-origin isolation, MDN. developer.mozilla.org
  7. 07Pricing (Pro plan, storage, egress, backups), Supabase. supabase.com
  8. 08Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  9. 09Row Level Security, Supabase docs. supabase.com
  10. 10Storage access control, Supabase docs. supabase.com
  11. 11Pricing (plans, usage limits), ChatGPT docs. learn.chatgpt.com
  12. 12Codex CLI, ChatGPT docs. learn.chatgpt.com
  13. 13API pricing (models), OpenAI for developers. developers.openai.com
  14. 14IDE extension, ChatGPT docs. learn.chatgpt.com
  15. 15ChatGPT desktop app, ChatGPT docs. learn.chatgpt.com
  16. 16Codex cloud, ChatGPT docs. learn.chatgpt.com
  17. 17AGENTS.md, ChatGPT docs. learn.chatgpt.com

This guide is general information. Third-party prices, plan limits, and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Export speed and the maximum practical file size depend on the visitor’s own device and browser, so treat any performance expectation here as a starting point to test rather than a specification. Build hours and the cost estimates derived from them are our own estimates, not quotes. Codex, ChatGPT, and the OpenAI API are products of OpenAI. Verify current capabilities and pricing before relying on them.