Short answer: green spill is green light bouncing from the backdrop onto skin, hair and pale clothing. A chroma key cannot remove it: those pixels are genuinely green, so raising tolerance only eats the subject. Key the frame first, then despill — cap the green channel at the larger of red and blue on the edge. The tool below does that to a keyed PNG, in this tab.
Waiting for a keyed PNG. The file is read in this tab and never uploaded.
This tool changes colour, not transparency. It cannot key a background out — use the green screen remover first, then bring the transparent PNG here. The checkerboard shows the alpha you already have.
Why raising tolerance never removes spill
Spill is not a keying failure. The backdrop throws green light onto the subject, and the camera records a pixel that really is green. The key measures distance from the sampled background colour, so it has no way to tell a green fringe from a green shirt — both are green pixels near the same point.
That is measurable. Using the same colour-distance maths as this site's keyer, with the background sampled at #00b140 and edge softness fixed at 6%, a shoulder spill rim (#3f8f52) sits 16.71% away from the key colour, while a genuinely green shirt (#2f7d3f) sits 15.87% away. The shirt is closer to the background than the spill is, so it always dies first:
| Tolerance | Shoulder spill rim | Green shirt | What you see |
|---|---|---|---|
| 10% | alpha 255 | alpha 250 | Both solid; the rim is still green |
| 12% | alpha 200 | alpha 165 | Rim fades slightly; the shirt is already softer |
| 14% | alpha 115 | alpha 80 | The usual compromise: a half-transparent green ghost |
| 16% | alpha 30 | alpha 0 | Rim nearly gone; the shirt is gone |
| 18% | alpha 0 | alpha 0 | Both removed — including the clothing |
Measured 2026-10-22 with this site's keying formula on synthetic pixels; alpha 0 is fully transparent, 255 fully opaque. The exact numbers depend on the sampled green, but the order does not: the subject's own green is always inside the tolerance before the spill is.
So the fix cannot be a slider that decides which green pixels are real. It has to be a second operation that removes the green cast while keeping the pixel — and it has to run after the key, on the part of the image that survived.
The clamp that removes spill: green down to max(red, blue)
A despill does not delete anything. It lowers the green channel until green is no longer the strongest colour in that pixel. The gentle form is one line:
g' = g − strength × max(0, g − max(r, b))
At 100% strength, any pixel whose green is above both red and blue has its green pulled down to the larger of the two. A pixel that is already red-dominant — normal skin — is not touched at all. Measured on the same eight test pixels:
| Pixel | Original | Green above max(R,B) | Gentle, 100% | Strong, 100% |
|---|---|---|---|---|
| Shoulder spill rim | #3f8f52 | 61 | #3f5252 | #3f4952 |
| Hair edge spill | #2a3a2c | 14 | #2a2c2c | #2a2b2c |
| White shirt + spill | #e6ece6 | 6 | #e6e6e6 | #e6e6e6 |
| Skin midtone | #d9a07a | 0 | #d9a07a | #d9a07a |
| Green shirt | #2f7d3f | 62 | #2f3f3f | #2f373f |
| Lit backdrop | #00b140 | 113 | #004040 | #002040 |
Measured 2026-10-22 in Node 24 on the pixels shown; “strong” caps green at the average of red and blue instead of the larger one. The backdrop rows are there to show why the order matters — see below.
Strength is a real control, not decoration. At 50% the same rim becomes #3f7152, which still reads green on a white background; at 100% it becomes #3f5252, a neutral grey-teal. On a soft edge, the honest starting point is 100%, then lower it only if the result looks bleached.
What despill does to the edge — and to a green shirt
Two things surprise people, and both are measurable.
The edge stays soft, but stops being green. This tool leaves the alpha channel exactly as it found it. A spill rim that the key left at alpha 115 keeps alpha 115; only its colour changes. If you re-key the despilled file instead, the pixel is now 26.13% away from the key colour rather than 16.71%, so the key would make it fully opaque. That is fine when you want a solid matte, and wrong when you wanted a soft fade — so despill after the key, and do not key twice.
It cannot tell spill from costume. The green shirt is green, so the clamp hits it: #2f7d3f becomes #2f3f3f, a teal-grey. Selecting “edge pixels only” does not save it here, because at 14% tolerance with 6% softness the shirt is already inside the soft band (alpha 80). Measured on this exact set:
| Pixel | Alpha after key (14% / 6%) | Edge-only despill | Result |
|---|---|---|---|
| Shoulder spill rim | 115 | Applied | #3f5252 |
| Green shirt | 80 | Applied | #2f3f3f |
| Hair edge spill | 255 | Skipped | Stays #2a3a2c |
| White shirt + spill | 255 | Skipped | Stays #e6ece6 |
Measured 2026-10-22. Edge-only means alpha 1–254: the fringe is treated, fully opaque spill is not.
So edge-only is a compromise, not a solution. It protects opaque spill-free areas and misses opaque spill; it still hits clothing that sits in the soft band. If the subject wears green, the reliable fix is a mask: despill everything, then paint the costume back, or invert the mask and apply the clamp only outside it.
Do it after the key, never before
The clamp is colour-blind in a second way: it also destroys the backdrop you were about to key. Run the gentle form at 100% on the lit background #00b140 and it becomes #004040. That is 25.58% away from the original key colour instead of 0%, so at 14% tolerance its alpha goes from 0 to 255 — the background comes back, now dark teal.
| Order | Backdrop after step 1 | Distance from key | Key result at 14% |
|---|---|---|---|
| Key, then despill | transparent, alpha 0 | 0% | Correct matte; despill touches only visible pixels |
| Despill, then key | #004040 | 25.58% | Alpha 255 — the backdrop survives the key |
The rule is short: key → despill → composite. The tool above enforces it by skipping every pixel with alpha 0, so a properly keyed PNG cannot have its background turned into an unkeyable colour.
Spill on video: one more filter, same order
FFmpeg ships a despill filter, and it belongs after chromakey in the chain. Its alpha option is off by default, so the matte from the key is carried through while only the colour is corrected:
ffmpeg -i in.mp4 -vf "chromakey=0x00b140:0.10:0.06,despill=type=green:mix=0.5,format=yuva420p" -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 28 -auto-alt-ref 0 out.webm
The numbers do not transfer one-to-one. Run on the same shoulder-rim pixel, FFmpeg's filter produced #3f4852 at the default mix=0.5 and #3f3e52 at mix=1 — stronger than the gentle clamp here (#3f5252) at the same nominal “half” setting. On the green shirt, mix=1 gave #2f373f. Treat mix as a separate scale and judge it on a frame, exactly as with the tolerance.
Measured 2026-10-22 with FFmpeg 9.0.2 on a 700×100 RGB test strip, decoded back to RGB. The full video path, including alpha output and verification, is on green screen remover for video.
Check the despill before you deliver
- Composite over white, not black. A dark matte hides a grey fringe; white exposes it in one second.
- Look at the alpha you kept. Toggle the checkerboard: the edge should still fade, not become a hard cut.
- Check skin separately. Normal skin has no green excess, so a clamp should leave it alone. If the face changed colour, your method is too strong or the cast is not simple spill.
- Check any green wardrobe. If it turned grey-teal, mask it or drop to 50% strength and accept a little spill.
- Zoom to 200% on hair. A single-pixel green line survives a full-frame look and disappears at 200%.
- Do not re-key the despilled file. The clamp moved those pixels away from the key colour; a second key will harden the edge you just softened.
Green screen remover spill: questions
Why does my green screen removal look jagged or have green edges?
Two different faults. Jagged means the alpha is close to binary: every pixel is either 0 or 255, so diagonal and hair edges become a staircase. That is an edge-softness problem — raise softness, then re-check. Green edges mean the pixels survived the key but still carry the backdrop's colour; that is spill, and softness only makes them a softer green. Fix them in that order: soften the matte first, then despill the colour. If you despill first and soften afterwards, the fringe turns grey but the staircase stays.
Why did my green shirt turn grey after despill?
Because the clamp acts on any pixel where green is the highest channel, and a green shirt qualifies. Measured here, #2f7d3f keeps its red and blue but drops green from 125 to 63, giving #2f3f3f. Edge-only does not save it when the shirt is inside the soft band: at 14% tolerance and 6% softness that pixel sits at alpha 80, so it is treated. Either mask the shirt before despilling, or use 50% strength — which gives #2f5e3f, still green but less saturated — and accept that some spill remains.
Can despill fix a green cast on skin?
Only partly, and this is where most tutorials overpromise. The gentle clamp does nothing to a pixel whose red is already higher than its green: the measured skin midtone #d9a07a has green 160 against a red of 217, so it is left untouched. A skin pixel with a visible green cast, #b8b088, also has green below red, so the gentle form does nothing; the strong form pulls green from 176 to 160 and turns the skin slightly magenta. Neither is a real skin correction. If faces are green, fix the light or use a masked hue/saturation correction — do not push the global clamp harder.
Is it safe to despill before keying?
No. The clamp does not know the backdrop is meant to disappear, so it darkens it: #00b140 becomes #004040, which is 25.58% away from the original key colour. At 14% tolerance that pixel's alpha is 255, so the background survives the key. Key first, despill second. The tool on this page skips alpha-0 pixels for exactly that reason.
Next step
Key the frame at the browser green screen remover, download the transparent PNG, then drop that PNG into the tool above. For a clip rather than a still, start with the video workflow and add despill to the filter chain. If you came here for the job builder instead, start at the Seedance 2.5 builder.