How to color-grade a video online with no software install
- Step 1Drop your video onto the tool — Accepted inputs include MP4, MOV, MKV, WEBM, AVI, M4V, and TS. The clip is read locally — nothing uploads. Free tier allows files up to 1 GB; Pro raises this to 10 GB, and Pro+Media / Developer to 100 GB. One file is graded per job (queue several for a batch — see Match colour across a batch of videos).
- Step 2Wait for the WebGPU preview to load — If your browser supports WebGPU, a live preview of the first frame appears and re-renders instantly as you move sliders. If WebGPU is unavailable, the preview is disabled but the sliders still apply during the FFmpeg export — you just judge the result from the exported file instead of the live canvas.
- Step 3Set brightness and gamma to fix exposure first — Brightness adds or subtracts a flat offset across the whole image (-1..1, default 0). Gamma (0.1..10, default 1) bends the midtones without crushing blacks or blowing highlights — lower than 1 darkens midtones, higher than 1 lifts them. Fix exposure before touching contrast or saturation so you are not chasing your own changes.
- Step 4Set contrast to shape the tonal range — Contrast (0..2, default 1) stretches or compresses the gap between shadows and highlights around the midpoint. Values above 1 add punch; below 1 flattens the image. Watch the preview histogram-by-eye: push contrast until the blacks feel solid but detail is still visible in the shadows.
- Step 5Set saturation for the colour intensity you want — Saturation (0..3, default 1) scales colour intensity. 0 produces a greyscale image, 1 is untouched, and values up to 3 push colour hard. For a natural quick grade, stay between 1.0 and 1.3 — beyond ~1.5 skin tones turn orange and skies clip. See Boost saturation for travel vlog footage for the high-saturation case.
- Step 6Export the graded MP4 — Export runs FFmpeg's
eqfilter over every frame and re-encodes with libx264 at CRF 20, preset medium, audio copied. The output is always an.mp4regardless of the input container. Full export requires Pro; the free tier gives one 720p graded preview per day. To compress the result for upload, follow with web-optimizer or video-transcoder.
The four color-grade controls
Every control maps directly to a parameter of FFmpeg's eq filter. There are no other sliders, presets, or LUT inputs — these four numbers are the entire grade.
| Slider | Range | Default | What it does | eq parameter |
|---|---|---|---|---|
| Brightness | -1 to 1 | 0 | Flat additive offset across the whole image — lifts or lowers every pixel equally. Best for a small overall exposure nudge | brightness |
| Contrast | 0 to 2 | 1 | Stretches (>1) or compresses (<1) the tonal range around the midpoint. 0 is a flat grey frame; 2 is maximum punch | contrast |
| Saturation | 0 to 3 | 1 | Colour intensity. 0 = greyscale, 1 = unchanged, 3 = heavily oversaturated. Skin tones break down past ~1.5 | saturation |
| Gamma | 0.1 to 10 | 1 | Midtone curve. Below 1 darkens midtones, above 1 lifts them — without the hard clipping a brightness shift causes | gamma |
Export pipeline — what actually happens
Fixed encode settings the tool applies on export. These are not configurable from the grader; use a sibling encoder if you need different codecs or bitrates.
| Stage | Setting | Notes |
|---|---|---|
| Filter | eq=brightness=…:contrast=…:saturation=…:gamma=… | Your four slider values, applied to every frame |
| Video codec | libx264 (H.264) | Output container is always .mp4, regardless of the input format |
| Quality | CRF 20, preset medium | Visually near-lossless; not user-adjustable in this tool |
| Audio | -c:a copy | Stream-copied, never re-encoded — soundtrack is bit-identical |
| Engine | FFmpeg.wasm in-browser | No upload; processing speed depends on your CPU and clip length |
Tier limits for color grading
File-size caps come from the video tier table; the preview quota is a separate daily allowance for the live/preview path. Full graded export requires Pro.
| Tier | Max file size | Graded export | Preview quota |
|---|---|---|---|
| Free | 1 GB | Preview only | 1 grade/day at 720p |
| Pro | 10 GB | Yes | 5 grades/day at 1080p |
| Pro+Media | 100 GB | Yes | Unlimited, up to 4K |
| Developer | 100 GB | Yes | Unlimited, up to 4K |
Cookbook
Concrete slider combinations for common quick-grade goals. Values shown are the exact numbers to type into the four boxes; the preview updates as you go.
Subtle overall lift on a flat-looking clip
Footage that came out dull and grey usually needs a touch more contrast and saturation plus a small gamma lift — not a brightness shove, which would just grey out the blacks.
Goal: add life to a flat clip without blowing it out brightness = 0.02 contrast = 1.12 saturation = 1.15 gamma = 1.05 Result: solid blacks, a little more colour, midtones lifted slightly. Output: graded.mp4 (H.264, CRF 20, original audio copied)
Neutralise an overexposed daytime shot
When highlights are hot, drop brightness slightly and pull gamma below 1 to recover midtone detail. Contrast stays near 1 so you do not crush the shadows further.
Goal: tame a too-bright outdoor clip brightness = -0.05 contrast = 1.00 saturation = 1.05 gamma = 0.90 Note: brightness is a flat offset, so very hot (clipped) highlights cannot be recovered — only midtones respond to gamma.
Quick black-and-white conversion
Set saturation to 0 for a clean greyscale, then use contrast and gamma to control the mood. No separate monochrome tool needed.
Goal: convert to black and white brightness = 0 contrast = 1.20 saturation = 0 <- removes all colour gamma = 0.95 Result: contrasty greyscale .mp4.
Default pass-through (sanity check)
Leaving all four at default still re-encodes the video to H.264 CRF 20. Useful only if you specifically want an H.264 MP4 copy with audio preserved — but use a dedicated transcoder for that instead.
brightness = 0 contrast = 1 saturation = 1 gamma = 1 The eq filter is effectively a no-op, but libx264 still re-encodes. For a true format conversion, use /video-tools/video-transcoder.
Two-step grade with a downstream encoder
The grader always outputs H.264 CRF 20. If you need a smaller file or a different codec, chain the graded MP4 into a sibling tool — the grade is already baked in.
Step 1 — color-grader: brightness=0.03 contrast=1.1 saturation=1.2 gamma=1.0 -> graded.mp4 Step 2 — compress for the web: drop graded.mp4 into /video-tools/web-optimizer -> smaller, faststart-flagged graded.mp4 (or /video-tools/h265-encoder for an H.265 version.)
Edge cases and what actually happens
WebGPU not available in the browser
Preview disabledIf your browser or GPU does not support WebGPU, the live preview panel shows 'WebGPU not available — live preview disabled.' This does not block grading: the sliders still apply during the FFmpeg export pass, so you can grade blind and judge the result from the exported .mp4. Try a recent Chrome/Edge build to restore the live preview.
Clipped highlights cannot be recovered with brightness
By designBrightness is a flat additive offset, not an exposure-aware recovery. Pixels already at maximum white (clipped on the sensor) stay white — lowering brightness just darkens everything else around them. Gamma can rescue midtone detail but not true clipping. For badly blown footage there is no software fix; shoot with more headroom next time.
Saturation above ~1.5 breaks skin tones
ExpectedSaturation scales all colour channels equally, so pushing past ~1.5 turns faces orange and clips bright skies and signage. The slider allows up to 3, but for natural results keep it under ~1.3. The high end exists for stylised looks, not everyday correction.
Output is always MP4 / H.264
By designRegardless of whether you drop in a MOV, MKV, or WEBM, the export is a libx264 .mp4 at CRF 20. The grader has no codec or container picker. If you need ProRes, H.265, or AV1, grade first then pass the result to prores-encoder, h265-encoder, or av1-encoder.
No LUT (.cube / .3dl) upload
Not supportedThis tool does not load LUT files. It is a four-slider eq grade only — there is no CUBE/3DL importer and no LUT-intensity blend. If you need to apply a creative or log-to-Rec.709 LUT, do it in your NLE; for non-destructive grading the in-app guidance recommends exporting a LUT from your editor and applying it there.
File exceeds the tier size cap
RejectedA clip larger than your tier's limit (Free 1 GB, Pro 10 GB, Pro+Media / Developer 100 GB) is rejected before processing with a 'too big' notice. Trim the clip first with lossless-trimmer or upgrade your tier.
Grade is destructive (baked in)
ExpectedColour grading bakes the look into the encoded pixels — there is no editable grade layer in the output. Keep your original file. For a non-destructive workflow, do the grade as an adjustment/LUT in a full NLE instead.
Long 4K clip is slow to export
ExpectedFFmpeg.wasm runs on your CPU in the browser tab, so a long or high-resolution clip can take minutes — the eq filter plus libx264 CRF 20 re-encode is real work. The WebGPU preview is GPU-accelerated and stays fast; only the final export is CPU-bound. Keep the tab focused for best throughput.
Audio is preserved untouched
PreservedThe export uses -c:a copy, so the original audio stream is carried over bit-for-bit with no re-encode. If the source has no audio track, the output simply has none — grading never adds or alters sound.
Free tier hits the daily preview limit
Quota reachedFree tier allows one 720p color grade per day; after that an upgrade overlay appears. Pro raises this to 5/day at 1080p, and Pro+Media / Developer remove the limit at up to 4K. The quota resets daily and is tracked locally per feature.
Frequently asked questions
Do I need to install any software?
No. The grader runs entirely in your browser using FFmpeg.wasm for the export and WebGPU for the live preview. There is nothing to download and no DaVinci Resolve or Premiere licence required for these four adjustments.
Is my video uploaded anywhere?
No. The file is read locally with the browser's File API and processed in-tab. Nothing is sent to a server — a raw camera clip or a private interview never leaves your machine.
What exactly can I adjust?
Four things: brightness (-1 to 1), contrast (0 to 2), saturation (0 to 3), and gamma (0.1 to 10). They map directly onto FFmpeg's eq filter. There are no other controls, no auto-enhance, and no curves panel beyond gamma.
Can I load a LUT (.cube or .3dl)?
No. This tool is a four-slider eq grade and does not import LUT files. For LUT-based grading, apply the LUT in your NLE. For non-destructive grades, export a LUT from your editor and use it there instead of baking it in here.
What format is the output?
Always an .mp4 encoded with libx264 (H.264) at CRF 20, preset medium. The container and codec are fixed. To get H.265, AV1, or ProRes, grade here first, then run the result through the matching sibling encoder.
Does grading hurt my audio quality?
No. The export copies the audio stream verbatim with -c:a copy, so the soundtrack is bit-identical to the source. Only the video track is re-encoded.
Why does the preview say WebGPU is not available?
Your browser or GPU does not expose WebGPU. The live preview is disabled, but the sliders still apply during export — you just review the result from the exported file. A current Chrome or Edge build usually restores the live preview.
How big a file can I grade?
Free tier accepts files up to 1 GB, Pro up to 10 GB, and Pro+Media / Developer up to 100 GB. There is no duration cap — only the file-size limit applies.
Is the grade reversible?
Not from the output file — the look is baked into the encoded pixels. Always keep your original. If you need an editable grade, do it as an adjustment layer or LUT in a full editor.
Can I grade several clips at once?
Yes — drop in multiple files and the tool processes them as a batch, applying the same four settings to each and producing one graded MP4 per clip. Batch size is limited by tier. See the batch-grade guide at /video-tools/solutions/match-video-color-batch-grade-set.
How do I make the graded file smaller for upload?
The grader outputs H.264 CRF 20, which is high quality but not the smallest. Pass the graded MP4 to web-optimizer for a faststart-flagged web file, or video-transcoder / h265-encoder for a smaller codec.
Why does a default (all-neutral) export still re-encode?
Even with brightness 0, contrast 1, saturation 1, gamma 1, the tool still runs the eq filter and re-encodes with libx264. If you only want a format copy, use a dedicated transcoder; the grader always produces a fresh H.264 encode.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.