# AI Creator published content Generated from the final published HTML. Page-specific evidence and limitations are retained below. Source: https://ai-creator.top/ # AI Creator Free local-first creative AI tools for images, audio and video. No account is required, and core workflows process media directly in the browser where possible. ## Practical browser-based AI workflows Edit video in Timeline Studio, remove image backgrounds, erase unwanted objects, extract line art, relight photographs, create anime-style interpretations and transcribe speech with workflows verified in modern browsers. ## Local-first with clear boundaries Tool pages explain model downloads, browser storage, limitations and any remote service involved. AI results can contain mistakes or artifacts and should be reviewed before publication. ## Original guides based on the tools The evidence library separates observed source-and-output comparisons, source-reviewed engineering notes and reproducible browser checks. The newest field notes inspect Timeline Studio's generation-plugin boundary and five-frame NanoVSR pipeline; the privacy method shows readers how to examine network and browser storage behavior themselves. ## How workflows are verified A workflow remains in the public tool index only when a supported sample can reach a visible output in a modern browser. Verification distinguishes ordinary downloads—such as JavaScript, WebAssembly and model weights—from an upload of selected media. Field notes record visible defects and practical acceptance checks instead of treating a completed progress indicator as proof of quality. [Open Timeline Studio](https://video-editor.ai-creator.top/) · [Browse practical guides](https://ai-creator.top/resources/) · [About AI Creator](https://ai-creator.top/about/) · [Privacy Policy](https://ai-creator.top/privacy/) · [Follow on X](https://x.com/marindeloph) · [Contact](https://ai-creator.top/contact/) ## Workflow directory - [Timeline Studio](https://video-editor.ai-creator.top/): Edit a multitrack video project in the separate Timeline Studio application. - [AI Background Remover](https://ai-creator.top/removebackground/): Segment a foreground subject and export a transparent image. - [AI Object Remover](https://ai-creator.top/photomodify/): Paint a mask over an unwanted image region and reconstruct it with inpainting. - [Photo to Line Art](https://ai-creator.top/linechange/): Extract raster contours from a photograph. - [AI Photo Relighting](https://ai-creator.top/relight/): Adjust simulated light position, radius, intensity and color. - [Photo to Anime](https://ai-creator.top/animatechange/): Create an anime-inspired interpretation of a photograph. - [Whisper Audio Transcription](https://ai-creator.top/whisper/): Transcribe speech into editable text in the browser. Tools require JavaScript and a modern browser. Model downloads need network access on first use. See each workflow's guide for input requirements and output limitations. --- Source: https://ai-creator.top/about/ # About AI Creator Meet Martin Delophy, the independent full-stack and algorithm engineer behind AI Creator and its local-first browser tools. ## About the developer AI Creator is independently developed and operated from China by Martin Delophy, a full-stack and algorithm engineer with 10 years of experience across frontend engineering, AI and audio/video development, including 5 years focused specifically on AI systems. ## Technical focus Martin works across product interfaces, browser runtimes and applied machine learning. His areas of focus include Stable Diffusion, Transformer models, ONNX model conversion and inference, WebGPU, computer vision, speech processing and local-first media pipelines. ## Open-source work Public projects include a local-first browser AI video editor with Whisper captions, voiceovers and talking avatars; ONNX browser implementations for old-photo colorization and depth estimation; browser vocal separation; image relighting; and experiments spanning diffusion models, computer vision and embodied AI. ## Creative AI tools without unnecessary friction AI Creator is a collection of practical image, audio, video and design tools built for direct use in a modern browser. The goal is to make useful creative workflows accessible without requiring an account or desktop installation. ## Local-first by design Where the technology allows it, models and media processing run in the browser. This can reduce unnecessary file transfers and gives users a more immediate workflow. Large AI models may take time to download during the first visit, and tool-specific pages disclose important processing boundaries. ## Public profiles Code and technical work: [github.com](https://github.com/MartinDelophy) and [huggingface.co](https://huggingface.co/haixin). Additional profiles: [x.com](https://x.com/marindeloph) [zhihu.com](https://www.zhihu.com/people/ma-ding-de-luo-bai) [linkedin.com](https://www.linkedin.com/in/%E6%B5%B7%E9%91%AB-%E6%9D%A8-1b7559331/) [reddit.com](https://www.reddit.com/user/Secret-Book-8507/) [velog.io](https://velog.io/@martindelophy/posts) [qiita.com](https://qiita.com/MartinDelophy). ## Independence and editorial responsibility Martin Delophy is responsible for AI Creator's original product documentation and resource articles. Product names, open-source models and third-party technologies belong to their respective owners. Guides are reviewed against the behavior and limitations of the tools they describe. ## Feedback Questions, corrections, privacy requests, copyright reports and product feedback are welcome at contact@ai-creator.top. TESTING & EDITORIAL METHOD ## What “verified” means at AI Creator AI Creator combines working browser tools with field notes about their outputs. “Verified” is deliberately narrow: a documented input reached a visible result through the public interface in a modern browser. It does not mean that every device, file, model output or future deployment will behave identically. 01 ### Functional path A supported sample is loaded through the same controls available to visitors. The check covers model initialization, input decoding, the main inference or media operation and a visible result. A progress bar reaching 100 percent is not enough when no usable output appears. Tools that stall or depend on missing model files are removed from discovery until the complete path passes again. 02 ### Output evidence Where a guide makes a visual claim, it should include a source and output pair, a split comparison or another inspectable artifact. Notes distinguish what the example demonstrates from what it cannot establish. Different dimensions, compression, uncontrolled lighting and a single sample are stated as limits instead of being hidden behind broad quality language. 03 ### Processing boundary Browser execution can still require network requests for the page, fonts, WebAssembly and neural-network weights. Reviews separate those downloads from requests that contain selected media. External URLs and optional remote services are called out separately. The privacy guide explains how a visitor can repeat the network and storage inspection with non-sensitive test material. 04 ### Human acceptance Each workflow names defects that a person should inspect: halos on cutout edges, broken perspective after inpainting, changed facial details after style transfer, inconsistent shadows after relighting and incorrect names or numbers in transcripts. These checks matter because a completed AI operation can still return an unusable or misleading result. 05 ### Updates and corrections Substantial article revisions receive a new review date. A workflow can be demoted or removed when production behavior no longer matches its documentation. Readers can report reproducible failures, factual corrections, privacy concerns or rights issues through the contact address; corrections are evaluated against the deployed page and the smallest supported sample that exposes the issue. 06 ### Advertising boundary Navigation pages, privacy explanations and guides without sufficient first-hand evidence remain ad-free. Advertising eligibility is limited to specific articles that have substantive original material and does not change the result of a tool test or the limitations recorded in its field notes. Sponsored conclusions are not part of the editorial method. [Repeat the browser privacy check](https://ai-creator.top/resources/browser-ai-privacy-explained/) [Browse evidence-backed field notes](https://ai-creator.top/resources/) [Report a correction](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/animatechange/ # Photo to Anime Transform a portrait or everyday photograph into an anime-inspired raster illustration. The model keeps broad composition and recognizable features while applying learned color and line conventions. ## Core capabilities - AnimeGAN style transfer - Browser-based generation - Before-and-after preview - Optional higher-quality processing ## How it works AnimeGAN-style translation maps photographic textures and colors into an illustrated domain. It does not identify a specific artist or reproduce a manually authored drawing process. Faces that occupy a clear portion of the image generally work better than tiny or heavily obscured faces. The high-quality option can take longer because it performs more intensive processing. ## How to use Photo to Anime 1. Upload a portrait or photograph with a clearly visible subject 2. Choose the available conversion mode 3. Wait for the browser model to render the illustration 4. Compare and download the generated result ## Practical uses - Anime-inspired profile images - Creative portrait variations - Illustrated social and presentation assets ## Limitations The conversion can alter small facial details, text, hands and background geometry. It should not be treated as an identity-preserving transformation, and users remain responsible for permission to process source portraits. ## Privacy and processing The style-transfer model is designed for browser inference after download and does not require an account. Model loading and processing time depend on the device and selected quality mode. ## Frequently asked questions Will the result preserve the exact face? No. It aims to retain recognizable features but can change small facial details. What photo works best? Use a clear, well-lit face that is not too small in the frame. Why does the best-quality mode take longer? It uses a more intensive conversion path and therefore requires additional processing time. Is this tied to a specific artist style? The tool applies a general anime-inspired model rather than claiming to reproduce one named artist. AI Creator tools run in modern desktop browsers. STYLE TRANSFER FIELD NOTES ## Keep composition while reviewing identity changes Photo-to-anime translation applies learned illustration patterns to a raster image. It does not reproduce a manual drawing process, and it may simplify or reinterpret features that matter to the subject's identity. The result should be reviewed as a new creative image, not as a faithful copy with a cosmetic filter. 01 ### Choose a source the model can read A clear portrait or scene with a distinct subject gives the translation a stable composition. Tiny faces, heavy occlusion, extreme angles and strong beauty filters reduce useful evidence. Crop the final composition before processing and leave enough space around hair and accessories. Very busy backgrounds can compete with facial detail, while severe JPEG artifacts may become stylized lines or patches. 02 ### Compare recognizable features Switch between source and result while checking face shape, eye placement, hairstyle, skin tone, age cues, glasses, jewelry and clothing details. A pleasing image can still change identity or remove a culturally important feature. Look for asymmetric eyes, fused fingers, broken text and background structures that turn into repeated patterns. Use the higher-quality option only after a preview shows that the composition and identity are acceptable. 03 ### Publish with context and rights The output is anime-inspired rather than a claim to be authored by a particular living artist. Avoid prompts, labels or marketing that falsely attribute the image to someone else. Obtain permission before transforming another person's recognizable photo, and disclose AI assistance when the context could mislead viewers. Keep the original and the chosen result so later revisions do not depend on repeatedly processing an already stylized image. FINAL REVIEW ### Before you export - Use a clear, well-framed source. - Compare identity, accessories and skin tone with the original. - Inspect hands, text and repeated background structures. - Confirm consent before transforming a recognizable person. [Read the responsible photo-to-anime guide](https://ai-creator.top/resources/photo-to-anime-responsibly/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/contact/ # Contact AI Creator Contact AI Creator about support, privacy, copyright, partnerships or product feedback. ## Get in touch Email contact@ai-creator.top for product feedback, technical support, privacy questions, advertising inquiries or partnership proposals. ## Copyright reports If you believe content or functionality on this website infringes your rights, include the affected URL, a description of the protected work, your contact details and a statement explaining your authority to submit the report. ## Support details For technical questions, include the tool URL, browser name, device type, a description of the issue and any non-sensitive error message. Do not email private media files, passwords or authentication codes. ## Response time We aim to review legitimate messages within a reasonable period, but response times are not guaranteed. --- Source: https://ai-creator.top/cookies/ # Cookie Policy Information about cookies, local browser storage, advertising consent and privacy controls on AI Creator. ## What browser storage is used for AI Creator may use cookies, IndexedDB, Cache Storage and local storage for language preferences, AI model caching, application state, security and performance. ## Essential storage Some storage is necessary to remember settings, cache large model files and provide requested features. Removing it may make the next visit slower or reset the application. ## Analytics and advertising If analytics or Google AdSense is enabled, providers may use cookies or similar identifiers for measurement, fraud prevention and advertising. Personalized advertising is used only where permitted and subject to the consent choices presented to you. ## Consent choices For users in regions where consent is required, a consent management platform may provide options to accept, reject or manage advertising purposes and vendors. You can revisit those choices through the privacy controls when available. ## Managing storage Most browsers allow you to block cookies, delete site data or restrict tracking. You can also clear cached AI models through the browser site-data settings. ## Contact Questions about this Cookie Policy can be sent to contact@ai-creator.top. --- Source: https://ai-creator.top/linechange/ # Photo to Line Art Convert a photograph into a simplified line drawing for tracing, crafts, concept work and visual reference. The browser model emphasizes contours while suppressing much of the source color and texture. ## Core capabilities - Automatic contour extraction - Sketch-style raster output - Browser-based inference - Simple upload and download workflow ## How it works The line-extraction model responds to edges and structural transitions in the image, producing a line-focused raster representation of the most salient contours. Clear lighting and a simple background generally result in a cleaner drawing. The result is a stylized interpretation, not a vector trace. Fine texture may become noise, while low-contrast boundaries can disappear. ## How to use Photo to Line Art 1. Choose a clear PNG, JPG, JPEG or BMP photograph 2. Run the browser-based line extraction model 3. Inspect whether important contours remain readable 4. Download the generated raster line art ## Practical uses - Drawing and tracing references - Printable craft and coloring outlines - Concept, tattoo and composition exploration ## Limitations The output is a raster image and does not contain editable vector paths. Busy backgrounds, patterned clothing and image noise can create unwanted lines. The model sets the short edge to 768 px and rounds the other edge down to a multiple of 8. A wide or tall source can therefore have a much longer processing edge. ## Privacy and processing Line-art conversion is designed to run locally in the browser after model download. No account is required, and processing speed varies with device graphics and memory capabilities. ## Frequently asked questions Does the tool create SVG vectors? No. It produces a raster line-art image rather than editable vector paths. What source image works best? A sharp subject with clear contrast and a relatively simple background generally works best. Why are there unwanted lines? Texture, noise and patterned backgrounds can also be interpreted as edges. Can I use the result as a drawing reference? Yes. Drawing, tracing and craft references are common uses, subject to rights in the source image. AI Creator tools run in modern desktop browsers. LINE EXTRACTION FIELD NOTES ## Make line art for a specific downstream use A useful line drawing is not simply the version with the most edges. Tracing, coloring, concept reference and craft cutting each need a different balance between contour, texture and empty space. Decide what the drawing must communicate before judging whether the model kept too much or too little. 01 ### Prepare a readable source Choose an image with clear subject separation and even lighting. Busy foliage, patterned fabric and heavy compression create thousands of small transitions that compete with the main contour. Cropping unnecessary background before processing can make the subject larger and reduce noise. If the source is very dark or flat, a modest exposure adjustment is safer than heavy sharpening, which introduces edges the line model may preserve. 02 ### Review hierarchy, not only cleanliness At normal size, identify the first shapes a viewer sees. The outer silhouette, facial features or product geometry should remain more legible than surface texture. Zoom in to find broken contours, doubled edges and isolated marks, then zoom out again to check whether the drawing still reads. A coloring page needs larger enclosed regions; a technical reference may need internal construction lines that would be distracting in a craft template. 03 ### Understand the export The result is a raster interpretation rather than a true vector trace. Scaling it far beyond the exported dimensions can soften edges, and automatic conversion to vector paths may create excessive control points. Keep the original photograph beside the line image when accuracy matters. For logos, diagrams or manufacturing shapes, redraw the essential geometry in a vector editor instead of treating a model-generated contour as dimensionally exact. FINAL REVIEW ### Before you export - Crop unrelated background before extraction. - Judge the outer silhouette before small texture. - Check for broken and doubled contours. - Use a vector redraw when geometric precision is required. [Read the photo-to-line-art workflow](https://ai-creator.top/resources/photo-to-line-art-guide/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/photomodify/ # AI Object Remover Paint over a distracting object or damaged region and let an inpainting model rebuild the surrounding pixels. The tool offers a focused cleanup workflow without a full desktop photo editor. ## Core capabilities - Adjustable mask brush - AI image inpainting - Undo and redo controls - Result export without sign-up ## How it works The brush creates a mask that identifies pixels to replace. An image inpainting model then uses colors, textures and structures around the mask to synthesize a continuation of the background. Small selections surrounded by consistent texture are usually easier than large objects crossing faces, text or strong geometric lines. Several small passes may look more natural than one oversized mask. ## How to use AI Object Remover 1. Upload a JPG, PNG or BMP image up to about 5 MB 2. Adjust the brush radius and cover the unwanted region 3. Run the inpainting model and inspect the reconstructed area 4. Undo, redo or download the result ## Practical uses - Removing small distractions from travel and property photos - Cleaning product-photo backgrounds - Filling scratches or isolated damaged areas ## Limitations Inpainting generates new pixels and can create repeated textures or distorted structures. It is not reliable for removing watermarks when doing so would violate rights, and it should not be used to misrepresent documentary images. ## Privacy and processing The object-removal model is designed for browser execution after its resources load. No user account is required. Avoid confidential images unless you have reviewed the complete runtime and network behavior for your use case. ## Frequently asked questions How does the object remover fill the erased area? It analyzes surrounding pixels and generates a plausible continuation inside the painted mask. Should I paint a large area at once? Smaller, accurate masks often produce more coherent results than covering a large unrelated region. Can every object be removed cleanly? No. Objects crossing faces, text or complex geometry can leave visible artifacts. Is an account required? No. The tool can be opened and used without registration. AI Creator tools run in modern desktop browsers. INPAINTING FIELD NOTES ## Remove an object without advertising the repair Object removal succeeds when the reconstructed area follows the scene's texture, perspective and lighting. A result can look convincing at thumbnail size and still fail where a line bends, a repeated pattern changes rhythm or a shadow ends without a cause. Review the edit as part of the whole image, not only inside the painted mask. 01 ### Make the smallest complete mask Cover the unwanted object and its contact shadow, reflection or outline, but avoid painting a much larger region than necessary. A slightly expanded mask gives the model room to rebuild the boundary; an oversized mask asks it to invent unrelated scene structure. Work in several small passes when an object crosses different materials, such as wall, floor and furniture, because each region has different texture and perspective cues. 02 ### Follow lines beyond the repaired area After processing, trace long edges with your eye: table borders, tiles, horizon lines, window frames and repeated patterns should enter and leave the edited region at compatible angles. Compare grain, blur and lighting on both sides. Zoom out after every close inspection. A patch that is technically smooth can still draw attention because it is sharper, cleaner or more repetitive than the rest of the photograph. 03 ### Keep the edit honest Inpainting is appropriate for dust, small distractions and authorized repairs. It should not be used to misrepresent documentary evidence, hide required disclosures or remove ownership marks from material without permission. Preserve the source and, for important work, save a copy of the mask so another reviewer can understand which area changed. If the missing region contains a face, text or complex geometry, manual reconstruction may be more reliable. FINAL REVIEW ### Before you export - Include the object's shadow or reflection when it must disappear too. - Repair different surface types in separate passes. - Trace perspective lines through the reconstructed region. - Compare texture at normal viewing size before export. [Read the practical object-removal workflow](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/privacy/ # Privacy Policy How AI Creator handles files, browser storage, analytics, advertising data and privacy choices. ## Overview AI Creator provides browser-based creative tools. This policy explains what information may be processed when you use ai-creator.top and how you can make privacy choices. ## Files and AI processing Core media processing is designed to run in your browser whenever possible. Files you select may be held temporarily in browser memory or local browser storage for the requested operation. We do not intentionally collect the contents of uploaded media through the main local-first tools. Some features or externally linked products may use different processing methods and should identify them separately. ## Technical and usage data Our hosting provider and security services may process IP addresses, request timestamps, browser type, device information, referring pages and error logs to deliver and protect the website. We may use aggregated analytics to understand performance and improve the service. ## Advertising and cookies Third-party vendors, including Google, use cookies to serve ads based on a user's prior visits to this website or other websites. Google's use of advertising cookies enables Google and its partners to serve ads based on visits to AI Creator and other sites on the Internet. Users can opt out of personalized advertising through [Google Ads Settings](https://adssettings.google.com/). Other third-party vendors or ad networks may also use cookies to serve ads where enabled; users can review their websites or use [AboutAds](https://www.aboutads.info/) to opt out where those options are available. Depending on the user's region, consent may be requested before advertising storage or personalization is enabled. Learn how Google uses information from sites that use its services at [Google's partner-sites policy](https://policies.google.com/technologies/partner-sites). ## Browser storage The site may cache AI models, language preferences and application state in your browser to make later visits faster. You can remove this information through your browser settings. ## Data sharing and retention We do not sell the contents of files processed locally. Technical data may be shared with hosting, security, analytics and advertising providers only as needed for their services or legal compliance. Retention periods depend on the provider and operational need. ## Your choices You can block or delete cookies, clear site storage, use private browsing and decline optional consent choices. Where a privacy message is available, you can revisit your advertising choices through the Privacy & cookie settings link in the site footer. Blocking storage may affect model caching or site functionality. ## Children The service is not directed to children under the age required to consent to online data processing in their jurisdiction. ## Contact For privacy questions or requests, email contact@ai-creator.top. --- Source: https://ai-creator.top/relight/ # AI Photo Relighting Change the apparent light direction, intensity and color of a photograph to explore a different visual emphasis. The interactive preview is useful for portraits, products and creative lighting studies. ## Core capabilities - Movable light position - Intensity control - Selectable light color - Interactive browser rendering ## How it works The workflow estimates scene information and uses a shader-based rendering step to simulate how a movable light affects the image. Controls change the light position and energy rather than simply increasing global brightness. Relighting from a single flat image is an approximation. Hidden geometry and true material properties are unknown, so strong settings can produce unnatural shading. ## How to use AI Photo Relighting 1. Upload a supported photograph 2. Move the on-image light control 3. Adjust intensity and light color 4. Preview the rendered result and download it ## Practical uses - Exploring portrait key-light positions - Adding depth to product presentation - Testing color and intensity before a reshoot ## Limitations The tool cannot reveal real detail that is clipped to pure black or white. Results depend on the estimated scene representation, and reflective or transparent surfaces may not respond physically accurately. ## Privacy and processing The relighting pipeline uses browser-side model and rendering resources. Initial model loading requires a network connection, while interactive adjustments are designed to occur on the device. ## Frequently asked questions Is relighting the same as changing brightness? No. It simulates a positioned light with direction and falloff rather than applying one global brightness value. Can it recover an underexposed face? It may improve the appearance, but detail clipped from the source cannot be recovered reliably. What can I adjust? The interface provides a movable light position, one intensity slider and a light color picker. Why do reflective objects look unusual? A single image does not provide complete geometry or material information, so the rendering is approximate. AI Creator tools run in modern desktop browsers. RELIGHTING FIELD NOTES ## Change emphasis without breaking the scene Relighting a single photograph is an approximation because the system cannot observe hidden geometry or the complete material response of the scene. The most believable result respects the direction already suggested by the face, objects and background instead of treating light as a flat brightness filter. 01 ### Read the existing light first Before moving any control, identify the brightest side of the subject, the direction of cast shadows and the color of ambient light. Place the new light in a direction that the visible geometry can support. Large directional changes are harder to believe because an edited highlight may move while the original shadow stays fixed. Start with low intensity and increase strength only after the overall direction feels coherent. 02 ### Inspect materials separately Skin, metal, glass, fabric and matte walls respond differently. Watch for uniformly bright surfaces, clipped facial highlights, glowing hair edges and reflections that no longer point toward a plausible source. Compare the subject with the background: a strongly relit face inside an unchanged dark room can look pasted in. Neutralize the color temporarily to judge contrast before deciding whether a colored light improves the scene. 03 ### Review at delivery size A subtle lighting discontinuity may be acceptable in a small social graphic and obvious in a large portrait. Switch between the original and result at the same size, then step away from local details and check the visual hierarchy. The edit should guide attention without changing identity or hiding important product features. Keep the source because repeated relighting passes can compound contrast and color artifacts. FINAL REVIEW ### Before you export - Identify original highlight and shadow directions. - Begin with restrained intensity and a plausible light position. - Check skin, reflective materials and background consistency. - Compare original and result at identical display size. [Read the practical photo-relighting guide](https://ai-creator.top/resources/photo-relighting-guide/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/removebackground/ # AI Background Remover Remove a photo background automatically and export a transparent image without creating an account. This browser-based workflow is intended for product photos, portraits, presentations and reusable design assets. ## Core capabilities - Automatic foreground segmentation - Transparent image export - Browser-based model inference - No account required ## How it works The tool uses a segmentation model to estimate which pixels belong to the foreground subject and which belong to the background. It then converts that estimate into an alpha mask, preserving the selected subject while making the remaining area transparent. Clear contrast between the subject and background normally produces the cleanest edge. Fine hair, transparent objects, motion blur and similarly colored foregrounds can require a more interactive matting tool. ## How to use AI Background Remover 1. Choose a PNG, JPG, JPEG or BMP image up to 5 MB 2. Wait while the model loads and identifies the foreground 3. Inspect the subject edge in the result preview 4. Download the processed image with transparency ## Practical uses - Transparent product images for shops and marketplaces - Portrait cutouts for profiles, slides and thumbnails - Reusable foreground assets for posters and social graphics ## Limitations The result is an AI estimate, not a manually drawn clipping path. Complex hair, glass, shadows and low-contrast boundaries may be imperfect. Images are commonly processed near 1K resolution to balance speed and memory use. ## Privacy and processing The core background-removal inference runs in the browser. Model files must be downloaded on first use, but an account is not required. Do not process confidential material unless you have independently reviewed your browser and network environment. ## Frequently asked questions Is the AI Background Remover free? Yes. It can be used without creating an account. Which image formats are supported? The uploader accepts PNG, JPG, JPEG and BMP images, with a recommended maximum size of 5 MB. Does it work with hair and transparent objects? It can detect many detailed edges, but hair, glass and low-contrast boundaries remain challenging for automatic segmentation. Why is the first run slower? The browser must download and initialize the AI model. Later runs may be faster while those resources remain cached. AI Creator tools run in modern desktop browsers. BACKGROUND REMOVAL FIELD NOTES ## How to judge a background removal result A transparent download is not automatically a finished cutout. The useful result is the one that keeps the subject readable on the background where it will actually be used. These checks are based on the same edge cases the AI Creator workflow is designed to expose: hair, holes, soft shadows, reflective materials and low-contrast boundaries. 01 ### Run a two-background edge test Place the result over one very light color and one very dark color before accepting it. A pale fringe can disappear on white and become obvious on black; an over-tight mask can look clean on black while clipping dark hair or clothing. Check the complete silhouette at normal size first, then inspect hair, fingers, product handles and gaps between limbs at 100 percent. This catches both missing foreground pixels and unwanted pieces of the old background. 02 ### Preserve useful transparency Not every partially transparent pixel is an error. Hair, motion blur, glass and soft shadows naturally mix foreground and background colors. Removing every semi-transparent pixel creates a hard sticker-like edge, while keeping too much produces a halo. For product images, decide whether the original contact shadow communicates shape or conflicts with the new scene. Export PNG or WebP when alpha is required; JPEG replaces transparency with a solid background. 03 ### Know when automatic selection is the wrong tool Automatic removal works best when one subject is visually dominant. Our rocket example removes the sky but keeps the surrounding towers; the cat example retains the face while losing fine whisker tips. If the selected subject does not match your brief, finish the mask in an editor with manual selection controls. AI Creator's former interactive matting tool is currently unavailable. The linked guide provides the actual inputs and outputs so you can judge those limitations before starting. FINAL REVIEW ### Before you export - Keep the original file next to the exported cutout. - Inspect the result at its final display size, not only while zoomed in. - Confirm image and subject rights before commercial reuse. - Use an editor with manual mask controls when the selected subject is ambiguous. [Read the complete background-removal workflow](https://ai-creator.top/resources/remove-image-background-locally/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/ AI CREATOR RESOURCES # Practical guides for browser-based creative AI Original engineering field notes and practical guides for browser-based image, audio and video creation, with inspectable source evidence, limitations and review methods. NEW FIELD NOTE · SEPTEMBER 2026 ![Timeline Studio provider adapters passing generated media through a host validation boundary](https://ai-creator.top/resources/articles/generation-plugin-media-boundary.webp) SOURCE REVIEW · TIMELINE STUDIO ## [A Generation Plugin Should Return Media, Not Control the Timeline](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/) How Puter.js, ComfyUI and Stable Diffusion WebUI stay behind isolated adapters while the host validates real bytes and commits every result to My assets.[Read field note →](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/) ![Concept illustration of an editable Timeline Studio workflow](https://ai-creator.top/resources/articles/timeline-skill-editorial-workflow.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [From a Creative Brief to a Checked Timing Change](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/) A reproducible timing brief moves diagnostic audio one second earlier, keeps its linked label aligned and verifies the retained source range before writing.[Read field note →](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/) ![GitHub repository connected to a Timeline Studio editing workflow](https://ai-creator.top/resources/articles/dsh-timeline-studio-plugin-transaction-boundary.webp) SOURCE REVIEW · TIMELINE STUDIO ## [A Video-Editing Agent Needs a Transaction Boundary](https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/) Replay six filesystem and error-boundary checks from a pinned DeepSeek Harness plugin, with source hashes, logs and limits on its historical MP4 claim.[Read field note →](https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/) ![](https://ai-creator.top/resources/articles/background-removal.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [How to Remove an Image Background Locally in Your Browser](https://ai-creator.top/resources/remove-image-background-locally/) A practical guide to browser-based background removal, transparent PNG export, edge cleanup and privacy-aware workflows.[Read guide →](https://ai-creator.top/resources/remove-image-background-locally/) ![](https://ai-creator.top/resources/articles/image-matting.webp) HISTORICAL OUTPUT · TOOL DEFERRED ## [The Cutout Was a JPEG: A Matting Export Failure Review](https://ai-creator.top/resources/image-matting-vs-background-removal/) Inspect a historical matting export whose .png filename hides a JPEG, reproduce the alpha check, and follow a working transparent-background alternative.[Read guide →](https://ai-creator.top/resources/image-matting-vs-background-removal/) ![](https://ai-creator.top/resources/articles/browser-ai-privacy.webp) REPRODUCIBLE METHOD · PRIVACY ## [How Browser-Based AI Can Improve Privacy—and Where Its Limits Are](https://ai-creator.top/resources/browser-ai-privacy-explained/) Learn the practical privacy benefits and limitations of local-first AI processing, model caching and browser storage.[Read guide →](https://ai-creator.top/resources/browser-ai-privacy-explained/) ![](https://ai-creator.top/resources/articles/whisper-transcription.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [A Practical Workflow for Browser-Based Whisper Transcription](https://ai-creator.top/resources/whisper-transcription-workflow/) Prepare audio, run local-first speech recognition, review timestamps and turn an AI transcript into reliable text.[Read guide →](https://ai-creator.top/resources/whisper-transcription-workflow/) ![](https://ai-creator.top/resources/articles/object-removal.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [How to Remove Unwanted Objects from Photos Without Making the Edit Obvious](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/) A practical object-removal workflow covering brush masks, background texture, edge review and ethical editing.[Read guide →](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/) ![](https://ai-creator.top/resources/articles/photo-relighting.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [AI Photo Relighting: A Practical Guide to Direction, Contrast and Realism](https://ai-creator.top/resources/photo-relighting-guide/) Learn how to reshape photo lighting while preserving believable faces, materials, shadows and scene context.[Read guide →](https://ai-creator.top/resources/photo-relighting-guide/) ![](https://ai-creator.top/resources/articles/photo-line-art.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [How to Turn a Photo into Useful Line Art](https://ai-creator.top/resources/photo-to-line-art-guide/) Choose suitable photos and create cleaner line drawings for references, coloring pages and design exploration.[Read guide →](https://ai-creator.top/resources/photo-to-line-art-guide/) ![](https://ai-creator.top/resources/articles/photo-anime.webp) OBSERVED OUTPUT · BROWSER WORKFLOW ## [Photo to Anime: Better Inputs, More Consistent Results and Responsible Sharing](https://ai-creator.top/resources/photo-to-anime-responsibly/) Improve anime-style conversions while understanding identity, artifacts and the limits of style-transfer models.[Read guide →](https://ai-creator.top/resources/photo-to-anime-responsibly/) ![](https://ai-creator.top/resources/articles/timeline-studio-architecture.webp) SOURCE REVIEW · TIMELINE STUDIO ## [Building a Local-First AI Video Editor in the Browser](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) Six architecture decisions behind Timeline Studio, from Web Workers and model caching to temporal vision tracks and resilient browser export.[Read guide →](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) ![](https://ai-creator.top/resources/articles/liveportrait-webgpu.webp) SOURCE REVIEW · TIMELINE STUDIO ## [LivePortrait WebGPU Port: Evidence and Limits](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/) Review the recorded 5D GridSample rewrite and numerical errors, with historical timing limits, current frame reuse and the missing audiovisual benchmark.[Read guide →](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/) ![](https://ai-creator.top/resources/articles/browser-auto-edit-storyboard.webp) EXECUTED SOURCE CASE · TIMELINE STUDIO ## [Browser Auto-Edit: Why a Short Shot Can Disappear](https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/) Inspect four actual test videos: a short shot can be missed before or after sampling. Compare candidate scores, timing failures and reproducible source evidence.[Read guide →](https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/) ![](https://ai-creator.top/resources/articles/talking-avatar-contact-sheet.webp) EXPERIMENTAL · SOURCE AND COST REVIEW ## [Browser Talking Portraits: Encoder Test and Model Costs](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) A reproducible 256px encoder test reveals eight video frames from three test cards, no audio track, a four-second speech cap and about 739 MB of preview models.[Read guide →](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) ![](https://ai-creator.top/resources/articles/audio-source-offset-casefile.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [The Timeline Was Split, but the Audio Wasn't](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/) How Timeline Studio v0.4.1 fixed source offsets so split audio clips play, seek, display waveforms and export the same media range.[Read guide →](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/) ![](https://ai-creator.top/resources/articles/open-media-library-archive.webp) EXECUTED SOURCE CASE · TIMELINE STUDIO ## [Follow One Wikimedia Image Into a Saved Video Project](https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/) A real Wikimedia image exposes a dimension mismatch and missing overlay credits in a reproducible Timeline Studio import-and-archive case.[Read guide →](https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/) ![](https://ai-creator.top/resources/articles/mobile-timeline-under-two-thumbs.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [When a Video Timeline Has to Fit Under Two Thumbs](https://ai-creator.top/resources/mobile-video-timeline-under-two-thumbs/) Inside Timeline Studio's mobile editing work: pinch zoom, fixed-playhead navigation, direct clip actions, track locks, layered stickers and pitch-preserving audio speed.[Read guide →](https://ai-creator.top/resources/mobile-video-timeline-under-two-thumbs/) ![](https://ai-creator.top/resources/articles/agent-skill-multi-channel-workbench.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [One Video-Editing Plan Across Agent Channels](https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/) A recorded CLI handoff tests a completed edit, an identical retry and a stale new operation against the same portable Timeline Studio project.[Read guide →](https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/) ![](https://ai-creator.top/resources/articles/timeline-archive-browser-handoff.webp) SOURCE REVIEW · TIMELINE STUDIO ## [Edit a Timeline Archive Without Losing Its Media](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/) An actual CLI rewrite preserves every non-project ZIP entry, renders a six-second vertical MP4 and rejects a visible-caption composition it cannot support.[Read guide →](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/) ![](https://ai-creator.top/resources/articles/ffmpeg-web-player-pipeline.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [FFmpeg Is Not the Web Player. It Is the Pipeline That Makes Playback Reliable.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/) A practical guide to preparing MP4, fragmented MP4 and HLS media with FFmpeg for fast startup, accurate seeking and dependable browser playback.[Read guide →](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/) ![](https://ai-creator.top/resources/articles/browser-migan-watermark-repair.webp) ENGINEERING FIELD NOTE · TIMELINE STUDIO ## [Removing Watermarks from Images and Video, Frame by Frame](https://ai-creator.top/resources/remove-watermarks-from-images-and-video-in-browser/) How Timeline Studio uses MI-GAN, WebGPU, masks, timed regions, position keyframes and browser-side MP4 composition to repair authorized images and video locally.[Read guide →](https://ai-creator.top/resources/remove-watermarks-from-images-and-video-in-browser/) ![](https://ai-creator.top/resources/articles/nanovsr-browser-video-4x.webp) SOURCE REVIEW · TIMELINE STUDIO ## [Four Times the Frame: How NanoVSR Restores Video in the Browser](https://ai-creator.top/resources/nanovsr-4x-video-restoration-in-browser/) Inside Timeline Studio's local NanoVSR pipeline: five-frame temporal super resolution, fixed 320×180 model input, 4× reconstruction, source-detail protection and MP4 composition with audio.[Read guide →](https://ai-creator.top/resources/nanovsr-4x-video-restoration-in-browser/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/browser-ai-privacy-explained/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # How Browser-Based AI Can Improve Privacy—and Where Its Limits Are Browser-based AI can process images or audio on the user's device instead of uploading every file to an application server. This local-first architecture can reduce data transfer and shorten the path between input and result. It is a useful privacy property, but it should not be summarized as a guarantee that nothing ever leaves the device. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **REPRODUCIBLE METHOD** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![How Browser-Based AI Can Improve Privacy—and Where Its Limits Are visual guide](https://ai-creator.top/resources/articles/browser-ai-privacy.webp) SOURCE-REVIEWED · SEPTEMBER 7, 2026 ## Trace one recording through the code before trusting the label AI Creator's Whisper file picker creates a browser object URL. The transcription action reads that URL, decodes audio and passes samples to a worker. A separate service worker caches downloaded resources. Following these three paths gives a more useful answer than counting requests: the reviewed transcription path processes the selected recording locally, while page delivery still communicates with servers. Evidence available Exact source excerpts, file fingerprints and a data-flow map from this site's September 7 working source. The external-generation comparison uses a separately pinned editor commit. Evidence still needed A live Network capture and before/after storage inspection for the browser, deployed release and options you use. This review did not capture a HAR, run inference or audit every dependency. ### One local input, two different kinds of “fetch” The recovered file-picker code takes `files[0]` and calls `URL.createObjectURL`. The patched transcription action then uses `fetch(source)`, `decodeAudioData` and `postMessage({action:"transcribe", src:samples, ...})`. Here the source is the chosen file's `blob:` URL; reading it does not itself send an HTTP upload. Blob URLs refer to browser-held objects, even though their text includes the creating site's origin. See [MDN's blob URL reference](https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Schemes/blob). The receiving worker passes the `Float32Array` into its transcription pipeline and sends text back to the interface. The pipeline requests the model named `whisper-tiny` with `local_files_only: true` and a `/models/whisper-tiny` cache setting. These are model-loading options; they do not disable network access for the whole page. A [worker message](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) is communication between browser execution contexts, rather than a request to a transcription server. Data boundaries found in the reviewed source | Operation | Data and destination | What to check in your session | | --- | --- | --- | | Choose a local recording | File → object URL → decoded audio samples → Whisper worker. | Check the input URL scheme and inspect requests triggered by selecting the file and starting transcription. | | Load a model | Same-origin model/configuration responses may enter `ai-creator-models-v2`. | Inspect full URLs, request parameters, response content and initiators. A download still exposes request metadata. | | Use a remote media URL | An HTTP(S) source needs a request to its host, unless already served from cache. | Record the actual host and redirects. A locally decoded result does not make that retrieval private. | | Choose Puter generation in the related editor | The adapter hands the prompt and model to the provider SDK, then reads the returned media. | Review this as a separate external-service workflow, including provider storage and retention. | The last row describes the [related editor's generation plugin](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/), not Whisper. At [commit 3684ec4](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/providers/puter/adapter.js#L108), the adapter calls `puter.ai.txt2img(prompt, ...)` or `txt2vid(prompt, ...)`. Downloading that output into a Blob afterward does not turn generation into local inference. The adapter establishes the handoff to the SDK; it does not reveal the provider's internal handling or prove that a later deletion request removes every retained copy. ### Repeat the check without uploading a private recording 1. **Prepare a controlled input.** Use the public [29.4-second test recording](https://ai-creator.top/resources/evidence/2026-09-07/audio/librispeech-1272-128104-0004.wav) from our [Whisper case study](https://ai-creator.top/resources/whisper-transcription-workflow/). Record the date, browser version, exact page URL and consent settings in the [blank inspection worksheet](https://ai-creator.top/resources/evidence/2026-09-07/privacy/inspection-worksheet.csv). Use a separate test profile so clearing data does not erase your normal workspace. 2. **Capture a baseline.** Open DevTools before navigating to [Whisper](https://ai-creator.top/whisper/). In Network, keep recording on, select All, enable Preserve log, clear the log and navigate. Wait for model readiness. Save this baseline before selecting audio; it separates application/model loading from the input operation. 3. **Mark each action.** Clear the log after saving the baseline. Select the WAV, note the time, then choose English and transcribe. Keep recording through completion and a short idle interval. Inspect new requests in Headers, Payload and Initiator. Record destinations and relevant body/query fields, rather than treating the Size column as uploaded-file size. 4. **Inspect beyond POST.** Use `method:POST` as a temporary filter, then return to All. Small requests, GET query strings and WebSocket messages can also carry content or identifiers. If a payload is opaque or unavailable, mark it unresolved; an unreadable request is not evidence that no data was sent. 5. **Compare a warm run.** Save the capture, repeat the same input with normal caching and record differences. Inspect Application → Cache Storage separately. Fewer network bytes can indicate cache reuse; they do not prove a stronger privacy boundary. A Network cache toggle alone is not a record that every application-managed store is empty. Chrome documents [request columns and initiators](https://developer.chrome.com/docs/devtools/network), plus [payload inspection](https://developer.chrome.com/docs/devtools/network/reference#payload) and [WebSocket messages](https://developer.chrome.com/docs/devtools/network/reference#websocket). Clear filters before exporting the complete log. Prefer [sanitized HAR export](https://developer.chrome.com/docs/devtools/network/reference#save-all-network-requests-to-a-har-file), then inspect the file yourself: removing sensitive headers does not establish that every URL, prompt or response is safe to share. The supplied worksheet contains instructions and blank observations, not a fabricated capture. ### Check what remains after the tab closes The reviewed model service worker caches eligible same-origin GET responses in `ai-creator-models-v2`. It skips Range requests and requires a successful basic response before writing. Its filename rule includes `.json` anywhere on the origin, as well as `.onnx`, `.bin`, `.wasm` and the `/models/` path. “Model cache” is therefore a name, not proof that every entry contains only model weights. Inspect actual entries. The worker does not handle POST requests, but that does not block the page from making them. In the test profile, open Application → Storage, inspect Cache Storage and IndexedDB, and note local/session storage entries before clearing the selected site's data. Select the relevant stores; a cache-only deletion does not remove an IndexedDB database. Close other tabs using the same site, then clear and refresh the storage lists before running the tool again. A new visit can download models and repopulate caches. Chrome's [cache inspection and deletion guide](https://developer.chrome.com/docs/devtools/storage/cache) shows these controls. On a shared computer, clearing site storage does not remove downloaded audio, exports, screenshots or the HAR you saved, and it does not sign you out of a provider on another origin. Review those separately. Closing the document releases its object URLs, but that is not a secure-erasure guarantee for the device. Browser storage is also not an encrypted personal vault protected from everyone who can use the same profile. ### Write a conclusion that matches the evidence Our present conclusion is narrow: the reviewed local-file Whisper path decodes audio in the browser and invokes a worker pipeline; its model cache has the rules documented above. A completed capture could support “no selected-media upload was observed during these recorded actions.” It would not establish absence of earlier, deferred, cross-tab or extension activity, provider retention, or unchanged behavior after a release. An offline repeat can test whether that prepared workflow needs a live response; it cannot establish that the earlier online run transmitted nothing. [Read the exact source excerpts](https://ai-creator.top/resources/evidence/2026-09-07/privacy/source-snippets.md) · [Source fingerprints and scope](https://ai-creator.top/resources/evidence/2026-09-07/privacy/source-review.json) · [Download the data-flow map](https://ai-creator.top/resources/evidence/2026-09-07/privacy/data-flow.csv) · [Method and limitations](https://ai-creator.top/resources/evidence/2026-09-07/privacy/README.md). Recheck the deployed assets and repeat the capture when model delivery, dependencies, consent, advertising or external integrations change. ## What local-first processing means In a local-first workflow, the website downloads application code and model files, then performs inference using browser technologies such as WebAssembly, WebGL or WebGPU. The selected media can remain in browser memory while the model runs. This differs from a conventional cloud workflow in which the full file is uploaded to a remote inference server for processing. Trace the data boundary ## What the browser still communicates Opening any website normally sends network requests that can reveal an IP address, browser information, requested paths and timestamps to hosting or security providers. The browser may download models, fonts and scripts, and externally linked resources contact their own hosts. Analytics and advertising services may also process identifiers or usage signals when enabled and legally permitted. ## Caching helps performance AI models are often much larger than ordinary web assets. Browsers may cache them in Cache Storage or IndexedDB so later sessions start faster. This data is stored on the device and can occupy substantial space. Clearing site data removes cached models and preferences, which can make the next visit slower but gives the user direct control over local storage. ## Remote exceptions must be disclosed Some capabilities are impractical to run entirely on consumer hardware and may use an external service. A prompt-based generation feature, remote media URL or linked third-party application may therefore transmit data. Each workflow should describe its processing method clearly enough for users to make an informed choice before submitting confidential material. Evidence before claims ## Practical user precautions Review the privacy policy and tool-specific disclosure, use current browser versions and avoid processing secrets when the workflow is unclear. Clear site storage on shared devices. Remember that the exported result may contain visible personal information even when processing was local. Local execution reduces one category of exposure; it does not replace consent, copyright checks, device security or careful publication decisions. REFERENCE ## Frequently asked questions Does local-first mean the website receives no technical data? No. Hosting and security systems can still receive normal request metadata. Why are model downloads so large? Neural-network weights can contain millions of parameters and are cached to avoid repeated downloads. Can I delete cached models? Yes. Browser site-data controls can remove cache and IndexedDB content. Are all AI Creator features local? No. The processing disclosure identifies exceptions such as prompt-based remote generation and external services. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/)[**A Generation Plugin Should Return Media**Keep provider adapters outside timeline ownership.](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/)[**Browser-Based Image and Video Repair**Understand the rights and restoration boundaries.](https://ai-creator.top/resources/remove-watermarks-from-images-and-video-in-browser/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Read our processing disclosure →](https://ai-creator.top/about/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) FIELD NOTES · AUTOMATIC EDITING # Browser Auto-Edit: Why a Short Shot Can Disappear Four controlled videos expose sampling and selection misses in a local execution of Timeline Studio commit 68980d1. Compare clean cuts, dissolves and a six-frame insert, then use the actual scores to decide what needs a manual edit. This case does not verify the current hosted editor or generate AI captions. ![Decoded sample frames: blue A, a brief orange B insert, then blue A selected with a green border](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample-detail.png) Actual decoded frames from the controlled clip. Orange B was sampled but omitted; the green border marks the selected return to A. Borders were added for this comparison. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **EXECUTED SOURCE CASE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · THE OBSERVED RESULT ## Both clean cuts survived selection. A 0.2-second shot disappeared twice: first between samples, then through score ranking and minimum-gap suppression. The candidate gallery needs review against the original footage. **01**Samplewas the picture captured?_→_**02**Selectdid ranking retain it?_→_**03**Reviewis the timing useful? RECORDED CONTROLS ## The four clips share one sampling schedule - 12 seconds, 224 × 224, 30 fps - 19 supplied pictures per clip - Adaptive threshold: 0.1 in all four cases - Same-segment candidate gap: 1.2 seconds - Native FFmpeg decode and real production selectors - No AI inference or live browser export in this case EXECUTED SOURCE CASE · SEPTEMBER 7, 2026 ## A six-frame insert disappeared in two different ways A candidate gallery is useful only if it preserves the moments you need to edit. We made four short videos with known changes and ran Timeline Studio's actual visual-analysis worker and selection helpers. Clean cuts were detected. A 0.2-second insert was lost both when it fell between samples and when a stronger neighboring candidate displaced its sampled picture. That distinction tells you where to look before changing a threshold. Inputs and environment Four original 12-second geometric videos; 224 × 224, 30 fps, 360 H.264 frames each, no audio. ffmpeg version 8.0.1 Copyright (c) 2000-2025 the FFmpeg developers; Node v22.14.0 on darwin arm64. What actually ran Native FFmpeg encoded and decoded the MP4s; the source-checked sampling schedule supplied 19 pictures to the unmodified production worker, followed by the production selectors. Source: [commit 68980d1](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/autoEdit.js). DOM seeking and browser inference were outside this local experiment. ### 1\. Establish a case that should work [video sample](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/hard-cuts.mp4) Control: slate A changes to B at 4 seconds and to C at 8 seconds. These are deliberate synthetic cuts. [Download MP4](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/hard-cuts.mp4). The default selector kept pictures at **0, 4 and 8 seconds**. The 0-second picture is always retained as the segment's start; the other two match our known cuts. For this duration, the source requests 1.5 samples per second and includes both timeline endpoints, giving 19 sample labels. The final 12-second label reads a source request clamped to 11.95 seconds. These labels are sampling coordinates, not independently measured edit boundaries. Actual default selections; every clip had an adaptive threshold of 0.1 | Controlled input | Selected timeline times | Editing consequence | | --- | --- | --- | | [Hard cuts at 4 and 8 seconds](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/hard-cuts.mp4) | 0, 4, 8 s | Both known cuts have a candidate. | | [Two-second dissolves at 3–5 and 7–9 seconds](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/dissolves.mp4) | 0, 4, 5.333, 7.333, 8.667 s | Two dissolves produce four candidates after the initial picture. | | [0.2-second insert at 4.1–4.3 seconds](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-between-samples.mp4) | 0 s | No sampled picture contains the short insert. | | [Same 0.2-second insert moved to 4.6–4.8 seconds](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample.mp4) | 0, 5.333 s | The insert is sampled, but the selected later picture already shows A again. | ### 2\. Separate a sampling miss from a selection miss [video sample](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-between-samples.mp4) The orange B slate appears for six frames, from 4.1 to 4.3 seconds, then returns to A. Watch near four seconds; the insert is intentionally brief. [Download MP4](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-between-samples.mp4). Samples fall at 4.000 and 4.667 seconds. The entire 4.1–4.3-second insert sits between them, so all supplied pictures show A. The selected list contains only the initial picture. Re-running selection with explicit thresholds 0.03, 0.1, 0.3 and 0.6 changes nothing: the detector never received the orange picture. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample.mp4) The same six-frame B insert moved to 4.6–4.8 seconds. This version does enter the sample list. [Download MP4](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample.mp4). Moving the insert onto the sampling grid did not make its picture survive selection. The B picture at 4.667 seconds had weighted score **0.67036**; the return to A at 5.333 seconds scored **0.67414**. Both exceeded 0.1. The selector ranked the later A picture first, then rejected B because the two pictures are only 0.667 seconds apart and the default minimum gap is 1.2 seconds. ![Three actual sampled pictures at 4, 4.667 and 5.333 seconds: blue A, orange B, then blue A with a green selection border. The middle B picture has no selection border.](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample-detail.png) Left to right: 4.000, 4.667 and 5.333 seconds. The orange middle picture was sampled but omitted; the green border marks the selected return to A. These are decoded input frames with selection borders added afterward. [All 19 sampled pictures](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/short-on-sample-samples.png) · [Exact times and scores](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/sample-scores.csv). A separate developer control with a 0.3-second gap kept both sampled transitions. It could not recover the between-samples insert. These controls are function arguments in the published harness, not settings claimed to be available in the live interface. The [initial hypothesis and failed check](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/discovery-record.json) are retained: we first expected that moving the shot onto a sample would be enough, and the observed result disproved it. ### 3\. Treat dissolve candidates as pictures to review [video sample](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/dissolves.mp4) A dissolves into B over 3–5 seconds; B dissolves into C over 7–9 seconds. [Download MP4](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/dissolves.mp4). These two transitions produced four selected pictures after the initial one: **4, 5.333, 7.333 and 8.667 seconds**. One is already after the first dissolve. Multiple candidates can therefore describe one transition; their count is not a count of edits. A threshold of 0.6 suppressed all four in this fixture and also lost the control's cut at 8 seconds. Raising it is a tradeoff, not a universal cleanup rule. The original explanation also overstated the local-peak filter. [This snapshot computes a localPeak value but does not use it in the filter](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/autoEdit.js#L104). It ranks quality-weighted differences, applies a quality gate and enforces same-segment spacing. Segment starts are retained before those tests. Keep this distinction when interpreting candidate scores or implementing a different sampler. ### 4\. Review timing after the draft has been normalized Candidate spacing does not guarantee readable caption duration. As a separate timing check, we supplied three explicitly hand-authored caption objects for a three-second clip: 0–4, 1–2 and 1.5–3 seconds. The real timing normalizer returned **0–0.5, 0.5–1.5 and 1.5–3 seconds**. The first caption is only half a second long after overlap adjustment. The exact input strings and returned ranges are in [run.json](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/run.json); none is represented as an AI-generated caption. The [reviewed Apply handler](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/hooks/useAutoEdit.js#L211) passes the reviewed caption array to its commit callback. It is a caption draft workflow, with no narrative trimming of the source video. Preserve a project version before applying, inspect how existing captions are handled, and preview the new timing at normal playback speed. Model wording, browser model availability and the visible review step require their own live check. ### Repeat the case and choose the next editing step Download the [complete reproduction kit](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/autoedit-case-kit.zip), verify it with `shasum -a 256 -c SHA256SUMS`, then run `node reproduce.mjs ./my-run` with Node and native FFmpeg/ffprobe installed. No model, API key, account or package installation is required. The harness regenerates the videos and verifies the recorded observations, including the misses. Different encoder or decoder builds can change exact scores; preserve the new report if results differ. For a short product reveal, gesture or action, first confirm that the important picture exists in the sampled input. If it is missing there, mark it manually or use a denser sampling strategy. If it was sampled but lost during selection, inspect neighboring scores and spacing. For a dissolve, review the transition as a whole before keeping several similar captions. Finish by watching the source and the caption track together. [Full method and limits](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/README.md) · [Measured outputs and controls](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/run.json) · [Executed FFmpeg commands](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/commands.json) · [Pinned source and SHA-256 fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/source-manifest.json) · [Artifact manifest](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/manifest.json). This original fixture establishes specific behavior in four controlled clips, not a real-footage accuracy rate. Native decoding, Node execution and a square input bypass browser seek, canvas scaling and model-download behavior. No Chrome LanguageModel, Translator, generated-caption quality, timeline application or browser export was tested. The bundled public source retains its [MIT license](https://ai-creator.top/resources/evidence/2026-09-07/autoedit/upstream/LICENSE). REFERENCE ## Questions the case can answer Why can a short shot disappear from automatic-edit candidates? A shot can fall entirely between sampled frames. Even when sampled, its picture can be suppressed by a higher-scoring nearby frame and the 1.2-second minimum gap. Both happened in the published controlled cases. Will lowering the scene threshold recover a missed shot? Not necessarily. Thresholds of 0.03, 0.1, 0.3 and 0.6 did not recover the short inserts in this experiment. No threshold can recover a picture absent from the sampled input, and a lower threshold does not remove minimum-gap suppression. Does a scene candidate mark the exact moment of a cut? No. It is a sampled picture selected for visual change. The two-second dissolves produced multiple candidates, including a picture after a transition. A candidate gallery is not a frame-accurate edit decision list. Were the videos and AI captions generated in the live browser? No. The videos are original procedural fixtures encoded and decoded by native FFmpeg. The pinned production worker and selection helpers ran locally in Node. No browser AI inference, model download, review dialog, caption application or final browser export was executed. Does the automatic-edit workflow shorten my source clips? The reviewed automatic-edit hook prepares candidate pictures and draft captions, then passes the reviewed caption array to its commit callback on Apply. It does not perform narrative trimming or reorder the source video. Preserve an earlier project and review existing captions before applying a new draft. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**From a Creative Brief to a Checked Timing Change**Check a one-second audio move against its linked label and source.](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/)[**A Mobile Timeline Under Two Thumbs**Study selection, trimming, scrolling and touch tradeoffs.](https://ai-creator.top/resources/mobile-video-timeline-under-two-thumbs/)[**A Browser Whisper Transcription Workflow**Listen to the source and inspect the returned draft.](https://ai-creator.top/resources/whisper-transcription-workflow/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Bring your own footage. Keep the editorial decision. [Try automatic editing in Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/ [AI Creator](https://ai-creator.top/)[Resources / Field Notes](https://ai-creator.top/resources/) Source review · Commit 3684ec4 · September 2026 # A generation plugin should return media, not control the timeline. Timeline Studio now connects [Puter.js, ComfyUI and Stable Diffusion WebUI or Forge](https://github.com/MartinDelophy/ai-video-editor) through one generation-provider contract. The interesting part is not the catalog. It is the boundary that prevents provider code from becoming a second, less accountable editor. Published September 3, 2026 By Martin Delophy Engineering field note · Source-reviewed BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Sep 3, 2026 · REVIEWED Sep 7, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Diagram showing Puter.js, ComfyUI and Stable Diffusion WebUI adapters passing media through the Timeline Studio host before it enters My assets](https://ai-creator.top/resources/articles/generation-plugin-media-boundary.webp) The implemented path is provider → isolated adapter → host validation → My assets. No provider receives timeline mutation functions, and a completed output is not placed on a track automatically. **THE SHORT VERSION** The plugin contract is useful because it defines what provider code cannot do. Generation remains replaceable; the host keeps ownership of media truth and editor state. 01 ## “Plugin” currently means a reviewed connector The name can easily imply a marketplace where arbitrary packages are downloaded and executed at runtime. That is not what has shipped. The current implementation keeps manifests and adapters in the Timeline Studio source tree, registers them during the build and reviews them with the rest of the application. There is no third-party code loader, runtime permission prompt or compatibility negotiation yet. That limitation is a security feature until those missing pieces exist. A generation connector can touch remote accounts, local AI servers and media bytes. Calling any JavaScript bundle a plugin before defining its permissions would turn an extension label into ambient authority. The development contract is explicit: today, adding a plugin means contributing a reviewed provider adapter to the repository. **Puter.js**browser-session provider-session auth text-to-image · text-to-video **ComfyUI**loopback at 127.0.0.1:8188 workflow-image · workflow-video **SD WebUI / Forge**loopback at 127.0.0.1:7860 text-to-image · image-to-image The manifest schema is version 1. It accepts only known runtimes, authentication modes and generation capabilities, and it freezes validated definitions before registration. 02 ## A manifest declares capability; an adapter performs transport Each provider has two deliberately different responsibilities. Its manifest describes stable identity, runtime class, authentication mode, capabilities, output types and default endpoint. Its adapter connects to the actual SDK or HTTP API, converts the shared request into provider-specific calls and returns normalized outputs. React state is not part of that transport layer. The shared registry contains exactly three manifests. The hook looks up the corresponding adapter, coordinates connection and generation attempts with `AbortController`, and passes the result to the host. Adding a fourth provider therefore does not require another provider-specific network branch inside the shared hook. manifest = identity + runtime + capabilities + auth adapter = connect() + generate() + optional disconnect()/cancel() host = check bytes + decode images + inspect video metadata + commit My assets hook = lifecycle + supersession + visible job state The separation matters during failure. A malformed provider response should fail in its adapter or at the host boundary. It should not leave half-created React state, a guessed timeline object or a success message backed only by a URL. Adapters import shared media helpers and use browser globals. Their call arguments do not include `setUserAssets`, timeline mutation functions or React state. This is a source-level boundary, not a JavaScript execution sandbox. 03 ## Three providers, three real connection models Puter.js owns a browser session and popup authorization flow. Connection waits for the provider's actual sign-in result instead of optimistically changing a badge. Image generation calls `puter.ai.txt2img`; video generation calls `puter.ai.txt2vid`. The adapter then resolves or downloads the returned media. The Grok image path uses a temporary provider file and removes it after the bytes have been read. ComfyUI and Stable Diffusion WebUI are local services, but “local” is verified rather than assumed. Their endpoint parser accepts only `localhost`, `127.0.0.1` or `::1` over HTTP or HTTPS. ComfyUI checks `/system_stats`; WebUI checks `/sdapi/v1/samplers`. A network failure is translated into a message that tells the user to check whether the service is running and whether CORS permits the editor origin. Once connected, ComfyUI submits a workflow to `/prompt`, polls `/history/{prompt_id}` and downloads every reported output through `/view`. WebUI calls either `/sdapi/v1/txt2img` or `/sdapi/v1/img2img` and decodes every returned base64 image. The adapter does not silently keep the first file when a provider returns a batch. Restricting loopback hosts avoids normalizing advice that exposes ComfyUI or WebUI to a LAN with permissive CORS. A future remote service belongs behind a separate secure-backend runtime. 04 ## A temporary URL is not a completed asset Generation APIs often return URLs that are signed, session-bound or short-lived. If an editor stores that URL as its result, the thumbnail may work during the session and disappear after a refresh—or expire before export. The development contract requires downloaded, usable media. At this reviewed snapshot, the host enforces nonempty bytes and image decoding, while the video path has the metadata gaps reproduced below. Download every outputVerify non-empty BlobDecode image / inspect video metadataCreate My assets entries For images, the host reads the file signature, reconciles the declared MIME type, creates an `ImageBitmap` and rejects a file with no dimensions. PNG, JPEG, WebP and AVIF signatures are recognized. For video, the host inspects metadata only when the output omits width or height. Metadata error or timeout resolves with fallback dimensions and duration rather than rejection. Object URLs used only for inspection are revoked. The host builds asset entries and browser-local URLs while processing the batch, then prepends the batch to My assets after the loop completes. This is stronger than retaining a temporary URL alone, but the video fallback means “complete” does not establish successful decoding. A later invalid output prevents the library update; an earlier prepared URL remains registered until separate cleanup. This rule directly addresses the fragile case fixed in the Puter/Grok path: read the real bytes before deleting the temporary provider file or letting an expiring URL escape. 05 ## Generation is not permission to edit The host commits results to My assets and selects the latest imported item. It does not create a clip, choose a track, move the playhead or infer how long a generated image should remain visible. Those are editorial decisions, even when the prompt was entered from inside an editor. This boundary also makes batch results legible. If ComfyUI emits several images or videos, the complete batch becomes library assets only after every output is processed successfully. A user can compare them, reject them, rename them and deliberately insert the chosen media. Automatic placement would collapse generation and editing into one irreversible-looking action and make failure recovery harder. | Provider adapter may | Provider adapter may not | Host remains responsible for | | --- | --- | --- | | Connect to its declared runtime | Read or mutate timeline state | Arbitrating the active job | | Translate shared requests | Call `setUserAssets` directly | Validating all returned media | | Report provider-backed state | Fabricate progress or success | Creating asset IDs and object URLs | | Return normalized outputs | Insert clips automatically | Committing the batch after all outputs are processed | The durable product rule is simple: generated media enters the library. The user decides whether and where it belongs in the edit. 06 ## Cancellation needs an honest verb The shared hook creates an `AbortController` for each connection or generation attempt and checks whether callbacks belong to the active attempt. One job owns the shared inspector surface. Its cancel handler awaits an optional adapter cancel request before aborting the client controller and setting a cancelled state. These lifecycle paths are source-reviewed here; the offline experiment below does not execute the React hook. ComfyUI has an `/interrupt` endpoint, and its adapter sends a cancellation request. At this snapshot it ignores HTTP failure status and catches network errors, so a resolved cancel call does not confirm a remote stop. Other adapters may only stop client-side work. The distinction belongs in user-facing language because remote compute may continue after the editor stops listening. DISCONNECTEDCONNECTINGCONNECTEDRUNNINGCANCELLEDERROR Progress follows the same discipline. A percentage is shown only when a provider supplies meaningful progress; otherwise the running state remains indeterminate. A polished progress animation is not evidence that an external system knows how much work remains. The visible states are part of the integration contract, not decorative UI. The local transport helper replaces fetch failures with service/CORS guidance and preserves AbortError. The target normalizeError adapter method in the development document is not implemented by these three adapters. 07 ## What this architecture proves—and what it does not The code establishes a source-integrated provider architecture: validated manifests, separate adapters, loopback restrictions, host-owned image validation and video metadata handling, lifecycle coordination and a My assets destination. The executable cases below identify where the implementation falls short of its intended media guarantees. It provides a repeatable place to add another generation provider without moving transport logic back into a monolithic hook. It does not prove that every model is available in every region, that Puter account terms or model prices will remain unchanged, that a user's local ComfyUI workflow is safe, or that generated media is accurate or publishable. Provider availability, cost, browser support and content restrictions remain provider-specific. Local endpoints also remain software running on the user's machine and should not be exposed beyond loopback without a separate security design. Most importantly, this is not yet a general plugin marketplace. Runtime installation would require signed or otherwise attributable packages, permission declarations, version negotiation, sandboxing, revocation and a review model. Until those controls exist, source integration is the honest name for what ships. A good extension boundary creates room for future capability while refusing to imply permissions or portability that the current product has not implemented. EXECUTED SOURCE CASE / SEPTEMBER 7, 2026 ## The counterexample: a video result can pass without video bytes The architecture has a useful boundary, but its stated contract is stronger than the implementation at the reviewed commit. I ran fifteen groups of assertions against the original source and found five limitations worth separating from the intended design. In the clearest case, plain text labelled as video was accepted when the output supplied its own dimensions. EXACT SOURCE Commit [3684ec4](https://github.com/MartinDelophy/ai-video-editor/commit/3684ec4063583c66c80e34e90c655a71d65dad1b), the September 1 snapshot cited by the original article. Fourteen source, document and license files are included without transformations. The public copy of host.js also matched byte for byte. WHAT RAN Node 22.14.0 on macOS arm64, using the production contract, registry, host and local-provider adapters. The fifteen assertion groups passed because they reproduced the recorded behavior, including negative findings. This is not a report that all product guarantees passed. EXTERNAL BOUNDARIES Fetch, object URLs, image decoding and video DOM events use disclosed test doubles. The image double accepts only the byte-identical one-pixel fixture. No real provider generation, login, CORS check, browser codec, React hook or timeline UI ran. ## Start with a result whose bytes contradict its label The input is the text “This is plain UTF-8 text, not video media.” inside a nonempty Blob with MIME type video/mp4, plus type video, width 640 and height 360. [The host's dimensions branch](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/host.js#L109) trusts those dimensions and skips inspectVideoBlob. The recorded output is one generated-video asset, 640×360, duration zero. No video element was requested, so this counterexample does not depend on the mock decoder's opinion. A second case removes the supplied dimensions and sends a controlled metadata error event. [The metadata helper](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/host.js#L35) resolves on either loadedmetadata, error or timeout. The inspection function then substitutes 1280×720 and zero duration. The experiment executed the error path; the timeout path was source-reviewed. Neither result establishes successful decoding. That changes the article's strongest claim: this snapshot downloads nonempty video bytes and collects or accepts metadata, but it does not guarantee that every completed video is decodable. A future fix needs rejection on metadata failure and validation even when a provider supplies dimensions. Inspect the actual output ## Images have a stronger boundary, with a batch cleanup caveat For the positive image case, PNG signature bytes override an application/octet-stream label, and the host uses the controlled decoder's 1×1 dimensions. Empty bytes, HTML MIME and an explicit decoder rejection all fail. An empty result list and a temporary URL without a Blob also fail before the asset setter is called. These checks establish control flow around the decoder, not which formats a particular browser can decode. Two valid image outputs make one library update, ordered second.png before first.png, and select second.png. With a valid image followed by empty bytes, the host rejects the whole batch before that update. However, it has already created and registered one object URL for the first item and does not revoke it within the failing function. Later application cleanup is outside this run. The unsupported-type case is also instructive: type audio with valid PNG fixture bytes becomes an image. [The host has a video branch and an image fallback](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/host.js#L108), rather than an explicit image/video enum rejection. Validate both the declared type and the bytes when tightening this boundary. ## A cancellation request is not a cancellation receipt The ComfyUI test records a POST to /interrupt. Its mocked HTTP 500 response still lets cancel() resolve, and a mocked network rejection also resolves. [The adapter swallows fetch failures and does not check response.ok](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/providers/comfyui/adapter.js#L45). This proves a request was attempted in the harness; it cannot prove a server stopped computing. A separate WebUI test passes a real AbortController signal into a pending fetch double. Aborting rejects the generation promise with AbortError. That demonstrates propagation of a client abort, while the hook's visible cancellation state and late-result behavior remain source-reviewed. The actual adapters also do not implement the normalizeError method shown in the development document's target interface; local transport errors are handled by the shared helper. Useful wording for this snapshot is “the editor stopped waiting” and, for ComfyUI, “an interrupt was requested.” An acknowledged remote stop needs its own observed provider result. ## Reproduce the transport decisions without an account The offline WebUI response contains two base64 image fixtures, and both become outputs. An empty response fails; img2img without a reference fails before fetch. The ComfyUI response supplies two image descriptors, and both are downloaded through the mocked /view route. Its workflow replaces the exact prompt placeholder with “offline test” and the seed placeholder with the number 42, preserving the numeric type. The URL parser accepts localhost, 127.0.0.1 and IPv6 loopback over HTTP or HTTPS. The supplied LAN address, public domain, localhost suffix spoof, FTP address and 127.0.0.2 reject. These are parser results; they do not establish redirect handling, DNS behavior or CORS. The recorded request bodies and exact rejection messages are in the report. Download the kit, extract it and run `node verify.mjs`. It needs no installation or network. The README identifies every substituted boundary, links the input bytes to each result and lists the acceptance cases that would be needed to close the observed gaps. This makes the source review checkable without presenting a synthetic fixture as a generated artwork. INPUTS, OUTPUTS AND PINNED SOURCE - [Download the complete offline reproduction kit (.zip)](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/generation-plugin-case-kit.zip) - [Setup, method, limitations and all fifteen cases](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/README.md) - [Exact synthetic inputs and request objects](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/inputs.json) · [Actual outputs, recorded requests and assertion results](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/verification-report.json) - [Source URLs and SHA-256 fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/source-manifest.json) · [Public host.js comparison](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/public-source-check.json) - [Download size and SHA-256](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/download-manifest.json) · [Upstream MIT license](https://ai-creator.top/resources/evidence/2026-09-07/generation-plugin/upstream/LICENSE) CONTINUE THROUGH THE EVIDENCE ## Related field notes [**A Transaction Boundary for Video-Editing Agents**Keep agent writes narrow, revision-safe and reversible.](https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/)[**Follow One Wikimedia Image Into a Saved Video Project**Compare the source fields retained by a main image and an overlay.](https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) ## Source trail for this field note - [Generation plugin development contract](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/docs/generation-plugin-development.md) — scope, invariants and definition of done. - [contract.js](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/contract.js) — schema validation, known runtimes and job states. - [registry.js](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/registry.js) — the three registered provider manifests. - [host.js](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/host.js) — byte checks, decoding and My assets commits. - [Provider adapters](https://github.com/MartinDelophy/ai-video-editor/tree/3684ec4063583c66c80e34e90c655a71d65dad1b/src/plugins/generation/providers) — Puter.js, ComfyUI and WebUI transport behavior. - [useGenerationPlugins.js](https://github.com/MartinDelophy/ai-video-editor/blob/3684ec4063583c66c80e34e90c655a71d65dad1b/src/hooks/useGenerationPlugins.js) — cancellation, supersession and host handoff. ## Questions people ask Can I install a third-party plugin package? No. The current providers are source-integrated connectors reviewed and built with Timeline Studio. There is no runtime for downloading and executing arbitrary third-party plugin code. Does a generated image appear on the timeline automatically? No. When batch processing succeeds, the outputs are added to My assets. The user decides which result to place on a track and how it should be edited. The video validation limitations are documented in the executable case above. Can the editor connect to ComfyUI on another computer? The current loopback boundary accepts only localhost, 127.0.0.1 or ::1. It intentionally does not encourage LAN exposure or wildcard CORS. Why validate the Blob if the provider says it is an image? Response labels can be wrong, empty or temporary. This snapshot checks nonempty bytes and image decoding. Its video metadata path can fall back or trust supplied dimensions, so a completed video asset is not yet proof of a successful decode. AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work includes Timeline Studio, browser AI pipelines, ONNX, WebGPU and agent-compatible creative workflows. [About the author and testing method →](https://ai-creator.top/about/) ## Generate media. Keep the edit intentional. [Inspect the source](https://github.com/MartinDelophy/ai-video-editor)[Open Timeline Studio](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[About](https://ai-creator.top/about/)[Privacy](https://ai-creator.top/privacy/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/create-talking-digital-human-in-browser/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) EXPERIMENTAL PORTRAITS · MEDIA TEST AND COST REVIEW # Browser Talking Portraits: Encoder Test and Model Costs A browser avatar can finish its neural pipeline and still be too slow or visually unconvincing for the intended message. We ran Timeline Studio's actual encoder on three labelled cards and preserved the one-second result: eight frames, repeated images and no sound track. Audio fixtures expose the four-second input window. These experiments explain the media boundaries while current neural portrait quality remains unverified. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **EXPERIMENTAL · SOURCE REVIEW** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Original red test card A, source time zero, marked no AI inference](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-A.png)![Original green test card B, source time half a second, marked no AI inference](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-B.png)![Original blue test card C, source time one second, marked no AI inference](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-C.png) Actual inputs to the encoder experiment: three original test cards. The playable output and decoded frame sequence follow below. These cards are not neural model outputs. SOURCE REVIEW AND ENCODER TEST · SEPTEMBER 7, 2026 ## A playable file is only one part of a talking portrait For a short narration, the first decision is whether animated lips and facial movement add enough value to justify the wait. We reviewed the browser implementation and ran its encoder on three labelled test cards before commissioning another neural render. The current route has a four-second limit, substantial first-use downloads and sparse generated frames. We would keep it as a portrait experiment and test one second at 256 pixels before considering a longer or larger result. This assessment did not run new JoyVASA or LivePortrait inference. It does not grade a newly generated performance. Its new evidence is a real one-second WebM made by the pinned encoder, the exact test-card inputs, decoded frame identities and audio-resampling checks. Those validate media boundaries; they do not measure lip synchronization, identity or neural rendering speed. The model-size calculation and earlier development record remain separate evidence. ### The experiment: three source cards, eight encoded frames We passed three original 256 × 256 test cards into the actual `encodeAvatarFrames` function preserved from commit `68980d1`, using Mediabunny 1.50.8 in the Codex browser (Chromium 152). Their source timestamps were 0, 0.5 and 1 second. The requested output was one second at eight fps. No portrait, speech-driven motion or neural model was involved. Each card says “NO AI INFERENCE” so this playable result cannot be mistaken for generated-face evidence. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/three-cards-eight-frames.webm) Actual encoded output: 1.000 second, 256 × 256, VP8, eight frames, 21,845 bytes and zero audio tracks. The file demonstrates frame selection and video packaging; it is not a talking portrait. [Download the original WebM](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/three-cards-eight-frames.webm). FFmpeg decoded the saved file, and we identified each card from a background pixel away from its label. The resulting sequence was `A A A B B B B C`. The [decoded observations](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/verification.json) and [container probe](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/ffprobe.json) are preserved, rather than inferred from a progress bar. Observed source-card identity at each encoded timestamp | Output timestamps, seconds | Card shown | What this exposes | | --- | --- | --- | | 0.000, 0.125, 0.250 | A (source time 0.000) | At the equal-distance tie at 0.250, the earlier input wins. | | 0.375, 0.500, 0.625, 0.750 | B (source time 0.500) | The card can appear before its own timestamp because selection uses the nearest source image. | | 0.875 | C (source time 1.000) | The final source image appears in the last output frame; no frame is encoded at exactly 1.000 seconds. | This matters when diagnosing a mouth that seems early, late or held: changing the container fps does not add new neural poses. The encoder selects available images and holds them. Our cards prove that selection rule for this fixture; they cannot quantify how noticeable it will be on an actual face. ### The separate audio check: short speech is padded and long speech is clipped We also executed the preserved `decodeAvatarAudio16k` function on two synthetic 440 Hz stereo PCM WAVs at 48 kHz. A 0.25-second input returned 64,000 samples: its first 4,000 samples contain the tone and all remaining 60,000 are zero. A six-second input also returned 64,000 samples, with tone still present at the end. These are observable examples of the fixed four-second, 16 kHz window, not speech-to-motion tests. The [browser result](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/browser-result.json) includes both observations. The WebM probe found one video stream and no audio stream, even though this experiment separately supplied audio to the decoder. Decoding speech and encoding pictures are separate operations: the encoder never receives that audio. A successful WebM therefore cannot establish a finished talking performance. The voiceover still needs to be present and audible in the final timeline export. To reproduce the run, [download the complete offline reproduction package](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-reproduction.zip) and follow its [unzip and local-run guide](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/README.md). The ZIP includes the browser harness, exact extracted functions, original inputs and output, FFmpeg verifier, source excerpt and license. Install the specified Mediabunny dependency locally, then run the included loopback server; no model weights are needed. The inputs are downloadable as [card A](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-A.png), [card B](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-B.png), [card C](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/input-C.png), [the quarter-second tone](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/tone-0.25s.wav) and [the six-second tone](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/tone-6s.wav). Hashes and fixture provenance are in the [experiment manifest](https://ai-creator.top/resources/evidence/2026-09-07/avatar/encoder-trial/manifest.json). ### Three different frame rates describe three different things The [JoyVASA configuration](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/joyVasa.js) requests 25 motion-parameter frames per second and 50 diffusion steps. The renderer uses those parameters to choose sparse portrait keyframes, with a default target of two neural frames per second. The WebM encoder then writes an eight-frame-per-second video by selecting the nearest available keyframe image at each output timestamp. Eight encoded frames therefore do not establish eight distinct neural images or smooth generated motion. The [encoding function](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/editorRuntime.js) reuses images; it does not synthesize in-between motion. Limits supported by the reviewed implementation | Boundary | What the code does | Why it matters to a reader | | --- | --- | --- | | Speech duration | Decode, resample to 16 kHz, retain at most 64,000 samples and zero-pad shorter speech; the generation hook caps video duration at four seconds. | A longer voiceover does not produce a complete longer talking performance through this path. | | Output size | 256 × 256 preview or 512 × 512 quality generator. | A larger image is a resolution choice, not evidence of better synchronization or identity. | | Motion playback | Adaptive neural keyframes, then nearest-keyframe reuse for eight-fps encoding. | Held poses and coarse mouth changes must be checked in playback. A contact sheet cannot establish timing. | | Sound | The intermediate WebM receives a video track only. | Keep the voiceover on the timeline and inspect a final export with audio before calling it a finished talking clip. | | Automatic rejection | Sampled finite values, variance, magnitude and frame distance; retry once, then reuse a previous valid frame if available. | These guards can catch numerical damage. They do not measure phoneme alignment, eye realism or identity preservation. | The duration and insertion rules can be followed in the [generation hook](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/hooks/useAvatarGeneration.js). The sparse-frame choice and fallback are in the [render worker](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/liveportrait.worker.js); the narrower numerical checks are in [frame-quality evaluation](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/livePortraitQuality.ts). The neural rendering and frame-guard behavior remain source findings. The encoder and audio-window findings were additionally exercised by the fixture above. ### Budget the first download separately from the render Adding the declared artifact sizes in the pinned [JoyVASA](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/joyVasa.js) and [LivePortrait](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/livePortrait.js) configurations gives the following budget. This is a model-file estimate, not measured transfer traffic, storage consumption or GPU memory use. Calculated from the configured model artifacts | Files needed | Declared bytes | Approximate decimal size | | --- | --- | --- | | JoyVASA audio, denoiser and auxiliary data | 412,034,375 | 412 MB | | LivePortrait preview and shared models | 326,845,205 | 327 MB | | First complete preview model set | 738,879,580 | 739 MB / 705 MiB | | Additional 512-pixel generator | 210,713,678 | 211 MB more | Loading both tiers totals about 950 MB of declared model files. JavaScript, WebAssembly, browser caches and inference working memory are extra. The files are pinned to [the published model revision a201b68](https://huggingface.co/haixin/timeline-studio-onnx-models/tree/a201b681c8f96672b5c3f624e32d4dc932f150af). Reusing a cache may avoid transfer time; it does not remove neural rendering work. A warm model run and a first visit should therefore be timed separately. ### What the historical timing can and cannot tell us The [earlier port note](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md) records a playable 3.56-second browser WebM and roughly 25–60 seconds per 512 × 512 neural frame on its tested browser and GPU. That note reports open and closed mouths with head and eye motion. It does not include the original voiceover, downloadable output, complete stage log or a named browser/GPU configuration. We have not re-established those observations in this review and do not present them as a current performance benchmark. For planning only: the current two-fps keyframe budget permits up to three neural images for one second, or nine for four seconds. If the earlier 512-pixel rate applied, those images alone would take approximately 75–180 seconds or 225–540 seconds respectively. Downloads, session setup, audio-to-motion work, retries and encoding would add time. This arithmetic is an illustration of why a short output may have a long wait; it is neither a prediction for this device nor a measurement of the 256-pixel preview. ### A bounded trial that can justify a second run The next useful trial is a clean one-second speech excerpt and an owned or authorized front-facing portrait, at the 256-pixel preview tier. The audio-to-motion stage still receives a fixed 64,000-sample window and performs its configured work; one second mainly reduces the later portrait-frame count, so it must not be assumed to divide the whole runtime by four. Keep the beginning of the phrase audible, with a lip closure and opening that can be compared against the sound. Save both source files and their hashes. Do not use the older illustrative contact sheet as an input/output record. 1. Record the browser version, actual WebGPU adapter, output tier and whether the models are already cached. Keep model download time apart from initialization, motion generation, portrait rendering and encoding. 2. Run the one-second preview in an isolated test project. For this editorial trial, use a three-minute warm-run target and stop at five minutes; also stop if a single neural frame exceeds one minute. These are proposed time budgets, not measured speeds or built-in application limits. 3. Keep the intermediate silent WebM and a final timeline export with the same speech. Confirm that the final file really contains an audible track and that the sound starts with the intended frame. 4. Watch at normal speed for lip closure, teeth stability, consistent eyes, a stable jaw and identity. Then inspect the start, a closed-mouth moment, an open-mouth moment and the end. Note repeated frames or fallback holds instead of hiding them with a still image. 5. Reject the attempt if facial features change visibly, the mouth clearly contradicts the speech, the export is silent or the time budget is exceeded. Record the rejected result once. Only a convincing preview within budget would justify considering 512 pixels. A still portrait with the same voiceover is a useful editorial reference: compare whether the added animation actually helps the message. This does not simulate a successful avatar. It makes the decision about the communication benefit of this specific effect, rather than about whether a file was produced. ### Preserved evidence and the publication decision The [structured review record](https://ai-creator.top/resources/evidence/2026-09-07/avatar/source-review.json) contains the byte arithmetic, source boundaries and proposed stop rules. The [manifest](https://ai-creator.top/resources/evidence/2026-09-07/avatar/manifest.json) links small source snapshots and excerpts with their SHA-256 hashes. They match commit `68980d1` and are distributed with the repository's [MIT notice](https://ai-creator.top/resources/evidence/2026-09-07/avatar/LICENSE). Read the [method and file guide](https://ai-creator.top/resources/evidence/2026-09-07/avatar/README.md) to distinguish complete files from excerpts. We retain this page as an experimental cost and feasibility assessment. The playable test-card file above demonstrates the encoder only. There is no new neural talking-portrait demonstration because this review did not establish one. A future result should include its exact portrait and speech, original video, final audio export and device timings before this article describes the workflow as a practical finished-performance option. The related [5D GridSample port record](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/) answers the separate question of numerical graph compatibility. ASSESSMENT BOUNDARY ## Questions this review can answer Was a new talking video generated for this assessment? No new neural talking video was generated. A new playable WebM made from three non-AI test cards verifies the real encoder, and synthetic tones verify the audio window. The older neural audiovisual result was not revalidated here. Does eight-fps WebM mean eight neural frames per second? No. The reviewed encoder reuses the nearest available neural keyframe. It does not synthesize new intermediate motion frames. Does the generated WebM contain the voiceover? The intermediate avatar encoder adds only video. Keep the speech on the timeline and verify the audio track in the final export. What would make a further trial worthwhile? A one-second 256-pixel preview that preserves the face, has convincing speech timing and meets the stated time budget. Those are proposed acceptance criteria, not results already established by this review. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**LivePortrait WebGPU and 5D GridSample**Read the graph rewrite and numerical validation record.](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/)[**From a Creative Brief to a Checked Timing Change**Check a one-second audio move against its linked label and source.](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the implementation and its limits [Read the LivePortrait graph-port record →](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) EXECUTABLE FIELD NOTE · SEPTEMBER 7, 2026 # Edit a Timeline Archive Without Losing Its Media A portable project is only a useful handoff if an edit preserves the files needed to reopen it. This case changes one project setting, compares every other archive entry byte for byte, and then exercises the pinned command-line renderer. A valid metadata write, a preserved media archive and a playable export are three separate results to check. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **SOURCE-VERIFIED FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Edit a Timeline Archive Without Losing Its Media visual guide](https://ai-creator.top/resources/articles/timeline-archive-browser-handoff.webp) ## Put an unexpected entry beside the media The starting archive contains a synthetic color slate, eight seconds of diagnostic source audio, and project metadata that uses a three-second source range inside a six-second edit. For this experiment we add a plain-text client note at `notes/client-note.txt`. The note is not an editing asset. Its purpose is to reveal whether a metadata rewrite preserves unfamiliar ZIP entries or silently rebuilds the archive from only the fields it recognizes. Download [the exact input archive](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/archive-input.timeline) and [the one-operation plan](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/archive-plan.json). The plan applies `project.set_ratio` with `ratio: 9:16`, based on revision zero, and names a sibling output archive. It does not replace media, change audio timing or claim to crop an image. The output ratio is project metadata; the later render uses contain fitting to place the original slate in a vertical frame. Keep the source attached ## Compare entries, not the outer ZIP hash The production CLI reads all archive entries, updates `project.json`, and writes the saved file. The output reaches revision one with ratio 9:16. Our verifier compares each of the three non-project entries from the input with its counterpart in [the edited archive](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/archive-edited.timeline). Recorded unchanged archive entries | Entry | Bytes | Result | | --- | --- | --- | | Synthetic PNG slate | 4,559 | Identical bytes and SHA-256 | | Original diagnostic WAV | 256,044 | Identical bytes and SHA-256 | | Client note text | 70 | Identical bytes and SHA-256 | The [full entry-level comparison](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/archive-entry-comparison.json) includes paths and complete hashes. The project JSON correctly changes. The outer ZIP can therefore have a different hash even though every retained source asset is unchanged; archive compression and export metadata also make whole-file equality the wrong assertion for this edit. This records a metadata-only rewrite of this fixture. It does not show how media import, replacement or cleanup behaves for every project. The note demonstrates that this CLI path carries an unknown entry forward; it is not a universal compatibility promise for other archive writers. ## Render the supported composition and inspect the actual file The [render request](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/render-plan.json) specifies a 180 × 320 MP4 at 24 frames per second. The pinned CLI invokes native FFmpeg against the saved archive, then inspects the result with ffprobe. The reported file is six seconds long, has the requested dimensions and contains an audio stream. Our reproduction script additionally decodes the complete MP4 to a null output with FFmpeg; that decode exits successfully. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/archive-render.mp4) [Download the actual CLI render](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/archive-render.mp4). Synthetic color slate and diagnostic tones, 180 × 320, six seconds. This is the recorded native command-line output, not a browser export or a generated speech performance. The earlier article said the command runner could not render. That was a historical capability limit and is removed in this revision. This pinned source can render its documented subset. The exported fixture makes that correction checkable rather than relying only on a feature list. ## A second input tests what the renderer refuses to omit We then ask the same renderer to export the captioned project from the [timing-brief case](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/). It returns `UNSUPPORTED_RENDER_FEATURE` with a nonzero exit code because the composition contains a visible caption. The [rejected request](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/unsupported-render-plan.json) and CLI response are published alongside the successful case. A structural edit can therefore succeed while this export route remains unsuitable. For a captioned production job, keep the label and use a compatible render path; do not silently remove required content to fit a narrower renderer. The browser remains valuable for unsupported composition and visual review. It is no longer accurate to describe every import or render as browser-only. **Version boundary:** This September 7, 2026 review uses Timeline Studio commit [`68980d1`](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/scripts/timeline-command.mjs). Its CLI exposes inspection, diff, project writes, prepared media import and a limited native FFmpeg renderer. That renderer supports the documented Visuals, Voiceover and Music subset; visible captions, stickers, overlays, transitions and other unsupported composition are rejected. Capabilities here describe this snapshot, not every hosted build or Agent environment. Keep the human check ## Finish the handoff with the checks that the file cannot answer The recorded checks establish retained entry bytes, the edited ratio, a decodable synthetic MP4 and one explicit rejection boundary. They do not prove that an arbitrary browser will reopen a complex project, that a font will match, or that a cut sounds right. After handing a real project back to an editor, inspect its first frame, each important boundary, required captions and audible tracks using the actual target software. Keep the source archive, edited archive and render as separate deliverables with clear names. Their roles differ: the source establishes the prior state, the edited archive preserves continued work, and the render exposes what one export path produced. The [FFmpeg build record](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/ffmpeg-version.txt) and pinned source manifest allow a later investigation to distinguish changed source, changed tooling and changed media. Extract the linked kit and run `node reproduce.mjs` in its directory with Node, FFmpeg and ffprobe installed. The kit includes the pinned production CLI, command engine, render planner, fflate and synthetic input. It requires no account, model download or package installation. The loader changes import locations only; production function bodies remain unchanged. Reproduction writes the documented sibling fixtures and `results/` files inside the kit. [Download the complete case kit](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/editorial-workflows-case-kit.zip) · [Method and reproduction steps](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/README.md) · [Recorded results and limits](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/report.json) · [All eight CLI calls and responses](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/commands.json) · [Pinned source fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/source-manifest.json) ## Questions this case can answer Can the pinned command runner render an MP4? Yes. This case records a six-second 180 by 320 MP4 with an audio stream and a successful complete decode. The renderer supports a limited documented composition subset. Did the metadata edit change the source media? For this fixture, every non-project ZIP entry retained exactly the same bytes and SHA-256 hash. The project JSON and outer archive changed. Why did the captioned project fail to render? The pinned native renderer does not support visible captions and returned UNSUPPORTED\_RENDER\_FEATURE. That composition requires a compatible render path rather than deleting the required caption. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**One Video-Editing Plan Across Agent Channels**Inspect one committed move, its retry and a stale new request.](https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/)[**A Transaction Boundary for Video-Editing Agents**Keep agent writes narrow, revision-safe and reversible.](https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/)[**FFmpeg Media Pipelines for Web Playback**Separate demuxing, decoding, compatibility and export.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Open the edited project in Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # FFmpeg Is Not the Web Player. It Is the Pipeline That Makes Playback Reliable. A browser video player can have polished controls and still fail at its most basic job. The play button appears, but the first frame takes too long. Seeking jumps to the wrong moment. A file plays in one browser and produces silence in another. The progress bar claims the video is buffered while the server ignores byte-range requests. FFmpeg is often described as the player in this architecture, but that description hides the useful boundary. The browser owns playback through HTMLMediaElement, Media Source Extensions or WebCodecs. FFmpeg prepares, inspects, transcodes and packages the media so those browser APIs receive something they can use predictably. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![FFmpeg Is Not the Web Player. It Is the Pipeline That Makes Playback Reliable. visual guide](https://ai-creator.top/resources/articles/ffmpeg-web-player-pipeline.webp) ## Start by separating the player from the media pipeline The native video element is a state machine connected to a browser decoder, network stack and rendering path. FFmpeg is a set of command-line tools and libraries for reading, filtering, encoding and muxing media. It can create files or streams a web player consumes, but it does not replace the browser's play promise, autoplay rules, fullscreen behavior, accessibility controls or Media Session integration. This separation is useful during debugging. If a file cannot be decoded, inspect codecs and pixel formats. If it decodes locally but stalls from the site, inspect HTTP delivery. If media plays but the interface shows the wrong duration, inspect player state and timestamps. Calling the entire chain “the FFmpeg player” makes three different problems look like one. Keep the source attached ## Probe before you prescribe A filename extension does not tell you enough about a media asset. MP4 is a container and can hold streams that do not share the same browser support. Before changing anything, use ffprobe to read stream and format metadata. A practical inspection command is ffprobe -v error -show\_entries format=filename,format\_name,duration,start\_time,bit\_rate -show\_entries stream=index,codec\_type,codec\_name,profile,pix\_fmt,width,height,r\_frame\_rate,sample\_rate,channels,channel\_layout -of json input. The result tells you whether the source is already a reasonable browser target, whether its timestamps begin somewhere unexpected and whether audio exists at all. It also prevents a costly mistake: transcoding a compatible H.264/AAC file when moving MP4 metadata or fixing server headers would have been enough. ## Progressive MP4 is still the simplest useful baseline For ordinary on-demand clips, a single MP4 URL connected to a video element is difficult to beat. H.264 video, AAC audio and a broadly compatible pixel format such as yuv420p form a common baseline across modern browsers. A typical compatibility encode is ffmpeg -i input.mov -map 0:v:0 -map 0:a:0? -c:v libx264 -pix\_fmt yuv420p -preset medium -crf 21 -c:a aac -b:a 160k -movflags +faststart output.mp4. The optional audio map avoids failing on silent sources. CRF is a quality target rather than a fixed bitrate; the appropriate value depends on content and delivery goals. The important architectural decision is not the exact number. It is producing a deliberate playback format instead of assuming the camera, screen recorder or editing export already matches the web. ## Fast start is metadata placement, not streaming magic A normal MP4 often writes its moov metadata after the encoded media. A browser may need that index before it can report duration or seek accurately. FFmpeg's movflags +faststart performs a second pass that moves the index to the beginning. That can materially improve progressive startup because the browser can understand the file before downloading its tail. It does not create adaptive streaming, reduce the encoded bitrate or compensate for a server that refuses byte ranges. FFmpeg's official MOV/MP4 muxer documentation also notes that faststart does not apply in the same way to fragmented output. Use it for completed progressive files, then verify the deployed response instead of assuming the flag solved every startup problem. ## Byte ranges make the seek bar honest Progressive playback depends on the relationship between MP4 metadata and HTTP delivery. When the user seeks to a late timestamp, the browser commonly requests a byte range containing the needed samples. The server or CDN should respond with a valid partial response, Content-Range and an appropriate media content type. If it always returns the entire file, seeking may be slow, bandwidth-heavy or unreliable even though the MP4 itself is valid. This is why testing a local file is insufficient. Open developer tools against the deployed URL, seek far beyond the buffered region and inspect the request. The browser player, encoded asset and host are one playback system, but only one of them is changed by an FFmpeg command. ## Stream copy is a real optimization when the streams are already safe If the codecs and parameters are already supported but the container or metadata arrangement is wrong, remuxing can avoid quality loss and large compute cost. A command such as ffmpeg -i input.mov -map 0 -c copy -movflags +faststart output.mp4 copies compatible streams into a new MP4 container. This is not universally valid: an incompatible codec does not become browser-compatible merely because it sits inside an MP4 file, and unusual timestamps or attachments may require more selective mapping. The point is to make the decision from probe results. A web upload pipeline should classify assets into direct use, stream-copy remux and full transcode rather than sending every input through the most expensive path. ## HLS solves a different delivery problem HTTP Live Streaming packages media as a playlist plus segments. It becomes valuable for long videos, changing network conditions, multiple quality levels or live delivery. FFmpeg's HLS muxer can produce playlists and segments, but segment duration is governed by keyframes: the muxer cuts on the next keyframe after the target time. A closed GOP and intentional keyframe interval are therefore part of the packaging design. For a six-second target at 30 frames per second, a pipeline might use a 180-frame GOP, disable scene-cut keyframes when exact alignment is required, and generate independent segments. The correct settings vary, but the invariant is stable: bitrate variants need aligned boundaries if the player is expected to switch between them cleanly. ## Fragmented MP4 is the bridge to Media Source Extensions Media Source Extensions allows JavaScript to append encoded chunks into SourceBuffer objects connected to a media element. Common implementations use fragmented MP4 initialization and media segments rather than a single finished MP4. FFmpeg's MOV/MP4 muxer supports fragmentation flags and CMAF- or DASH-compatible output. Fragmentation stores packet metadata with chunks, which allows progressive production and makes interrupted output more recoverable, but the official documentation warns that fragmented files can be less compatible with other applications. Choose it because the player architecture needs appendable segments, not because fragmented output sounds more modern. A plain video URL remains simpler when adaptive or programmatic buffering is unnecessary. ## WebAssembly FFmpeg belongs to preparation, not steady-state playback Running an FFmpeg build through WebAssembly can be useful for local imports: probe a file, generate a proxy, normalize audio, extract a poster frame or create a browser-friendly export without uploading the source. It is usually a poor substitute for the browser's native decoder during continuous playback. A software decode loop consumes more CPU and memory, duplicates work already optimized by the browser and complicates audio/video synchronization. WebCodecs can provide low-level hardware-backed frame access where supported, while HTML video remains the strongest default for ordinary playback. In a local-first editor, the practical pattern is to use browser-native playback for preview and reserve FFmpeg-style processing for boundaries the native media stack cannot cross. ## Timestamps are where editing and playback meet A web player usually thinks in seconds from its media timeline. Edited projects also carry source offsets, clip-local time, playback rate and sequence position. FFmpeg can normalize or preserve timestamps depending on input and options, but a player must still map its project clock intentionally. A trimmed clip that represents source seconds 42 through 49 should seek to sourceStart plus local project time multiplied by playback rate. Concatenated media must not inherit unexplained gaps or negative starts. When a progress bar jumps or audio begins late, inspect packet timestamps and the application's mapping before re-encoding blindly. A transcode can hide a timestamp bug by rewriting the timeline, but hiding is not the same as understanding. ## Player errors need evidence from every layer A reliable web player records enough information to distinguish network, demux, decode and interface failures. Capture the media element error code, currentSrc, readyState, networkState, duration, currentTime and buffered ranges. Record HTTP status, response headers and whether the failing request was a playlist, initialization segment, media segment or byte range. Keep ffprobe output for the deployed asset. Then reproduce with a minimal native video element before blaming a larger framework. This evidence turns “video does not play” into a specific claim: the AAC track is missing, Safari rejected the profile, the CDN returned HTML for a segment, CORS blocked a manifest, or the UI attempted to seek before metadata loaded. ## Build a test matrix around user actions, not only file validity An encoded file can pass a probe and still provide a poor product experience. Test a cold first load on a throttled connection, seek into an unbuffered region, pause and resume repeatedly, switch tabs, rotate a phone and reconnect after a transient failure. Confirm captions, poster behavior, keyboard controls, focus visibility and muted autoplay expectations. For HLS, test a variant change and a segment error. For local Blob URLs, verify cleanup does not revoke the active source. The goal is not to prove that FFmpeg produced bytes. It is to prove that the browser can acquire, decode and control those bytes throughout the interactions the interface promises. ## The durable architecture keeps each tool in its strongest role FFmpeg is strongest at deterministic media inspection and transformation. The web server is responsible for correct, cacheable and range-aware delivery. HTMLMediaElement is responsible for broadly compatible playback, WebCodecs for lower-level frame access and Media Source Extensions for JavaScript-managed streaming buffers. The application coordinates those pieces and presents honest state to the user. Keeping the boundary explicit makes the system easier to improve: a new codec can change the encode ladder, a different CDN can change delivery, and a redesigned player can change controls without rewriting the entire pipeline. The most reliable web player is not the one that uses FFmpeg everywhere. It is the one that uses FFmpeg exactly where media needs to become predictable. Evidence before claims ## Primary references The behavior described here follows the FFmpeg command-line and formats documentation at [ffmpeg.org](https://ffmpeg.org/ffmpeg.html) and [ffmpeg.org](https://ffmpeg.org/ffmpeg-formats.html), together with the browser media references for HTML video, Media Source Extensions and WebCodecs at [developer.mozilla.org](https://developer.mozilla.org/). Check the documentation for the FFmpeg build and browsers you deploy because encoder availability, defaults and platform codec support can change. MEDIA PACKAGING LAB · SEPTEMBER 7, 2026 ## Two packaging assumptions, checked against actual bytes We generated an eight-second moving test pattern and a 660 Hz tone, then tested two small changes to its media pipeline. Moving an MP4 index preserved every encoded packet. Asking for two-second HLS segments did not produce two-second segments until the source keyframes were aligned. The inputs, outputs, packet records and script are published below so these results can be inspected without trusting a screenshot. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/faststart-gop90.mp4) The faststart output: 320 × 180, 30 fps, H.264 yuv420p, mono AAC at 48 kHz. Its sound is a steady synthetic tone, with no speech. This embedded player is an asset preview; the recorded experiment used native command-line FFmpeg, not browser automation. Recorded environment FFmpeg 8.0.1 with libx264 and AAC; Darwin 25.3.0 x86\_64; Python 3.14.6. [Complete build record](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ffmpeg-version.txt). Controls Eight seconds; 240 video frames; one video and one audio stream. CRF 23, medium preset, closed GOP, scene cuts disabled, no B-frames. Both GOP variants were generated from the same procedural source recipe. ### Case 1: the file changed, but the encoded media did not We first wrote an ordinary MP4 with a 90-frame GOP, then remuxed that exact file using this command: ``` ffmpeg -i ordinary-gop90.mp4 -map 0:v:0 -map 0:a:0 \ -c copy -movflags +faststart faststart-gop90.mp4 ``` The script reads each top-level MP4 box's declared size and advances by that size. It does not search blindly for the letters `moov`, which could also occur inside payload data. Offsets below are zero-based bytes from the start of the file. Measured MP4 layout and packet identity | Artifact | Top-level order | moov starts | mdat starts | File size | | --- | --- | --- | --- | --- | | [ordinary-gop90.mp4](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ordinary-gop90.mp4) | `ftyp → free → mdat → moov` | 331,128 bytes | 40 bytes | 339,406 bytes | | [faststart-gop90.mp4](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/faststart-gop90.mp4) | `ftyp → moov → free → mdat` | 32 bytes | 8,318 bytes | 339,406 bytes | The index moved from byte 331,128 to byte 32. It occupies 8,278 bytes in both files. Every one of the 240 video packets and 376 audio packets retained its SHA-256 payload hash, timestamp, duration and flags, in per-stream order. The whole-file checksums differ because the container layout changed. Same media payload and same file size are stronger evidence here than two previews that merely look alike. For this sample, the complete index is available within the first 8,310 bytes of the faststart file. That is a byte-layout observation, not a measured reduction in startup time or transferred bytes. We did not collect browser requests, cache state or network timings. The meaning of `faststart` comes from the [official MOV/MP4 muxer documentation](https://ffmpeg.org/ffmpeg-formats.html); [stream copy](https://ffmpeg.org/ffmpeg.html#Streamcopy) copies encoded packets without a decode/encode cycle. Inspect the raw packet hashes for the [ordinary MP4](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ordinary-gop90.mp4.packets.json) and [faststart MP4](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/faststart-gop90.mp4.packets.json). We used `ffprobe -show_packets -show_data_hash sha256`, whose payload-hash behavior is documented in the [ffprobe options](https://ffmpeg.org/ffprobe.html#Main-options). Probe metadata for the [source](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ordinary-gop90.mp4.probe.json) and [remux](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/faststart-gop90.mp4.probe.json) preserves the stream parameters for review. ### Case 2: a two-second HLS target produced three-second segments Next we packaged the ordinary MP4 as HLS with fragmented MP4 segments. The source's keyframes were at 0, 3 and 6 seconds. Keeping `-c copy` retained that schedule, so the resulting playlist contained 3, 3 and 2 seconds, despite `-hls_time 2`. ``` mkdir -p hls-gop90 ffmpeg -i ordinary-gop90.mp4 -map 0:v:0 -map 0:a:0 -c copy \ -f hls -hls_time 2 -hls_list_size 0 -hls_playlist_type vod \ -hls_segment_type fmp4 -hls_flags independent_segments \ -hls_segment_filename 'hls-gop90/segment-%02d.m4s' \ hls-gop90/index.m3u8 ``` Same two-second packaging request, different encoded keyframes | Source encode | Keyframe PTS | Actual EXTINF durations | Playlist target duration | | --- | --- | --- | --- | | [90-frame GOP / 30 fps](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ordinary-gop90.mp4) | 0, 3, 6 s | 3, 3, 2 s | 3 s · [actual playlist](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/hls-gop90/index.m3u8) | | [60-frame GOP / 30 fps](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/aligned-gop60.mp4) | 0, 2, 4, 6 s | 2, 2, 2, 2 s | 2 s · [actual playlist](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/hls-gop60/index.m3u8) | The successful control was a fresh encode of the same generated picture/audio recipe using `-g 60 -keyint_min 60 -sc_threshold 0 -bf 0 -flags +cgop`. After the same stream-copy HLS packaging step, it produced four two-second segments. This control changes the encode, so it is not a lossless fix to the 90-frame-GOP file and not a video-quality comparison. The arithmetic of 60 frames / 30 fps applies to this constant-frame-rate fixture; it is not a universal prescription for variable-frame-rate uploads. This is consistent with the [FFmpeg HLS muxer documentation](https://ffmpeg.org/ffmpeg-formats.html): the target is constrained by the next usable keyframe. An existing MP4 cannot acquire new encoded keyframes by changing the playlist target alone. Also, writing `independent_segments` is not a substitute for preparing a suitable GOP. Here the encode explicitly requests a closed GOP; the keyframe records and playlist durations show the boundaries we obtained. Both local playlists resolved every referenced initialization/segment file and decoded to a null output with exit code 0. That checks this local package, including its audio. It does not test an adaptive bitrate ladder, browser seeking or recovery from a missing HTTP segment. Keep `init.mp4` with the corresponding `.m4s` files: a media fragment by itself is not the complete asset represented by the playlist. ### Reproduce the observations and keep the result inspectable 1. Download the [complete case kit](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/ffmpeg-packaging-case-kit.zip) for both MP4s, the 60-frame-GOP control, both HLS directories and raw records. In its extracted directory run `shasum -a 256 -c SHA256SUMS` to verify the published files. 2. Install a native FFmpeg build that includes libx264 and AAC, with `ffmpeg` and `ffprobe` on PATH. Download [reproduce.py](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/reproduce.py) and run `python3 reproduce.py --output ./ffmpeg-reproduction`. It generates its own source; no footage, API key or network download is required. 3. Open the new `run.json`. Its checks cover MP4 box placement, packet payload/timestamp identity, HLS durations and local segment presence. The script exits nonzero if those observed invariants differ. Preserve its version files if your results differ; a different encoder build can change exact file hashes. [Measured results](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/run.json) · [Executed commands and exit codes](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/commands.json) · [Media-generation shell commands](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/commands.sh) · [Artifact SHA-256 manifest](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/manifest.json) · [Method and limits](https://ai-creator.top/resources/evidence/2026-09-07/ffmpeg/README.md) ### Use the result to choose the next repair If a completed compatible MP4 has its index after the media, a stream-copy faststart remux is a concrete container-level repair to investigate. If an HLS playlist misses its requested segment cadence, inspect source keyframe PTS before changing the player. This experiment demonstrates those two diagnoses locally. The next deployment check is separate: verify the actual hosted responses, cold playback and seeking in the browsers you support. No browser performance, WebAssembly throughput or production delivery result is claimed by these files. Synthetic fixture created for AI Creator on September 7, 2026 with FFmpeg's built-in testsrc2 and sine sources. No stock footage, recorded person or third-party audio was used. The experimental script, measurements and explanatory text are original; the official references establish option semantics, while the linked artifacts establish this run's observations. REFERENCE ## Frequently asked questions Does FFmpeg play the video inside a web page? Usually no. FFmpeg prepares or transforms the media; the browser plays it through HTML video, Media Source Extensions or a lower-level API such as WebCodecs. Should every upload be converted to H.264 and AAC? No. Probe first. Compatible streams may be used directly or remuxed with stream copy, avoiding an unnecessary generation loss and encode cost. What does movflags +faststart actually do? For a completed progressive MP4, it moves the moov index toward the beginning so a browser can learn the file structure earlier. It does not create adaptive streaming or fix HTTP delivery. Why does an MP4 play locally but seek badly online? The deployed server may not support byte-range requests correctly, may return the wrong MIME type or may be serving stale or transformed content. When should a web player use HLS? Use it when adaptive quality, long-form delivery, live streaming or segmented recovery justifies playlists, multiple assets and additional player logic. Should FFmpeg run in WebAssembly for playback? It can help prepare unsupported local files, but native browser playback is generally more efficient for continuous preview. Use WebAssembly processing only where it provides a clear capability. How do I debug a generic media error? Collect ffprobe metadata, media element state, buffered ranges and network responses, then reproduce with a minimal native video element to isolate packaging, delivery, decode and UI problems. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Edit a Timeline Archive Without Losing Its Media**Compare preserved archive bytes, a native render and a rejected caption.](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/)[**NanoVSR 4× Restoration in the Browser**Inspect model shapes, hashes and the WebGPU runtime path.](https://ai-creator.top/resources/nanovsr-4x-video-restoration-in-browser/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Open Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) BUG CASEFILE · TIMELINE STUDIO 0.4.1 # The Timeline Was Split, but the Audio Wasn't A four-second voiceover was cut at the playhead. The timeline showed two clean segments, and each waveform looked plausible. But when playback entered the second segment, the voice started again from the beginning. The edit looked right and sounded wrong. Fixing that bug in Timeline Studio v0.4.1 required more than changing one currentTime expression: every playback, seeking, synchronization and export path had to agree on the difference between project time and source-media time. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 8, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![The Timeline Was Split, but the Audio Wasn't visual guide](https://ai-creator.top/resources/articles/audio-source-offset-casefile.webp) EXECUTABLE CASE / SEPTEMBER 7, 2026 ## Hear the wrong source range, then reproduce the split The original failure becomes easier to diagnose with an audio file whose source sections sound different. This new case uses an eight-second synthetic tone sequence, an already trimmed clip, the pinned production split reducer, and two portable projects. No microphone recording or AI model is required. EXACT STARTING STATE The audio clip occupies project 2.0–5.0 seconds, while representing source 1.0–4.0 seconds at 1× speed. Its sourceStart is already 1.0. Cut at project 3.5 seconds, not at the beginning of a fresh source. RESULT FROM THE PRODUCTION REDUCER The left clip stores start 2.0, duration 1.5 and sourceStart 1.0. The right stores start 3.5, duration 1.5 and sourceStart 2.5. The two project ranges remain adjacent and their source ranges cover the original retained span exactly. A FAILURE YOU CAN DISTINGUISH At the right clip's entrance, the correct source time is 2.5 seconds: the 330 Hz section. Omitting the offset seeks to 0.0 seconds: the lower 220 Hz section. The listening controls below are PCM slices generated from the same source; they demonstrate the error and are not presented as captured browser exports. ## Listen to the same boundary with and without the offset Correct range, source 2.5–4.0 seconds (330 Hz): [audio sample](https://ai-creator.top/resources/evidence/2026-09-07/engineering/right-expected.wav) Negative control, source 0.0–1.5 seconds (220 Hz): [audio sample](https://ai-creator.top/resources/evidence/2026-09-07/engineering/right-without-offset.wav) [Download the complete eight-second diagnostic source](https://ai-creator.top/resources/evidence/2026-09-07/engineering/source-four-tones.wav). It contains 220, 330, 440 and 550 Hz sections, each two seconds long, as 16 kHz mono PCM. Make the boundary explicit ## Open the starting project and compare the retained source time Download [before-split.timeline](https://ai-creator.top/resources/evidence/2026-09-07/engineering/before-split.timeline), open it in Timeline Studio, select its audio clip and split at 3.5 seconds. Compare it with [after-split.timeline](https://ai-creator.top/resources/evidence/2026-09-07/engineering/after-split.timeline). Both include the full diagnostic source and a synthetic color slate. The visual lane is locked and captions are disabled. The archive writer and reader restored both files in the recorded Node run. Every restored audio entry matched the original WAV byte for byte, and the project remained six seconds long. The split reducer shares one Blob; the archive writer embeds an entry for each split clip. Inspect [before metadata](https://ai-creator.top/resources/evidence/2026-09-07/engineering/before-split.json), [after metadata](https://ai-creator.top/resources/evidence/2026-09-07/engineering/after-split.json) and the [production command engine's structural diff](https://ai-creator.top/resources/evidence/2026-09-07/engineering/structural-diff.json) without opening an editor. ## Protect the next edit as well as the first cut The executable check cuts the retained right clip again at project 4.0 seconds and obtains sourceStart 3.0. A separate 2× case obtains sourceStart 4.0 at the first cut. Other checks preserve a locked lane and reject an edge cut, while verifying waveform fixture slices, fade cleanup, linked-caption ownership, selected clip identity and distinct object URLs. These assertions execute the included production reducer. Run `node verify.mjs` inside the downloaded kit. The September 7 run passed ten check groups across this case and the companion mobile case on Node 22.14.0, macOS arm64. This is a reducer and archive result. Browser playback, seek/drift correction and MP4 export still require the listening checks described in the README. REPRODUCE THIS CASE - [Complete case kit: projects, source, media and executable checks (.zip)](https://ai-creator.top/resources/evidence/2026-09-07/engineering/engineering-case-kit.zip) - [Setup, assumptions and step-by-step reproduction](https://ai-creator.top/resources/evidence/2026-09-07/engineering/README.md) - [Actual verification report: 10 check groups passed](https://ai-creator.top/resources/evidence/2026-09-07/engineering/verification-report.json) - [Pinned source URLs and SHA-256 fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/engineering/source-manifest.json) EXACT IMPLEMENTATION - [Split reducer at commit 68980d1](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/timelineCutActions.js) - [Portable archive writer and reader](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/projectArchive.js) - [Project inspection and structural diff](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/projectCommandEngine.js) ## The visible edit concealed a second clock Timeline editing is non-destructive. Cutting a clip does not rewrite the original Blob; it creates two views over different ranges of the same source. Timeline Studio already stored start, the location where a segment appears in the edited project, and duration, the amount of project time it occupies. That was sufficient while every clip began at the first sample of its source. The assumption broke after a split. The second segment could begin at project time 3.5 seconds while representing audio that began 2.5 seconds inside the original recording. One segment now needed two coordinates. Without an explicit source offset, the playback element could know where to appear but not where to listen. ## Why the old calculation repeated the beginning The former path effectively set audio currentTime to timelineTime minus segment.start. That expression produces clip-local time: zero at the segment's left edge, then one, two and three seconds as the playhead advances. It is correct only when the represented source range also starts at zero. After a split, entering the second segment still produces local time zero, so the media element seeks to the beginning of the full recording. The general invariant is different: source time equals source offset plus clip-local timeline time. Naming those terms made the failure obvious and prevented the fix from becoming another special case around the cut point. ## The split now accumulates sourceStart At the playhead, the first duration is the cut time minus the original segment start. The first segment keeps its existing sourceStart and retains waveform peaks before the proportional split. The second segment starts at the cut, receives the remaining duration and advances sourceStart by the duration retained in the first piece. If a segment already represented audio beginning one second into a file and was cut after another 1.5 seconds, the new second segment must begin at source time 2.5 seconds—not 1.5 and certainly not zero. Accumulation matters because editors can cut an already trimmed or previously split segment more than once. ## Playback, seeking and synchronization share the rule Correct split data is useless if consumers interpret it differently. Timeline Studio now adds sourceStart when playback crosses into a segment, when a user drags the playhead, and when the media synchronization effect corrects drift between project time and the HTML audio element. These paths used to look like separate UI behaviors, but all three answer the same question: which sample of the original media corresponds to this project position? Centralizing the clip-local calculation and adding the stored offset keeps ordinary playback and explicit seeking aligned. It also means a correction designed to reduce drift cannot accidentally jump a split segment back to the beginning. ## Preview and export must hear the same edit A browser editor has at least two audio engines: live media elements for responsive preview and decoded buffers for deterministic offline export. Fixing only the visible playback bug would have created a more dangerous failure—the editor would sound correct, but the downloaded video would repeat the wrong phrase. Timeline Studio now passes sourceOffset and the trimmed sourceDuration into the offline mixer. Its compatibility export path schedules the decoded buffer with the same range. The application therefore treats preview and export as two implementations of one timeline contract, not as independent features that happen to consume similar objects. ## Waveforms are part of the truth Waveform peaks are not decoration. Editors use them to choose a cut and to verify that the second clip begins with the expected syllable or silence. When a segment is divided, its peak array is split at the proportional position of the edit. The first segment keeps the earlier peaks and the second keeps the remainder. This does not decode or modify the underlying audio; it preserves a visual index for each view of the source. Keeping geometry, sound and waveform consistent is essential because a plausible but incorrect waveform can hide a playback bug and cause users to distrust their own edit decisions. ## Linked captions need an unambiguous owner Voiceovers can be linked to caption segments, so cutting audio also raises an ownership question. The original caption remains associated with the first audio segment and its end is clamped to the cut time. The newly created audio segment receives its own identity instead of letting one caption point ambiguously at two independently movable clips. This behavior is deliberately conservative: a split operation should not invent new words or duplicate caption text. It should preserve the valid relationship, prevent timing from extending beyond the retained audio, and leave the editor free to create or adjust a second caption intentionally. ## The regression test encodes the complete invariant The strongest test does not start with a pristine clip at source time zero. It starts with an audio segment whose sourceStart is already one second, splits it 1.5 seconds into the displayed clip, and expects the second segment to store 2.5 seconds. The assertion also checks both project ranges, proportional waveform slices, fade-boundary cleanup, caption relinking, selection of the new segment and safe object-URL replacement. That breadth is intentional. Media bugs often reappear when a correct numeric fix leaves neighboring state inconsistent. Testing the operation as an editorial transaction protects more than one arithmetic expression. Keep the human check ## The larger lesson is to make every clock explicit Video editors routinely manage project time, track time, clip-local time, source-media time and sometimes playback-rate-adjusted time. The values may coincide for a fresh clip, which makes shortcuts look harmless. Editing operations cause them to diverge. A robust model names the coordinate carried by each field, defines conversions in one place and makes preview, synchronization, visualization and export consume the same rule. Timeline Studio v0.4.1 is a small release with a useful systems lesson: software becomes trustworthy when the downloaded result follows the same temporal contract as the pixels and waveforms the editor showed before export. REFERENCE ## Frequently asked questions What is sourceStart? It is the position inside the original audio file where a non-destructive timeline segment begins. It is separate from start, which is the segment's position in the edited project. Why did only the second split segment sound wrong? Clip-local time resets to zero at each segment boundary. Without adding the source offset, the second segment therefore sought to zero in the original recording. Why was a playback-only fix insufficient? Seeking, drift correction and two offline export paths also convert project positions into source positions. Every consumer must use the same offset rule. Does splitting rewrite or duplicate the audio file? No. Both segments remain non-destructive views over ranges of the same source Blob, with independent timeline geometry and source offsets. How are waveform peaks handled? The cached peak array is divided at the proportional cut position so each segment displays the portion of the waveform corresponding to the range it plays. Which release contains the fix? The complete source-offset fix and its regression coverage are included in Timeline Studio v0.4.1, released from commit 6dab1a7 after the underlying editor update in 8287b90. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Edit a Timeline Archive Without Losing Its Media**Compare preserved archive bytes, a native render and a rejected caption.](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/)[**FFmpeg Media Pipelines for Web Playback**Separate demuxing, decoding, compatibility and export.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/)[**A Browser Whisper Transcription Workflow**Listen to the source and inspect the returned draft.](https://ai-creator.top/resources/whisper-transcription-workflow/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Open Timeline Studio v0.4.1 →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/ [AI Creator](https://ai-creator.top/)[Resources / Field Notes](https://ai-creator.top/resources/) TIMELINE STUDIO · TIMING BRIEF CASE # From a Creative Brief to a Checked Timing Change An editing brief becomes useful when it states both the desired change and what must survive it. This case asks for one modest edit: bring a diagnostic audio cue forward by one second, preserve its three-second source range, and keep its linked label aligned. The published brief, dry run and resulting project show exactly how that request became a checked timing change. Published August 11, 2026 By Martin Delophy BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Aug 11, 2026 · REVIEWED Sep 7, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![A portable project file branching into editable visual, voiceover, caption, music and verification tracks](https://ai-creator.top/resources/articles/timeline-skill-editorial-workflow.webp) Concept illustration of a portable editing workflow. This article tests a synthetic audio cue and its linked timing label; it does not demonstrate generated narration or a finished captioned video. THE EDITING REQUEST Move the cue earlier. Preserve its source. Keep the linked label aligned. 01 ## Make the request precise enough to reject a wrong result The [published brief](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/creative-brief.json) begins with a six-second visual slate. Its audio clip occupies project 2.0–5.0 seconds while using source 1.0–4.0 seconds. A linked caption occupies project 2.25–4.5 seconds. The requested move advances the cue one second; it does not shorten the source, accelerate it, change the picture or invent narration. These inputs are synthetic. The audio is a sequence of tones from the earlier [source-offset experiment](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/#reproducible-case), and the caption literally says “Diagnostic tone — not speech.” The text is a timing label, not an invented transcript. Starting with unequal project and source times makes a source reset easier to detect than a fresh clip whose offsets are all zero. The expected result can be written before executing anything: audio at project 1.0–4.0, source still 1.0–4.0 at 1×, caption at 1.25–3.5, unchanged six-second visual slate. A completed command would be rejected if it met the new project start but lost any of those constraints. Inspect the actual output 02 ## Use one operation for the audio and its existing relationship The [plan](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/brief-plan.json) contains one `timed.move` targeting `voice-source`, with `start: 1`. It is based on revision zero of [the captioned starting project](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/brief-input.timeline). It does not send a second independent caption move. The production reducer finds captions whose `audioSegmentId` matches the moved audio and shifts both caption boundaries by the same delta. That distinction matters for a human brief. “Keep the label aligned” describes a relationship already present in the project. Recreating it with unrelated timestamps would make it easier for a later edit to move only one side. It would also hide whether the existing linkage worked. The input and result both retain the same linked clip ID. ``` Audio: project 2.00–5.00 → 1.00–4.00 Source: source 1.00–4.00 → 1.00–4.00 Caption: project 2.25–4.50 → 1.25–3.50 Speed: 1× → 1× ``` 03 ## Compare the predicted change with the saved project The verifier first runs `project.diff` using that plan. The CLI returns no output artifact, and the input archive hash remains unchanged. It then runs `project.run` and compares the actual field-level changes with the preview. They agree. The written project reaches revision one and [its parsed metadata](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/brief-result.json) satisfies every expected time and source-range value above. The [recorded responses](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/commands.json) show that the audio start and linked caption start/end change. Source offset, duration and playback rate remain intact. The visual segment array is asserted equal to the input. Download [the edited portable project](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/brief-edited.timeline) to repeat the remaining browser review. A timing validator cannot decide whether the cue sounds well placed for a real story; this fixture deliberately isolates the structural decision. A useful next edit would begin with another concrete request, such as leaving a longer pause or changing the retained source interval. Those would require different acceptance values and possibly a different operation. They should not be smuggled into the current move merely because an Agent has access to the rest of the timeline. 04 ## Separate this result from an automatic editorial performance This test did not choose shots, interpret an interview, synthesize a voice, judge pacing or verify browser playback. It demonstrates the narrower step from an explicit brief to linked, inspectable timeline state. For real speech, the remaining work includes listening to the original and edited passage, checking sentence boundaries and ensuring captions do not suggest words that the speaker never said. The captioned result also exposes a render boundary. The same pinned CLI rejects it with `UNSUPPORTED_RENDER_FEATURE`, because this native renderer does not support visible captions. Removing a required label just to make an export pass would violate the brief. Use an editor render path that supports the composition and inspect the finished video, or agree on a different deliverable. A separate uncaptioned fixture is successfully rendered in the [archive-handoff case](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/). **Version boundary:** This September 7, 2026 review uses Timeline Studio commit [`68980d1`](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/scripts/timeline-command.mjs). Its CLI exposes inspection, diff, project writes, prepared media import and a limited native FFmpeg renderer. That renderer supports the documented Visuals, Voiceover and Music subset; visible captions, stickers, overlays, transitions and other unsupported composition are rejected. Capabilities here describe this snapshot, not every hosted build or Agent environment. Extract the linked kit and run `node reproduce.mjs` in its directory with Node, FFmpeg and ffprobe installed. The kit includes the pinned production CLI, command engine, render planner, fflate and synthetic input. It requires no account, model download or package installation. The loader changes import locations only; production function bodies remain unchanged. Reproduction writes the documented sibling fixtures and `results/` files inside the kit. [Download the complete case kit](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/editorial-workflows-case-kit.zip) · [Method and reproduction steps](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/README.md) · [Recorded results and limits](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/report.json) · [All eight CLI calls and responses](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/commands.json) · [Pinned source fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/source-manifest.json) CONTINUE THROUGH THE EVIDENCE ## Related field notes [**A Reviewable Browser Auto-Edit**See how candidate frames become an editable caption draft.](https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/)[**One Video-Editing Plan Across Agent Channels**Inspect one committed move, its retry and a stale new request.](https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/)[**Follow One Wikimedia Image Into a Saved Video Project**Compare the source fields retained by a main image and an overlay.](https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/) ## Questions this case can answer Was a real narration generated for this article? No. The input is synthetic audio, and the linked caption is explicitly a diagnostic label. The recorded result concerns timing and source preservation. Why does the plan contain only one move? The audio clip already owns the linked caption. The pinned timed.move reducer shifts both caption boundaries by the same delta. Did the command produce a complete captioned video? No. The portable project was written and checked, but the pinned native renderer rejects visible captions. Finishing this composition requires a render path that supports the label and a separate playback review. ## Give the Agent a brief. Keep the edit. [Open Timeline Studio](https://video-editor.ai-creator.top/)[Explore the Skill on GitHub](https://github.com/MartinDelophy/ai-video-editor/tree/main/skills/edit-timeline-studio) **AI Creator**[Resources](https://ai-creator.top/resources/)[About](https://ai-creator.top/about/)[Privacy](https://ai-creator.top/privacy/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/image-matting-vs-background-removal/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) HISTORICAL EXPORT REVIEW · FILE INSPECTION # The Cutout Was a JPEG: A Matting Export Failure Review A convincing blue-background selection was saved under a .png filename, but the retained file is an opaque JPEG. We inspected the original bytes, reproduced the transparency check and used a separate working cutout as a reference. Here is what failed, what the files prove and how to avoid delivering the same kind of unusable asset. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 8, 2026 · **HISTORICAL OUTPUT · AD-FREE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ## Why this export cannot serve as a transparent master Place the retained cutout on a white or black page and a blue rectangle remains around the subject. The export stored the preview background in its color pixels instead of preserving transparency. Our September 7, 2026 inspection identified both [matting-before.png](https://ai-creator.top/home/matting-before.png) and [matting-after.png](https://ai-creator.top/home/matting-after.png) as JPEG/JFIF files. Their first bytes are `FF D8 FF E0`; their baseline frame headers declare three image components and no alpha channel. We inspected the unchanged files without running matting inference or recovering the original export settings. Inspect the actual output ## What the original bytes establish Measured on the retained files; original bytes remain unchanged | Artifact | Actual encoding and dimensions | Transparency result | | --- | --- | --- | | [Matting source](https://ai-creator.top/home/matting-before.png) 21,654 bytes | JPEG/JFIF · 512 × 768 · 8-bit, three-component baseline | No alpha channel. The .png extension is misleading. | | [Matting result](https://ai-creator.top/home/matting-after.png) 26,602 bytes | JPEG/JFIF · 681 × 1010 · 8-bit, three-component baseline | No alpha channel. Blue is a baked-in background. | | [Background-removal reference](https://ai-creator.top/home/bg-after.png) 149,263 bytes | PNG · 637 × 1024 · indexed color, type 3 with tRNS | 212,250 fully transparent; 108,442 partially transparent; 331,596 opaque pixels. | The third file is a separate portrait from the [documented Background Remover example](https://ai-creator.top/resources/remove-image-background-locally/), included to check that our inspection recognizes a real transparent export. It is not a rerun of the matting portrait or a quality comparison between two models. Its alpha counts sum to 652,288 pixels, matching 637 × 1024. All PNG chunk checksums passed. The PNG reference uses a palette and a transparency table rather than four stored RGBA channels. As the [PNG specification explains](https://www.w3.org/TR/png-3/#11tRNS), indexed pixels can receive their alpha values from tRNS. A test that accepts only PNG color type 6 would wrongly reject this file. Our inspector follows the palette indices, applies their transparency entries and counts the decoded alpha values. ## Repeat the file check without running an AI model Download the two historical files, the transparent reference and the [inspection script](https://ai-creator.top/resources/evidence/2026-09-07/matting-export-review/inspect-image-export.py) into one directory. The script uses Python 3's standard library and reads files without modifying them. Its supported formats are deliberately bounded: the baseline JFIF headers in this record and non-interlaced 8-bit RGB, indexed or RGBA PNGs. ``` python3 inspect-image-export.py \ matting-before.png matting-after.png bg-after.png ``` Compare your output with the saved [inspection.json](https://ai-creator.top/resources/evidence/2026-09-07/matting-export-review/inspection.json). The two matting entries should report `detected_format: JPEG/JFIF`, `filename_matches_format: false` and `contains_transparent_pixels: false`. The reference should report `detected_format: PNG`, `tRNS_present: true` and the three alpha counts above. Full SHA-256 hashes identify the exact bytes; matching only a filename or thumbnail is insufficient. The JPEG finding comes from its signature, JFIF marker and baseline three-component frame header; the script does not decode JPEG pixels or estimate a quality score. The PNG result additionally checks chunk CRCs, decompresses image rows and counts actual transparency values. A macOS cross-check with `sips -g format -g pixelWidth -g pixelHeight -g hasAlpha` independently reported JPEG/no alpha for both matting files and PNG/alpha for the reference. The [method notes](https://ai-creator.top/resources/evidence/2026-09-07/matting-export-review/README.md) and [file manifest](https://ai-creator.top/resources/evidence/2026-09-07/matting-export-review/manifest.json) preserve the command, scope and hashes. ## What the blue preview still lets us inspect The preserved pair shows the retained subject and visible edge defects. It cannot expose the original prompt points or mask. Its unequal dimensions also prevent a pixel-aligned segmentation score or any claim that the larger output recovered detail. Renaming the JPEG or converting it to PNG preserves the blue pixels. Removing blue would be a new edit, not recovery of the missing alpha values. Return to the source and retain a mask or transparent master before flattening a preview. ## A current route to a reusable transparent cutout Open [Background Remover](https://ai-creator.top/removebackground/) with [its published sample source](https://ai-creator.top/home/bg-before.jpeg). Its documented transparent output provides a working alternative; this review has not tested the historical matting portrait through that workflow. 1. Run the remover and inspect the downloaded file for transparent pixels. If the small inspector rejects a PNG variant it does not support, check the alpha channel in an image editor instead; rejection does not prove opacity. 2. Place the export over white, dark gray and its intended destination. Check hair, glasses, accessories and shoulders at 100 percent and delivery size. Reject old-background halos or holes in solid parts; correct the mask manually if needed and recheck the export. 3. Keep the source and transparent master. Save any opaque preview separately after choosing its background. The reference's 16.62 percent partial-alpha pixels demonstrate soft transparency in that file, not a quality target. Judge whether the edges fit the intended background. Keep the edit reversible ## What would justify reopening the interactive tool The interactive matting route remains deferred. A fresh run must demonstrate initialization, image input, inference and a downloaded asset, recording model files, browser version, selected points or mask, dimensions and full hashes. For this export failure, the result must be a correctly identified PNG with real transparency and usable edges on several backgrounds. Keep the source, transparent master or mask, and separate preview. The retained historical files cannot establish that result. EXPORT REVIEW ## Questions the files can answer Is the historical matting output a transparent PNG? No. It is an opaque three-component JPEG with a misleading .png filename and baked-in blue pixels. Did this review run the interactive matting model again? No. The September 7 review repeated file-format and transparency checks only. The interactive workflow remains deferred. Can an indexed PNG contain partial transparency? Yes. The reference uses PNG color type 3 with tRNS and contains 108,442 partially transparent pixels. Which workflow can I use for a transparent cutout now? Use Background Remover with its documented sample, then inspect the downloaded asset over light and dark backgrounds. That separate result does not validate the deferred matting tool. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Remove a Background Locally**Compare a real source and transparent output.](https://ai-creator.top/resources/remove-image-background-locally/)[**Remove Unwanted Objects from Photos**Review a marked repair against nearby texture and lines.](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/)[**Browser AI Privacy: Source Review and Checks**Trace the reviewed file path and use the network inspection worksheet.](https://ai-creator.top/resources/browser-ai-privacy-explained/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Use the verified alternative [Review the Background Remover result and workflow →](https://ai-creator.top/resources/remove-image-background-locally/) HISTORICAL OUTPUT / INTERACTIVE MATTING ## A preserved failure record for a deferred workflow The original portrait and blue-background preview are preserved below. Both are opaque JPEGs under legacy .png filenames; the file inspection and transparent reference are documented in the article. ![Portrait before matting, photographed on a busy night street](https://ai-creator.top/home/matting-before.png) BEFORE 512 × 768 px ![Matted portrait on a blue review background, with hair and cat-ear boundaries visible](https://ai-creator.top/home/matting-after.png) AFTER 681 × 1010 px EVIDENCE RECORD FIELD TEST ID MATTE-HIST-2026-09-04-01 STATUS Historical output / workflow deferred from discovery WORKFLOW [Browse currently verified workflows](https://ai-creator.top/resources/) TEST INPUT [matting-before.png · 512 × 768 JPEG (legacy filename)](https://ai-creator.top/home/matting-before.png) RECORDED OUTPUT [matting-after.png · 681 × 1010 JPEG (legacy filename)](https://ai-creator.top/home/matting-after.png) ARTIFACT INTEGRITY Input SHA-256 08bc6a6dbd53… · output SHA-256 3b757ab1752f… RECOVERED RUNTIME Deferred implementation expected a MobileSAM encoder and quantized decoder; those artifacts are not shipped as a ready workflow. OBSERVED MEASUREMENT Both files are baseline three-component JPEG/JFIF, with no alpha channel. REVIEW METHOD Inspect the file signatures and frame headers, then review visible boundaries against the recorded blue field. SAMPLE LIMIT Historical pair; original generation settings and intermediate mask unavailable. File inspection was repeated September 7; matting inference was not. REPRODUCE THE CHECK 1. Download the original files and repeat the signature, frame-header and SHA-256 checks with the inspection script linked in this article. 2. Compare the visible hair and shoulder boundaries at matching display size; the original mask cannot be recovered from this flattened preview. 3. A new inference would require restoring and separately testing the deferred workflow; these downloads reproduce the file inspection only. 01 ### Visible boundary defects The face, glasses, cat ears and main hair shapes remain recognizable. Small dark marks survive to the right of the hair, with uneven hair and shoulder edges. The saved preview shows those defects, but the missing mask and export settings prevent attributing them to selection, resizing, compositing or JPEG encoding. **REVIEW BOUNDARY** This historical pair cannot reproduce the original inference or compare model quality. Its unequal dimensions prevent a pixel-aligned segmentation score, and the blue pixels cannot serve as reusable transparency. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) HISTORICAL PORT RECORD · SOURCE REVIEW # LivePortrait WebGPU Port: Evidence and Limits The earlier Timeline Studio port record describes how two unsupported 5D GridSample nodes were rewritten for browser WebGPU and compared against fixed-input outputs. This page preserves that numerical evidence. Our September 2026 source review also identifies the limits of the record: its timing is historical, its audiovisual result was not reproduced here, and current frame checks do not establish convincing speech or identity. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **SOURCE-VERIFIED FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![LivePortrait WebGPU Port: Evidence and Limits visual guide](https://ai-creator.top/resources/articles/liveportrait-webgpu.webp) **7.8976e-6**Max absolute error**316**Rewritten graph nodes**512²**Validated output ## Decompose the avatar pipeline first The browser workflow is not one model call. JoyVASA converts audio into motion, while LivePortrait performs appearance extraction, motion extraction, lip retargeting, stitching, feature warping and SPADE image generation. Keeping those stages separate creates useful validation boundaries: audio-driver error, keypoint error, warping error and final generator error can be measured independently rather than diagnosed from one incorrect-looking face. Evidence before claims ## Locate the real WebGPU blocker The opset-20 combined generator had 277 nodes, including 13 rank-5 convolutions and two rank-5 GridSample nodes. A Linux shared-library plugin from the source repository could not run in the browser, and ONNX Runtime Web's WebGPU execution provider could not directly execute the 5D samplers. Removing the depth dimension, treating it as an arbitrary batch or selecting the nearest slice would all change the function computed by the model. ## Rewrite trilinear sampling with supported operations A target depth coordinate lies between slices d0 and d1. The rewrite performs supported 4D bilinear GridSample on both planes, then interpolates the two results using the fractional depth coordinate alpha. Depth slices are arranged as batches so WebGPU can process them in parallel and then restored to the original spatial layout. A verified shared-XY structure in the sparse-motion grid removes redundant sampling. The rewritten graph grew from 277 to 316 nodes, but every operation could run in the browser. ## Read the recorded numerical comparison The [earlier port record](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md) reports a comparison of the original 512 × 512 generator and rewritten graph on fixed inputs: maximum absolute error 7.8976e-6, mean absolute error 1.3853e-7 and 99.9th-percentile error 1.7881e-6. It also records maximum ONNX-versus-PyTorch errors of 7.75e-6 for JoyVASA's HuBERT export and 6.44e-6 for its diffusion denoiser. These are preserved development measurements, not values rerun during the September 2026 review. They support the specific recorded numerical comparison; they do not establish quality across different portraits or speech. ## Solve the browser runtime around the graph The WebGPU workers configure matching ONNX Runtime Asyncify JavaScript and WASM files and create execution-provider sessions serially. The render worker retains the portrait appearance feature for reuse. Summing the [JoyVASA](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/joyVasa.js) and [LivePortrait](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/livePortrait.js) configured artifacts gives 738,879,580 bytes for preview, or 949,593,258 bytes for both resolution tiers: approximately 739 MB and 950 MB respectively, equivalent to 705 MiB and 906 MiB. These are file-size calculations, excluding the application, runtime and inference memory; they are not measured downloads. The model files are loaded from a pinned hosted revision. ## Treat the timing as a historical cost warning The configured mixed-FP16 tiers produce 256-pixel preview or 512-pixel quality images. The earlier [development note](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md) reports roughly 25–60 seconds per 512 × 512 neural frame on its test browser and GPU. It does not name that browser/GPU configuration or attach a complete timing log. We did not rerun that benchmark in this review and cannot transfer its speed to the current device or the 256-pixel tier. The current implementation renders sparse neural keyframes and copies the nearest available image into each encoded timestamp. An eight-fps WebM therefore does not mean eight neural images per second or motion interpolation. Downloads, session initialization, JoyVASA motion generation and encoding add costs outside the historical per-frame rendering figure. ## Separate the historical media report from a current demonstration The development note reports that model-part loading, WebGPU setup, 50-step JoyVASA motion, LivePortrait rendering, WebM encoding, browser playback and visual-track replacement completed. It describes a playable 3.56-second WebM, changing mouth states, head and eye movement, and no browser console errors after completion. The original voiceover, output video and full run log were not supplied with that note and were not revalidated in this assessment. The report establishes what was recorded during development; it is not a new synchronized audiovisual example a reader can inspect here. A fresh practical acceptance run should preserve the exact portrait, speech, intermediate video and final export with sound. The current [avatar encoder](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/editorRuntime.js) adds only a video track to the intermediate WebM. Audio must be verified after the timeline export rather than inferred from a successful video encode. ## Keep tensor contracts available for a future rerun A useful graph-port record should identify tensor names, rank, axis order, numeric type and output ownership. Batch, channel, depth, height and width have distinct meanings in the feature volume; reshapes and transposes must preserve them. The preserved [port note](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md) supplies baseline graph hashes and fixed-input error statistics, while the [smoke script](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/scripts/liveportrait-smoke.mjs) documents a small renderer path. That smoke script runs WASM and requests fixed lip ratios; it is not a JoyVASA audio-driven browser benchmark. Dynamic-shape coverage, mixed-precision regression, current WebGPU speed and audiovisual alignment would need separate tests and retained artifacts. We did not execute those tests in this review and do not claim that the recorded fixed-input comparison covers them. Evidence before claims ## The current temporal checks leave a perceptual gap The [implemented guards](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/livePortraitQuality.ts) inspect sampled finite values, extreme magnitude, near-flat variance and distance from a reference frame. The [worker](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/liveportrait.worker.js) retries a rejected keyframe once and can repeat the previous valid frame if both attempts fail. This can keep an obviously damaged image out of the encoded sequence, but a held frame is still a visible loss of motion. No phoneme alignment, speech-to-mouth score or face-identity metric is implemented by those numerical guards. The current nearest-keyframe reuse also provides no generated intermediate motion whose identity preservation has been measured. To judge a performance, retain a final export with the actual voiceover and review lip closure, teeth, eyes, jaw, start/end timing and any fallback holds. The [talking-portrait assessment](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) proposes a one-second preview and a stopping budget before a more expensive run; that perceptual trial has not yet been performed for this review. ENGINEERING RECORD / NUMERICAL VALIDATION ## The graph rewrite is measured, not described by resemblance The port record preserves the pinned graph hashes and numerical comparison used to accept the WebGPU rewrite. Those measurements are stronger evidence than a single favorable portrait frame, while still leaving speed and generalization as explicit limits. REVIEWED SNAPSHOT Timeline Studio commit 68980d1 · LivePortrait baseline e6c5d24 WHAT THE SOURCE SUPPORTS The recorded opset-20 generator grows from 277 to 316 nodes after two rank-5 GridSample operations are rewritten as supported 4D sampling plus depth interpolation. On fixed 512 × 512 inputs, the recorded maximum absolute error is 7.8976e-6 and mean absolute error is 1.3853e-7. HOW TO REPEAT THE CHECK Use the pinned original and rewritten graph hashes, run both with the same fixed tensors, compare full-frame absolute-error statistics, then run the smoke script and the browser worker. Accept the media path only after encoding, playback and timeline insertion also complete. CLAIM BOUNDARY The earlier note records a fixed-input numerical comparison, not identity preservation across portraits. Its reported 25–60 seconds per 512 × 512 neural frame is historical; no current speed or synchronized audiovisual benchmark was run for this review. PRIMARY SOURCES - [Pinned port and error record](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md) - [Reproducible smoke runner](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/scripts/liveportrait-smoke.mjs) - [Browser WebGPU worker](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/liveportrait.worker.js) - [ONNX Runtime Web WebGPU documentation](https://onnxruntime.ai/docs/tutorials/web/ep-webgpu.html) SEPTEMBER 7, 2026 · SOURCE REVIEW AND CORRECTIONS ## The source files behind this revision We checked the implementation at commit `68980d1` to narrow claims that the earlier article could not support. This revision records source findings and model-size arithmetic. The related portrait assessment now adds a reproducible non-neural encoder experiment with three test cards. Neither page includes new neural inference, a dynamic portrait-quality test or a current neural-speed benchmark. Playback and sound The preserved [media-function excerpt](https://ai-creator.top/resources/evidence/2026-09-07/avatar/avatar-media-functions.js) shows nearest-keyframe reuse and a video-only intermediate WebM. The [new test-card experiment](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) executes that encoder and preserves an eight-frame, one-second WebM with three source images and no audio track. This verifies media packaging, not portrait motion or final audio mixing. What a frame guard checks The [numerical guard](https://ai-creator.top/resources/evidence/2026-09-07/avatar/frame-quality.ts) and [render-worker excerpt](https://ai-creator.top/resources/evidence/2026-09-07/avatar/avatar-render-excerpts.js) document sampled values, frame distance, retries and fallback holds. They do not score identity or speech-to-mouth alignment. Historical versus calculated evidence The [earlier port note](https://ai-creator.top/resources/evidence/2026-09-07/avatar/historical-port-record.md) is the source of the reported 3.56-second clip and 25–60 seconds per 512-pixel frame. The [JoyVASA](https://ai-creator.top/resources/evidence/2026-09-07/avatar/joyvasa-config.js) and [LivePortrait](https://ai-creator.top/resources/evidence/2026-09-07/avatar/liveportrait-config.js) configurations supply the declared bytes used in the model budget. The [structured source review](https://ai-creator.top/resources/evidence/2026-09-07/avatar/source-review.json) records these boundaries and the proposed one-second trial. The [SHA-256 manifest](https://ai-creator.top/resources/evidence/2026-09-07/avatar/manifest.json) identifies every preserved source file and excerpt; the [method and file guide](https://ai-creator.top/resources/evidence/2026-09-07/avatar/README.md) explains their scope. A current final video with sound, perceptual review and complete timing remains future evidence. REFERENCE ## Frequently asked questions Why not use a custom native plugin in the browser? Browser runtimes cannot load the original Linux shared library, so the computation must use portable supported operators or a browser-specific implementation. Is the rewritten GridSample exact? The earlier fixed-input comparison records errors around 1e-6 to 1e-7. Those measurements were not rerun in this review and do not establish equivalence for every input. Is the 512-pixel avatar path real time? No current speed benchmark is established here. The older port note reports 25–60 seconds per 512-pixel neural frame; current eight-fps encoding reuses sparse keyframes and is not real-time neural generation. Why pin the model revision? A fixed revision keeps cached graph files, tensor contracts and runtime assumptions synchronized across sessions. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Browser Talking Portraits: Encoder Test and Model Costs**Inspect the one-second encoder result, audio window and model budget.](https://ai-creator.top/resources/create-talking-digital-human-in-browser/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/)[**NanoVSR 4× Restoration in the Browser**Inspect model shapes, hashes and the WebGPU runtime path.](https://ai-creator.top/resources/nanovsr-4x-video-restoration-in-browser/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Assess the time and quality before a new run [Read the talking-portrait cost assessment →](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) SYSTEM DESIGN · LOCAL-FIRST # Building a Local-First AI Video Editor in the Browser Timeline Studio is a React-based, local-first AI video editor. Voice synthesis, automatic captions, subject analysis, talking portraits and video export run as close to the user's device as the browser allows. The difficult part is not loading one neural network. It is coordinating inference, media state, rendering, caching and failure recovery so the result behaves like an editor rather than a model demo. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 4, 2026 · **SOURCE-VERIFIED FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Building a Local-First AI Video Editor in the Browser visual guide](https://ai-creator.top/resources/articles/timeline-studio-architecture.webp) ## Local-first is a systems constraint Keeping source media in the browser reduces unnecessary uploads and waiting, but moves cost onto the client. Large model downloads, browser storage, memory pressure, execution-provider differences and codec support all become product concerns. Timeline Studio therefore treats local-first as a default processing boundary: media and core computation remain on-device where practical, models load from immutable revisions on demand, and remote dependencies remain visible rather than being hidden behind a local label. Trace the data boundary ## Use specialized runtimes and load them late No single model path handles every media task well. Piper and VITS ONNX cover Chinese and multilingual speech, Kokoro 82M handles English voice generation, Whisper small q8 handles captions, YOLOS tiny and MODNet handle visual analysis, and JoyVASA plus LivePortrait drive talking portraits. Each path initializes only when the relevant feature is used. Warm sessions are reused inside the current visit so the editor avoids both a huge startup download and repeated graph initialization. ## Workers define the responsiveness boundary Inference, audio decoding, full-video analysis and encoding can each block the browser's main thread. Timeline Studio isolates ASR, vision, avatar generation, enhancement and source separation in dedicated Workers. The UI receives structured progress while remaining interactive. This boundary also makes cancellation and recovery explicit: canceling a full-clip enhancement leaves the original clip untouched, while a suspect neural frame can be retried without discarding the whole render. ## Make the timeline the destination for AI output An editor cannot stop at a download button. Generated speech must be inserted at the playhead, captions must remain linked to the matching audio, overlapping clips need additional lanes, and every change must be visible to preview and export. Timeline Studio represents AI output as assets plus clips in one timeline model. Voice duration comes from decoded audio, linked captions follow the same timing by default, and visual state is resolved at the requested project time. ## Video intelligence must be temporal Detecting a subject on the first video frame and applying that geometry to the entire clip fails as soon as the subject moves. The editor pre-analyzes video at adaptive intervals and stores timestamped YOLOS boxes and MODNet mattes. Preview, smart crop, caption avoidance, background removal and export resolve the record for the current source time. Longer clips use a wider sampling interval to keep inference time and memory bounded. ## Version caches and design resilient export The service worker uses cache-first behavior for large model files and network-first behavior for the app shell. Model URLs are revision-pinned so a cached graph cannot silently drift from runtime assumptions. Export follows a similar hierarchy: use a native browser format where possible, load FFmpeg WASM only when MP4 conversion is needed, and preserve a successfully rendered WebM if the final transcode fails. Browser AI becomes dependable when failure states are designed as carefully as the successful path. ## Budget memory as a shared system resource Browser memory is not an unlimited heap assigned to one model. Decoded video frames, audio buffers, ONNX weights, WebGPU tensors, canvas surfaces and encoder queues can exist at the same time. A feature that succeeds in isolation can therefore fail inside a real project. Timeline Studio reduces this collision by releasing temporary frame canvases, limiting analysis resolution, reusing sessions, avoiding duplicate media copies and keeping long-running jobs cancellable. Feature design also follows a memory hierarchy: a fast preview may use a smaller representation, while final export requests higher quality only when the preceding stage has finished. The interface reports model preparation separately from inference so users can distinguish a download from a stalled edit. Memory pressure is treated as a recoverable product state, not merely a console error: the original clip remains available, partially created output is discarded safely, and a smaller or more compatible path can be offered without corrupting the project. Keep the source attached ## Design observability for editors, not only developers A local pipeline still needs evidence when something goes wrong. Each expensive operation exposes named stages such as downloading, initializing, analyzing, rendering and encoding, with elapsed time or item counts where those numbers are meaningful. Worker messages use structured payloads instead of arbitrary log strings, allowing the interface to show progress and the error boundary to retain actionable context. The same principle improves quality review. Timestamped detections, linked captions and export fallbacks make intermediate decisions inspectable instead of hiding them inside a model session. For developers, pinned model revisions and explicit execution providers make a bug reproducible. For editors, preserving the source and showing what changed makes experimentation reversible. This shared observability layer is what turns a collection of local AI features into a coherent application: users can understand the current state, cancel safely, retry deliberately and compare the generated result with the media that produced it. SOURCE REVIEW / SYSTEM BOUNDARY ## Local-first is checked component by component A system architecture article becomes useful when its boundaries can be followed into code. This record links the orchestration, worker, model-source and render-plan layers instead of treating “local-first” as a blanket privacy label. REVIEWED SNAPSHOT Timeline Studio commit 68980d1 · reviewed September 4, 2026 WHAT THE SOURCE SUPPORTS The application delegates heavyweight features to dedicated workers, selects revisioned model sources, keeps editable project state separate from media execution and builds explicit render plans. Remote catalogs and optional generation providers remain separate paths rather than being described as local inference. HOW TO REPEAT THE CHECK Open DevTools on a clean profile, preserve the Network log, load one local workflow and record page, model and worker requests. Then activate a remote catalog or generation provider separately. Compare destinations and request bodies, inspect browser storage, and clear site data before repeating the run. CLAIM BOUNDARY Local-first is not offline-by-default and is not a promise that no request occurs. Application assets, fonts and model weights must download; optional providers can cross a remote boundary; browser extensions and analytics require separate inspection. PRIMARY SOURCES - [Application orchestration](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/App.jsx) - [Revisioned model-source selection](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/modelSources.js) - [Render-plan boundary](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/projectRenderPlan.js) - [Repeatable privacy inspection](https://ai-creator.top/resources/browser-ai-privacy-explained/) REFERENCE ## Frequently asked questions Does local-first mean the editor is fully offline? Not initially. Application and model assets must be downloaded, but repeat sessions can reuse cached resources and source media does not need to be uploaded for the core workflow. Why use several models instead of one multimodal model? Specialized models offer better control over quality, memory, execution backends and lazy loading for each task. Why must preview and export share the timeline model? Separate state paths drift over time and create results that differ from what the user saw while editing. Where can I try the editor? Timeline Studio is available at video-editor.ai-creator.top and its source is linked from the project page. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**FFmpeg Media Pipelines for Web Playback**Separate demuxing, decoding, compatibility and export.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/)[**LivePortrait WebGPU and 5D GridSample**Read the graph rewrite and numerical validation record.](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/)[**A Generation Plugin Should Return Media**Keep provider adapters outside timeline ownership.](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Open Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/mobile-video-timeline-under-two-thumbs/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) MOBILE ENGINEERING NOTE · TIMELINE 0.5 # When a Video Timeline Has to Fit Under Two Thumbs Shrinking a desktop video editor until it fits a phone does not create a mobile editor. The timeline may be visible, yet the important actions remain hidden behind hover states, precise mouse targets and panels that consume the whole screen. Timeline Studio's current development work takes a different approach: keep the multi-track project intact, then redesign selection, navigation and clip operations around fingers, limited width and interrupted attention. The result is not a simplified social-video toy. It is the same editable timeline learning how to behave under two thumbs. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![When a Video Timeline Has to Fit Under Two Thumbs visual guide](https://ai-creator.top/resources/articles/mobile-timeline-under-two-thumbs.webp) ## The desktop interaction model was the first thing to remove A desktop timeline assumes a pointer that can hover, right-click and hit a handle only a few pixels wide. It can keep an inspector, media browser and preview visible beside the tracks because horizontal space is plentiful. None of those assumptions survives a phone. Timeline Studio now treats a mobile clip press as a direct request about that clip, not as a reason to switch the entire application into the clip's tool category. The selected segment remains the subject, while a compact action sheet exposes the next likely decisions. This sounds like a small routing change, but it separates project navigation from object editing—the distinction that keeps a narrow interface understandable. Make the edit intentional ## One action sheet cannot pretend every clip is the same A visual segment can be edited, split, copied or deleted, and an eligible video can expose source-audio extraction. A voiceover or music clip needs audio properties, splitting, caption generation and vocal separation. Linked source audio deliberately omits separation because its relationship to the visual track is different. A sticker needs properties, copy and delete rather than audio commands. The new mobile action resolver encodes those differences instead of filling a generic menu with disabled items. It also resolves the pressed track ahead of stale selection state, so touching music cannot accidentally open properties for the visual clip that happened to be selected earlier. ## The inspector is a temporary task, not a new home On a phone, opening properties necessarily covers part of the editor. Timeline Studio records whether the sheet came from an audio clip or sticker clip and gives that temporary session a specific title. Direct clip inspectors suppress the broader Tools and Properties tabs because those tabs imply that the user has changed workspaces. Closing the sheet returns to the timeline without rewriting the persistent tool rail. That detail matters during repeated edits: select a voice segment, adjust speed, close, select music, adjust volume, close. The creator should feel as though they are touching objects in one project, not navigating several miniature applications. ## Pinch zoom is really a time-coordinate problem A two-finger gesture changes the rendered width of the timeline, but the important question is which moment stays under the user's attention. The implementation calculates the finger-distance scale in track pixels, clamps it between the full-project fit and the supported maximum zoom, converts the resulting visible duration back into the canonical zoom model and adjusts scroll position so the same time ratio remains beneath the fixed central playhead. Without that anchor correction, a pinch appears to work while the intended cut slides away. Releasing the gesture also has to preserve the exact width reached during the gesture; a final state conversion must not add a small, disorienting nudge. ## A centered playhead changes how seeking feels Desktop users often drag the playhead itself or click anywhere on the ruler. On mobile, a fixed central playhead lets the timeline move underneath a stable reference. That reduces the need to cover the target with a finger and gives pinch zoom a natural anchor. It also means ordinary clip dragging and timeline navigation share the same touch surface, so gesture arbitration becomes critical. The current work pauses playback as soon as a clip is pressed. If a second touch turns that press into a pinch, the pending clip drag is cancelled and its tentative position rolls back. A zoom gesture should never leave an audio segment moved by accident. ## Track locks are protection against narrow-screen mistakes Visibility and locking solve different problems. Hiding a track changes what the project presents; locking says the material is approved and should remain visible but immovable. The mobile timeline now respects locks before clip moves, transitions and other structural edits, and reports why an attempted operation was refused. This is especially valuable on a phone, where the finger obscures the target and adjacent lanes sit close together. A creator can lock the main visual sequence, continue positioning captions and music, then lock those tracks in turn. The goal is not to prevent editing but to make the allowed scope explicit before a gesture begins. ## Stickers need lanes, identity and two-edge resizing Timed stickers are not merely decorations painted on the preview. They are clips with a start, duration, instance identity and preferred subtrack. The new lane packing keeps a sticker in its chosen layer when possible, including after a cross-lane drag, instead of repacking identical assets into an unexpected row. Mobile selection pauses playback immediately, and either edge can be resized while the opposite edge remains fixed. Copying must create a new instance rather than confusing two uses of the same sticker asset. These invariants let overlapping graphics remain editable and keep preview and offline export in the same layer order. ## Audio speed now carries source time with it Changing a clip from normal speed to two-times playback is not just a player setting. Its project duration becomes half of the represented source duration, fades must remain within the shorter bounds, captions linked to the clip need a new end time and every seek must multiply clip-local project time by the playback rate before adding sourceStart. Voice, music and linked source-audio pieces now carry those values explicitly. Repeated speed changes preserve the selected source span rather than trimming a little more each time. The same mapping is used when the preview crosses a segment, when the user seeks and when the offline mixer schedules decoded samples. ## Preserving pitch makes speed useful for speech A browser media element can request preservesPitch during preview, preventing a faster voice from automatically becoming higher and a slower voice from becoming lower. Export needs its own solution because an OfflineAudioContext buffer source normally changes pitch with playback rate. The current implementation uses a windowed, overlap-add time stretch. It divides source audio into grains, searches around each expected position for a correlated overlap, applies a sine-squared window and combines the grains into the target duration. This is intentionally bounded between 0.25× and 4×. It keeps narration more intelligible than naïve resampling, although extreme changes can still create rhythm or texture artifacts and deserve a real listen. ## Waveforms and compact labels carry trust On a desktop, a long label can sit inside an audio clip without obscuring its waveform. On a phone, the same text competes with handles, selection borders and the playhead. The timeline now formats narrow durations compactly and supplies a stable waveform fallback while decoded peaks are not yet ready. Actual peaks are preserved when available. This is not cosmetic work: a waveform tells the editor where speech begins, where silence lives and whether a split appears plausible. If the visual representation jumps or vanishes during a mobile operation, the user loses the evidence needed to make a precise audio decision. ## The tests describe a gesture contract The downloadable September 7 case kit below makes the reviewable part of this contract executable. Three mobile check groups run production object-routing, pinch width and anchor calculations, and the minimum zoom boundary from a fixed source snapshot. The shared kit also checks an already trimmed audio split and portable archive integrity. Physical expectations still require their own device run: a pinch must not move a clip, a resize must hold one edge, a locked track must refuse mutation and a speed change must preserve the same source range. The included phone checklist is marked not\_run rather than presenting those gestures as verified by a Node test. ## Mobile editing still has an honest boundary This work makes the existing multi-track editor operable on a narrow touch screen; it does not make a phone equivalent to a calibrated desktop workstation. Fine color decisions, long-form arrangement and detailed audio cleanup still benefit from a larger display, headphones and precise input. Browser storage and memory limits are also more visible on mobile devices. Timeline Studio's session autosave cannot reconstruct every local File or Blob in a fresh tab, so a portable .timeline archive remains the reliable handoff between devices. A good mobile editor should let someone capture, assemble and repair a real project on the move while preserving the option to continue elsewhere—not pretend device constraints have disappeared. EXECUTABLE CASE / SEPTEMBER 7, 2026 ## Put numbers behind the centered playhead A usable pinch should preserve a particular moment, and an audio press should preserve a particular editing subject. The new downloadable case kit executes those two decisions from a fixed source snapshot and provides a media-filled project for repeating the remaining interaction checks on a phone. WHAT RAN Three mobile check groups executed the production action resolver and zoom functions from commit 68980d1 on Node 22.14.0, macOS arm64: object routing, pinch width/anchor preservation, and the minimum zoom boundary. The shared kit passed ten groups including the companion audio split and archive checks. STALE SELECTION CASE With a visual clip still selected, an explicit music press resolves to music. An audio-clip inspector origin resolves to the audio context even when the persistent tool is Effects. The mobile press does not activate the tool rail. Linked source audio omits separation, and a sticker exposes its own properties, copy and delete actions. A MEASURABLE PINCH Start with a 20-second project, a 400 px viewport and an 800 px track. The 5.0-second moment sits at the 200 px center. Increase finger distance from 100 to 150 px: the function returns a 1200 px track and a 100 px scroll correction. The same moment remains centered because 0.25 × 1200 − 100 = 200. RELEASE AND MINIMUM BOUNDARIES Converting the returned canonical zoom back into track width preserves 1200 px within 0.00001 px for this input. Attempting to pinch below the configured minimum keeps the track at 800 px. These are coordinate results, not a measurement of phone frame rate or gesture latency. ## Use an existing edit to expose accidental movement Open [the supplied six-second project](https://ai-creator.top/resources/evidence/2026-09-07/engineering/after-split.timeline) on a phone. It contains two adjacent audio clips, a locked visual slate and the complete synthetic tone source. The right audio clip begins at project 3.5 seconds with sourceStart 2.5. Those unequal values make an unintended move or source reset visible. Press the right audio clip, confirm the audio actions, open properties and close the inspector. Pinch around the cut, then compare the clip's start and sourceStart with [the published metadata](https://ai-creator.top/resources/evidence/2026-09-07/engineering/after-split.json). Try a drag followed by a second touch, and separately try moving the locked visual lane. Record the device, browser and orientation alongside each result. Keep the edit reversible ## Keep the physical-touch result separate from the math The Node run proves the listed function outputs and archive integrity for explicit inputs. It does not exercise touch-event delivery, pending-drag rollback, browser decoding, mobile memory limits or export quality. The [phone checklist](https://ai-creator.top/resources/evidence/2026-09-07/engineering/mobile-manual-checklist.csv) is deliberately marked “not\_run” so it cannot be mistaken for a passing device test. The included `verify.mjs` asserts the production results, checks source fingerprints and recreates the projects with no installation or network access. Numeric editor constants come from the same pinned source; the loader excludes its unrelated React icon imports. The README explains this harness boundary and gives the exact reproduction steps. REPRODUCE THIS CASE - [Complete case kit: projects, source, media and executable checks (.zip)](https://ai-creator.top/resources/evidence/2026-09-07/engineering/engineering-case-kit.zip) - [Setup, assumptions and step-by-step reproduction](https://ai-creator.top/resources/evidence/2026-09-07/engineering/README.md) - [Actual verification report: 10 check groups passed](https://ai-creator.top/resources/evidence/2026-09-07/engineering/verification-report.json) - [Pinned source URLs and SHA-256 fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/engineering/source-manifest.json) EXACT IMPLEMENTATION - [Object actions and inspector routing](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/mobileClipActions.js) - [Pinch width and fixed-playhead anchor functions](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/timelineScale.js) - [Timeline component and gesture integration](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/components/Timeline.jsx) - [Companion audio case and listening controls](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/#reproducible-case) REFERENCE ## Frequently asked questions Is the mobile timeline a separate simplified project format? No. It operates on the same visual, overlay, caption, sticker, voice, source-audio and music tracks as the wider editor. How does pinch zoom avoid losing the current cut? The editor changes timeline width and adjusts horizontal scroll so the same timeline-time ratio stays beneath the fixed centered playhead. What happens if a second finger touches during a clip drag? The pending drag is cancelled and rolled back so the gesture can become a pinch without moving the clip. Can audio speed change without changing voice pitch? Preview requests browser pitch preservation, while offline export uses a windowed overlap-add time-stretch buffer. Extreme rates can still introduce artifacts. Why lock a track instead of hiding it? Locking keeps approved material visible and audible while preventing accidental structural edits. Hiding changes presentation rather than edit permission. Can I start on mobile and finish on desktop? Yes, but save a portable .timeline archive. A new browser tab or device cannot reliably reconstruct every local media Blob from session autosave alone. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**A Reviewable Browser Auto-Edit**See how candidate frames become an editable caption draft.](https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/)[**Fix Audio Source Offsets After a Split**Keep source time correct through non-destructive edits.](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Try Timeline Studio on mobile →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/nanovsr-4x-video-restoration-in-browser/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) TEMPORAL SUPER RESOLUTION · WEBGPU # Four Times the Frame: How NanoVSR Restores Video in the Browser A 4× badge is easy to put on an upscaler. The difficult part is deciding what four times actually means when the source is a trimmed video, when five neighboring frames contain different evidence, when the neural network accepts only 320×180 input, and when an already-large source should not be reduced merely to satisfy a model. Timeline Studio's new NanoVSR path treats those questions as engineering constraints. It runs separate one-frame and five-frame FP16 ONNX models through WebGPU, restores low-resolution images or video locally, protects source resolution when the model's effective output would be smaller, and recomposes video at 12 fps with the available source audio. The result is a new editable asset, not a claim that invented texture is original detail. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **SOURCE-VERIFIED FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Four Times the Frame: How NanoVSR Restores Video in the Browser visual guide](https://ai-creator.top/resources/articles/nanovsr-browser-video-4x.webp) LOCAL BROWSER RUN · SEPTEMBER 7, 2026 ## A three-second pan, its actual export and the wait behind it We ran a controlled coffee-photo pan through Timeline Studio's existing browser restoration library and WebGPU worker. The 320 × 180 input produced a playable 1280 × 720 H.264 file with an AAC audio track. The run took 50.0 seconds with model files already prepared locally. That establishes a completed short-sample pipeline; the visual comparison below lets you decide whether the change is useful. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/comparison.mp4) Left: decoded input enlarged with Lanczos. Right: the actual NanoVSR export. Both halves use the same display dimensions and 12-fps comparison clock. The sound is a synthetic 440 Hz tone. This comparison is a separately encoded viewing aid; untouched files are linked below. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/coffee-pan-input.mp4) [Original input](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/coffee-pan-input.mp4) · 320 × 180 · square pixels · 24 fps · 72 frames · 3 seconds. [video sample](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/cold-output.mp4) [Untouched browser output](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/cold-output.mp4) · 1280 × 720 · 12 fps · 36 frames · 3 seconds · H.264 + AAC. ### What to inspect in the comparison Follow the white cup rim, the small bubbles and lines in the foam, and the spoon as the image moves. Judge texture at the same size; the number of output pixels alone cannot establish recovered detail. Then play the original 24-fps file and the 12-fps result separately. Halving the number of sampled moments changes motion cadence, even when the duration and sound are retained. The input is an artificial camera pan made from one photograph. It has no independently moving objects, changing expression, occlusion or genuine camera shake. In the one-second comparison frame, the model makes the cup rim and spoon edges more pronounced; the finer surface texture also changes. Those changes are visible, but the sample cannot tell us which new detail corresponds to the original photographed scene. This is a controlled texture-and-motion example, not evidence for faces, sport, natural handheld footage or every five-frame boundary. There is no high-resolution captured-video reference, so we do not report PSNR, SSIM or a percentage quality improvement. ### Time spent before and during encoding One local run, measured at the calling browser page | Interval | Recorded time | Includes | | --- | --- | --- | | Start to encoder preparation | 39.7 s | Read/seek input, worker and model initialization, restoration and PNG creation. | | Encoder preparation | 0.6 s | Load the browser encoder and stage input frames/audio. | | Encoding to completed result | 9.7 s | Browser FFmpeg encoding and result creation. | | Complete call | 50.0 s | Ends when the result Blob is returned; excludes saving the artifact to disk. | The environment was the Codex in-app Chromium browser on macOS, reporting an Apple Metal-3 WebGPU adapter and Chrome 152 in its user agent. The browser did not expose a precise GPU model. We started a fresh worker for this recorded call, but this browser and GPU had already run a preparation trial. The two pinned model files were read from existing local disk files, hash-checked and placed in the worker's normal named Cache Storage. Internet model-transfer time is excluded, and driver/shader caches were not reset. These conditions are part of the timing result. This sample took about 16.7 times its playback duration to process. That ratio describes this call only. It is not a throughput forecast for longer media, a comparison between devices, or a claim that every first visit takes the same time. Begin with a representative short clip and decide whether the visual result justifies another run. ### The last frame exposed a model-selection detail Thirty-six output frames create seven complete five-frame groups and one final singleton. The [reviewed worker](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/nanovsr.worker.js) selects its T1 image model when it receives one bitmap and one requested output; it selects T5 for other groups. The run log therefore shows a second cached-model/compile stage at frame 36. A tail of two to four frames is padded for T5, while this one-frame tail takes T1. The earlier description that every short tail always repeats frames into T5 was too broad. The [calling library](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/nanovsr.js) was used unchanged at its default 12 fps. We did not change the model-selection behavior for this demonstration. Keep the last frame and group transitions in your playback review rather than treating the entire result as one uniform five-frame inference. ### Repeat the sample and check the actual media 1. Download the input and original browser output above. [Probe records](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/probe-records.json) contain codec, frame-rate, dimensions, sample-aspect ratio, duration and frame counts. Both files decoded completely with FFmpeg without an error. 2. Read the [unaltered browser progress record](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/cold-run.json) and [derived measurements](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/summary.json). The progress timestamps establish the reported intervals; a percentage label is not used as a speed measurement. 3. Use the [local reproduction harness](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/browser-harness/README.md) with the specified Timeline Studio source and existing dependencies/models. It invokes the same library outside the editor's interface. Preserve your own environment, input, output and logs when comparing. 4. The [fixture recipe](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/reproduce-fixture.py) creates the pan from the [published source photograph](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png). It explicitly writes square pixels. The model hashes and source fingerprints are recorded in the [artifact manifest](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/manifest.json). This test exercised the local production restoration library, WebGPU worker and browser encoder. It did not click through the hosted editor, apply the asset to a timeline, verify cancellation or test mobile hardware. The comparison video was composed afterward with native FFmpeg and is labelled separately from the untouched browser export. Coffee photograph by Rachel Michetti, courtesy of Pikolo Espresso Bar; CC0 as documented by [scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee). Pan, tone, restoration run and comparison prepared for this article. NanoVSR models are MIT-licensed; see the [model notice](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/MODEL-LICENSE) and [method and limitations](https://ai-creator.top/resources/evidence/2026-09-07/nanovsr/README.md). ## Super resolution is reconstruction, not a larger canvas Ordinary image scaling can create four times as many pixels with a deterministic filter. It cannot decide whether a soft diagonal should become a clean rail, whether block noise is texture, or whether two blurred edges belonged to one thin line. NanoVSR is trained to reconstruct a higher-resolution frame from low-resolution evidence. That makes it useful for old web video, compressed screen captures and small source clips, but it also changes the promise. The model can generate plausible high-frequency structure; it cannot recover information that was never recorded. Timeline Studio therefore calls the operation restoration, shows a before-and-after divider and keeps the original media available. A sharper result is an interpretation of the source, not forensic proof of what the scene originally contained. Test the actual run ## Two models serve two kinds of evidence The Worker selects between two pinned FP16 ONNX graphs. The image path uses NanoVSR 644K T1 and accepts one frame. Video groups normally use the T5 graph with five-frame input; a final singleton selects T1, as documented in the recorded sample. Both run through ONNX Runtime Web with the WebGPU execution provider and full graph optimization. The distinction matters: a still image has only spatial neighbors, while video can use adjacent moments to reinforce an edge or texture that is weak in one frame. The implementation does not pass a single frame through the image model repeatedly and label the sequence video restoration. It gives the temporal model five consecutive bitmaps so motion and repeated evidence are part of the inference input. ## The model's working canvas is always 320 by 180 NanoVSR does not receive the source at arbitrary dimensions. Each bitmap is fitted inside a 320×180 canvas using contain geometry. Width and height are rounded to even values, the unused area is filled with black and the resulting pixels are converted into planar float RGB values between zero and one. Aspect ratio is preserved, so portrait or non-16:9 media receives letterbox space rather than being stretched. The tensor shape is 1×T×3×180×320, where T is one for images and singleton video tails, or five for other video groups. A fixed model canvas makes memory and model shapes predictable, but it also defines the ceiling of neural evidence: the network reasons from at most 57,600 input pixels per frame. ## Four times means a 1280 by 720 neural canvas The model output is four times the working width and height: 1280×720. Timeline Studio converts the planar output back to RGBA, then crops away the scaled letterbox area using the same contain rectangle. A 16:9 source can therefore produce the full 1280×720 result, while other aspect ratios produce the corresponding four-times crop. For a genuinely small source, that is a real fourfold enlargement of the model-space image. The phrase should not be misread as unlimited multiplication of any input. A 1920×1080 upload does not emerge at 7680×4320 from this implementation. The useful statement is precise: NanoVSR performs 4× reconstruction from its fixed 320×180 working representation. ## Large sources are protected from an accidental downgrade A fixed neural output creates an awkward case. If the source already contains more pixels than the cropped 4× model result, replacing it with that result would call itself enhancement while reducing resolution. The Worker detects this by comparing source area with model-output area. When the source is larger, it renders the neural crop back at the original width and height instead of shrinking the asset. It then blends 88 percent source color, 12 percent model output and a small protected-detail term derived from the source's local difference from a five-sample blur. This path keeps the original dimensions and most source information. It is conservative enhancement, not a second claim of 4× output. ## Five-frame groups make video restoration temporal Timeline Studio samples the retained source range at 12 frames per second and processes the frames in groups of five. For each group it seeks the video element to sourceStart plus the frame timestamp, creates five ImageBitmaps and transfers them to the Worker. A final group of two to four frames repeats its last bitmap to fill the T5 tensor. A final group with exactly one frame instead selects the T1 image model in this implementation. Each call returns only the requested number of outputs; the recorded sample documents this one-frame-tail behavior. Groups are non-overlapping in the current implementation. That keeps the control flow and memory bounded, though it also means an editor should pay special attention to visual continuity at five-frame group boundaries. ## Twelve frames per second is an explicit product trade-off The public dialog states that video is restored at 12 fps, and the restoration hook passes that value into the processor. The library clamps requested rate between one and fifteen frames per second. Twelve lowers the number of WebGPU inferences, decoded frames, PNG files and encoder inputs compared with preserving a 24, 30 or 60 fps source. It can be appropriate for short demonstrations, archival material or intentionally restrained motion, but it does not preserve the temporal smoothness of every source. The output duration remains tied to the retained source range, while fewer unique frames describe that duration. This is why full-speed playback matters: a crisp paused frame cannot reveal whether motion cadence is acceptable. ## Trimmed clips begin at their actual source range The processor reads sourceStart and sourceDuration from the selected segment instead of assuming the original file begins at zero. It limits duration to the media still available after that offset, calculates total frames from retained source duration and frame rate, then seeks every sample relative to sourceStart. This is the same non-destructive time discipline required elsewhere in a timeline editor. If a user trimmed ten seconds from the beginning before restoration, NanoVSR should enhance the visible clip, not silently spend minutes processing discarded footage. The audio composer receives the same source start and duration so picture and sound are cut from the same portion of the asset. ## Model delivery is local-first, not model-free Inference happens in a Worker on the user's GPU, but the application still needs model weights. Timeline Studio requests a pinned revision of either the T1 or T5 file from its model repository, choosing the preferred Hugging Face or ModelScope mirror according to settings and language. Download progress is exposed, and the ArrayBuffer is saved in a dedicated Cache Storage entry. Separate session promises are kept for image and video modes because their graph shapes differ. Later runs can report that the model came from cache before initializing WebGPU. Local processing therefore means source frames stay on the device; it does not mean the browser performs restoration without downloading software and weights. ## Cancellation reaches the Worker and the encoder Long restoration jobs need a real stop path. The hook owns an AbortController. Aborting a NanoVSR request posts a cancel message to the Worker and rejects the pending promise with an AbortError. The Worker records canceled request IDs, closes transferred bitmaps and suppresses progress or result messages for that request. During video composition, the same signal is passed into frame production and FFmpeg.wasm. If cancellation reaches encoding, the application terminates the FFmpeg instance and clears its cached loader. The original visual segment remains in place until a completed preview is explicitly applied. This is safer than swapping a half-produced asset into the timeline and hoping a later retry repairs it. ## PNG frames become an H.264 MP4 with optional audio Once each restored video frame is available as PNG, the shared browser compositor writes the sequence into FFmpeg.wasm's virtual filesystem. It encodes H.264 with the veryfast preset, CRF 18, yuv420p and faststart. When the selected source can be resolved to a Blob, it is added as an audio input, trimmed with the same source offset and duration, mapped as optional audio and encoded to AAC at 192 kbps. The shortest flag prevents one stream from extending beyond the other. The output is an MP4 Blob, and temporary frames, audio and output files are removed. This is a real video deliverable, not merely a high-resolution frame shown over the old clip. ## The restored clip remains an editable project asset Finishing inference does not immediately replace the current clip. The dialog presents synchronized source and restored playback, a timeline scrubber and a draggable comparison line. Apply creates a new user asset named with a nanovsr-4x suffix, records the output dimensions and duration, and swaps the selected segment only after approval. Enhancement metadata stores both original and processed source fields, including Blobs, dimensions and source timing, plus backend, frame rate and total frame count. If the same enhanced segment is reopened, the hook can recover the processed preview while retaining a path back to the original. Restoration becomes a reversible project decision rather than a destructive file conversion. ## What the 644K model can and cannot improve A compact model and fixed input are practical for browser GPU execution, but they do not make every source production-master quality. NanoVSR can strengthen edges, reduce the appearance of block compression and create more coherent texture from low-resolution evidence. It may also oversharpen, invent repeated patterns, alter small letters, simplify faces or produce unstable detail around fast movement and occlusion. Five-frame input gives temporal context, not a guarantee of perfect temporal consistency. A 12 fps output may be too sparse for sports, fast camera moves or high-frame-rate UI recordings. WebGPU support, adapter limits, cache space and FFmpeg memory remain device constraints. The right workflow starts with a representative short clip and accepts the result only after normal-speed review. Test the actual run ## The useful claim is narrower—and better Calling the feature 4× is correct at the neural model boundary: 320×180 becomes 1280×720 before aspect-ratio cropping. Product communication becomes misleading only when it implies that every source dimension is multiplied by four or that generated detail is recovered truth. Timeline Studio's code supports a more defensible claim. It uses T1 for images and singleton video tails, and T5 for the other video groups, protects higher-resolution sources, preserves the selected source range and available audio, exposes progress and cancellation, and returns a reviewable editable asset. That narrower explanation gives editors enough information to decide when browser-local super resolution is genuinely useful—and when the original footage is already the better source. SOURCE REVIEW / MODEL AND RUNTIME ## The 4× claim has shapes, hashes and a runtime path This is an implementation record rather than a visual-quality benchmark. It identifies the exact model revision, tensor shapes, browser execution provider and temporal window used by the published feature. REVIEWED SNAPSHOT Timeline Studio commit 68980d1 · model revision d551be1 WHAT THE SOURCE SUPPORTS The worker pins separate one-frame and five-frame FP16 ONNX graphs. Both accept 180 × 320 frames and return 720 × 1280 tensors, with FP32 browser I/O. Video is processed in five-frame groups through ONNX Runtime WebGPU; the model files are cached under a revisioned key. HOW TO REPEAT THE CHECK Record the source dimensions and duration, run one image and one short video on a WebGPU-capable browser, then inspect the reported backend, output dimensions, frame count and exported playback. Compare details at the same display size instead of judging the larger pixel count alone. CLAIM BOUNDARY A four-times tensor scale does not guarantee four-times perceptual detail. The current path normalizes inference to 320 × 180, uses a source-detail protection blend for already-larger inputs and has no cross-model accuracy benchmark in this record. PRIMARY SOURCES - [NanoVSR browser client](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/nanovsr.js) - [WebGPU worker and pinned model revision](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/nanovsr.worker.js) - [Model shapes and SHA-256 record](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/public/models/nanovsr-644k/README.md) - [Upstream NanoVSR repository](https://github.com/filippawlicki/nanovsr) REFERENCE ## Frequently asked questions Does every video become four times wider and taller? No. The neural working canvas scales from 320×180 to 1280×720 before aspect-ratio cropping. If the source is already larger than the effective model output, Timeline Studio preserves the source dimensions and blends protected source detail instead of shrinking it. Does NanoVSR run locally? Inference runs in a browser Worker through WebGPU. The pinned ONNX model must first download from a configured mirror and is then stored in Cache Storage. Why does video use five frames at once? The T5 model uses temporal context from five consecutive frames, giving it evidence that a one-frame image model cannot use. What frame rate does the restored video use? The current Timeline Studio workflow samples and composes restored video at 12 fps. The library accepts a clamped range from 1 to 15 fps. Is the source audio preserved? When the source can be resolved to a Blob with audio, FFmpeg.wasm trims the same source range and adds the optional audio stream to the H.264 MP4 as AAC. Can it restore exact lost detail? No. Super resolution reconstructs plausible high-frequency detail from low-resolution evidence. Generated texture should not be treated as forensic recovery. Does applying restoration overwrite the original clip? It creates a new PNG or MP4 asset and records the original and processed sources in enhancement metadata, so the editable project retains the original media path. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**LivePortrait WebGPU and 5D GridSample**Read the graph rewrite and numerical validation record.](https://ai-creator.top/resources/liveportrait-5d-gridsample-webgpu-port/)[**FFmpeg Media Pipelines for Web Playback**Separate demuxing, decoding, compatibility and export.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/)[**Building a Local-First Browser Video Editor**Follow workers, model sources and export boundaries into code.](https://ai-creator.top/resources/local-first-browser-ai-video-editor-architecture/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Try NanoVSR 4× restoration in Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) EXECUTABLE FIELD NOTE · SEPTEMBER 7, 2026 # One Video-Editing Plan Across Agent Channels When an editing request crosses from one Agent session to another, the dangerous ambiguity is whether the first session already wrote the change. This field note follows one saved audio move through a fresh command process, then compares a harmless retry with a conflicting new request. The evidence concerns the project contract; it is not a four-vendor integration test. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![One Video-Editing Plan Across Agent Channels visual guide](https://ai-creator.top/resources/articles/agent-skill-multi-channel-workbench.webp) ## Begin with the ambiguity that a handoff creates A terminal can lose its connection after a file has been written. Another Agent may then receive the original request and the resulting archive, without the first process still being available. In our fixture, a three-second diagnostic audio clip starts at project 2.0 seconds and represents source 1.0–4.0 seconds. The request moves its project start to 3.25 seconds. A second application with an invented new intention could change the edit again; a retry should instead recognize the operation already present in the project. The test input is [a portable six-second project](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/input.timeline) with a synthetic color slate and tone sequence. It contains no person, client footage or private recording. The [first JSON plan](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/channel-plan.json) names clip `voice-source`, operation `handoff-move-01` and `baseRevision: 0`. Stable project data is the handoff material; a screenshot of the previous Agent session would not answer these questions. Make the edit intentional ## Three fresh processes produce three different decisions Recorded calls to the pinned production CLI | Input and operation | Observed result | Meaning | | --- | --- | --- | | Revision 0; move handoff-move-01 to 3.25 s | Revision 1; one applied ID | The requested move was committed to a sibling archive. | | Saved revision 1; repeat the same ID and original baseRevision 0 | Revision 1; no applied IDs | The retry recognizes the completed intention and leaves project state identical. | | Saved revision 1; new ID handoff-new-02, stale baseRevision 0, target 4.0 s | REVISION\_CONFLICT; exit code 1 | A new edit cannot use the old revision; the requested output file is absent. | Download the [first result](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/channel-first.timeline) and [retry result](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/channel-retry.timeline). The verifier compares their parsed project objects, including clip state and command history. It does not claim the ZIP files have identical bytes: their export metadata can differ. The original input remains byte-for-byte unchanged. This exposes a detail that a blanket “stale revisions always fail” explanation misses. The engine checks whether every operation ID was already applied before rejecting a stale revision. A completely repeated plan can therefore be a successful no-op. A stale plan containing a new operation takes the conflict path. The [retry request](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/channel-retry-plan.json) and [stale new request](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/channel-stale-plan.json) make the distinction inspectable. ## Carry the editing intention, then discover the local transport The preserved archive tells the next session which clip exists and which operation has already been recorded. A Skill can then inspect whether the environment has the repository, command runner and required media services. Where those are available, it can reuse the same plan contract. Where they are absent, it needs the visible editor or another verified adapter. An instruction package cannot grant filesystem, browser or render access that the host does not provide. Use a new operation ID for a changed editorial intention, after inspecting the latest revision. Reusing an old ID with different arguments is not a safe way to ask for an update: this snapshot recognizes the recorded ID, rather than comparing a newly supplied argument body with the old intention. The test used identical arguments for its retry and a new ID for its changed request. **Version boundary:** This September 7, 2026 review uses Timeline Studio commit [`68980d1`](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/scripts/timeline-command.mjs). Its CLI exposes inspection, diff, project writes, prepared media import and a limited native FFmpeg renderer. That renderer supports the documented Visuals, Voiceover and Music subset; visible captions, stickers, overlays, transitions and other unsupported composition are rejected. Capabilities here describe this snapshot, not every hosted build or Agent environment. ## What the test establishes across channels Each call launched a fresh Node process against saved files. That verifies persistence beyond one process, including the conflict response and the absence of the failed output. It does not exercise Codex, Claude Code, Copilot or Gemini CLI installations, their approval prompts, browser focus or network interruption. Those integrations require their own tests. The transport-independent state result is useful precisely because those host-specific checks can be performed separately. The original July description of a voiceover-and-caption-only registry has been superseded in this review. The pinned engine also includes visual trim, split and reorder, prepared imports, clip properties and track state. The [matching command reference](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/upstream/skills/edit-timeline-studio/docs/command-reference.md) and [exact registry](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/projectCommandEngine.js) define the available operations; the case here exercises only `timed.move` and its transaction guards. Extract the linked kit and run `node reproduce.mjs` in its directory with Node, FFmpeg and ffprobe installed. The kit includes the pinned production CLI, command engine, render planner, fflate and synthetic input. It requires no account, model download or package installation. The loader changes import locations only; production function bodies remain unchanged. Reproduction writes the documented sibling fixtures and `results/` files inside the kit. [Download the complete case kit](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/editorial-workflows-case-kit.zip) · [Method and reproduction steps](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/README.md) · [Recorded results and limits](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/report.json) · [All eight CLI calls and responses](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/commands.json) · [Pinned source fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/source-manifest.json) ## Questions this case can answer Were four Agent products tested? No. The recorded handoff uses fresh CLI processes and saved archives. Vendor-specific installation, approval and browser behavior were not tested. Why does the retry accept an old baseRevision? All operation IDs in that request were already recorded. The engine returns an unchanged project before checking the revision for new work. Can this source version import media or render? Yes. The pinned CLI prepares media imports and provides a native FFmpeg renderer for a documented subset. This handoff case does not test media import. The companion archive case records a successful limited render and rejection of a captioned project. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Edit a Timeline Archive Without Losing Its Media**Compare preserved archive bytes, a native render and a rejected caption.](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/)[**A Transaction Boundary for Video-Editing Agents**Keep agent writes narrow, revision-safe and reversible.](https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/)[**From a Creative Brief to a Checked Timing Change**Check a one-second audio move against its linked label and source.](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Install the Timeline Studio Skill →](https://github.com/MartinDelophy/ai-video-editor/tree/main/skills/edit-timeline-studio) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) EXECUTED FIELD NOTE · SEPTEMBER 7, 2026 # Follow One Wikimedia Image Into a Saved Video Project A source record can be visible in search and still disappear before a project is saved. In a local experiment with Timeline Studio commit 68980d1, we followed one real Wikimedia image through two tracks, exported the project and reopened its archive. The main visual retained five source fields; the overlay retained none. This tests the pinned source snapshot; the current hosted editor was not verified. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **EXECUTED SOURCE CASE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![The actual Wikimedia Earth-at-night JPEG used in the import case](https://ai-creator.top/resources/evidence/2026-09-07/media-library/inputs/earth-city-lights-1280.jpg) The downloaded 1280 × 640 input, not a screenshot of the editor. Historical DMSP composite, 1994–1995; NASA GSFC and NOAA NGDC contributors. [Source and named creators](https://commons.wikimedia.org/wiki/File:Earth%27s_City_Lights_by_DMSP,_1994-1995_\(large\).jpg) · [Complete credit](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/credits.txt) ## Choose an image with a source that can be traced The editing brief is small: place an Earth-at-night image in a four-second visual, then use the same image as an overlay. A search for `Earth NASA` returned a useful historical composite, “Earth’s City Lights by DMSP, 1994–1995.” Its date matters: using it to illustrate present-day city growth would require a different source. We selected Commons page 233702 and saved the [complete search response](https://ai-creator.top/resources/evidence/2026-09-07/media-library/inputs/commons-search-response.json) before working with its media URL. The [individual source page](https://commons.wikimedia.org/wiki/File:Earth%27s_City_Lights_by_DMSP,_1994-1995_\(large\).jpg) names the data and image contributors and marks the image public domain in the United States. Its API record supplies the creator and the same label, but no separate `LicenseUrl`. The production mapper therefore uses the description page as the license link. Our [companion source ledger](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/source-ledger.json) retains the title, creator, page, label, access date and exact downloaded-file hash, rather than inventing a missing license address. This is a check of one known source. It does not establish a blanket permission for every item returned by an open catalog. For this case, retaining a credit also makes it possible to distinguish the historical data from a current image or a new AI-generated illustration. Keep the source attached ## Inspect the bytes before using the catalog dimensions The API offered both a 4800 × 2400 original and a 1280 × 640 thumbnail. The [reviewed image mapper](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/hooks/useEditorCatalog.js#L58) chooses `thumburl` for the editing source but sets width and height from the original image information. That produces a catalog asset labelled 4800 × 2400 whose selected URL returns only 1280 × 640 pixels. Recorded values for the selected image | Record | Dimensions | What it describes | | --- | --- | --- | | Commons original | 4800 × 2400 | The full source image, which this case did not download. | | Mapped editing asset | 4800 × 2400 | Metadata inherited from that original. | | Downloaded JPEG | 1280 × 640 | The actual 125,060-byte thumbnail supplied to both tracks. | The offline verifier reads the JPEG’s frame header; an independent [ffprobe result](https://ai-creator.top/resources/evidence/2026-09-07/media-library/inputs/ffprobe-image.json) agrees. The aspect ratio is unchanged, so a preview could still look correctly shaped while hiding the resolution mismatch. Before planning a tight crop or a large export, inspect the actual file dimensions. A larger number in a catalog does not add detail to the downloaded thumbnail. ## Compare a main-track import with an overlay import We passed the same mapped image into the production drop action twice: first to the main visual track, then to an overlay. The offline transport returned the already downloaded JPEG. The first call created a preparing segment, resolved the remote bytes and updated that segment. The second call reused the cached Blob, so the two successful drops required one fetch in the replay. Five named source fields after each production path | Checkpoint | Main visual | Overlay | | --- | --- | --- | | Provider, creator and source page | All retained | All absent | | License label and license URL | Both retained | Both absent | | Saved and reopened archive | Five fields still present | Five fields still absent | | Embedded JPEG bytes | Identical to input | Identical to input | The difference has a specific cause. The main remote-drop path calls [`updateVisualAssetInTimeline`](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/visualTimelineActions.js#L131), which spreads the resolved asset’s extra metadata onto the segment. The [overlay constructor](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/visualOverlayTimeline.js#L72) selects its own fields and omits the five source fields. Our result is limited to these two remote-image paths; it should not be extended to every insertion method. The production project-export callback wrote [an actual two-track .timeline archive](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/media-provenance-case.timeline), and the production reader reopened it. Both embedded images have the input hash. We then exported an [overlay-only project](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/overlay-only.timeline): none of the five named source fields appear anywhere in its payload. The file remains packaged with its media, but the export step cannot reconstruct information lost earlier. The [parsed overlay-only metadata](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/overlay-only-project.json) makes that omission inspectable. ## Keep a companion record before the source information is lost For this snapshot, save the source record while the catalog still has it. Use the [completed JSON ledger](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/source-ledger.json) and [plain-text credit](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/credits.txt) as concrete examples. They name the work, its contributors, the source page, its stated status, the date checked and the exact file used. The ledger also records both placements and distinguishes the original dimensions from the downloaded dimensions. These files were prepared by this experiment. They are separate from the editor’s exported archive and do not demonstrate an automatic credits feature. Keep them beside the project, and review them when replacing a clip or removing the main visual. Otherwise, an overlay may remain in the edit after the only surviving source record has been deleted with another track. For the image in this case, the saved credit names NASA GSFC and NOAA NGDC data contributors and the two NASA GSFC image creators, and links back to Commons. For another asset, copy the applicable source information from that asset’s own page. A useful handoff includes the selected bytes and their source record; a successfully packaged project alone does not establish that both survived. Keep the source attached ## Repeat the case and read its limits Download the [complete offline reproduction kit](https://ai-creator.top/resources/evidence/2026-09-07/media-library/media-library-case-kit.zip), extract it and run `node reproduce.mjs` with Node.js 22 or later. It requires no account, API key, installation step or network. The runner checks 21 source and vendor fingerprints, reads the real JPEG dimensions, executes the two drops, writes both archives and compares the retained bytes and fields. The [recorded report](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/verification-report.json) includes state, requests, notifications and assertion results; [the method notes](https://ai-creator.top/resources/evidence/2026-09-07/media-library/README.md) identify every substitute. A separate negative case makes the replayed media request return HTTP 503. The production action removes its temporary main-track segment and preserves the earlier clip. This is an injected failure, not an observed Wikimedia outage. It gives evidence for this cleanup branch without turning a source review into a claim about every network failure. The reviewed version is commit [`68980d1`](https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/assetDropActions.js). Public search and image download used curl; the subsequent execution used Node, immediate hook callbacks and in-memory state setters. The chosen creator string is plain text, and unused media-decoding boundaries throw if reached. We did not test the hosted editor, React scheduling, browser CORS, video/audio decoding, Pexels, Openverse or a final video render. Those checks remain separate from the concrete finding here: this source version preserves the selected image’s bytes across both tracks while handling their provenance differently. [Public request and input fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/media-library/acquisition.json) · [Pinned production source](https://ai-creator.top/resources/evidence/2026-09-07/media-library/source-manifest.json) · [Execution log](https://ai-creator.top/resources/evidence/2026-09-07/media-library/results/execution-log.txt) · [Download size and SHA-256](https://ai-creator.top/resources/evidence/2026-09-07/media-library/download-manifest.json) ## Questions this case can answer Was this tested in the live browser editor? No. The search response and JPEG came from real public requests. The pinned production functions then ran locally with disclosed host and transport substitutes. Browser interaction, CORS and a final video render were not tested. Does saving the project preserve every source field? Not in this case. The main remote-image path preserved provider, creator, sourceUrl, license and licenseUrl. The overlay omitted them, and the overlay-only archive contained none of those five fields. Its image bytes were preserved. Was the downloaded image 4800 by 2400 pixels? No. That was the original image size retained by the catalog mapper. The selected thumbnail actually contained a 1280 by 640 JPEG, verified from its bytes and independently with ffprobe. Is the downloadable source ledger produced by Timeline Studio? No. The ledger and credits file are companion records prepared for this experiment. Keep them beside the project; this source version did not automatically create or embed them. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**A Generation Plugin Should Return Media**Keep provider adapters outside timeline ownership.](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/)[**From a Creative Brief to a Checked Timing Change**Check a one-second audio move against its linked label and source.](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/)[**Browser AI Privacy: Source Review and Checks**Trace the reviewed file path and use the network inspection worksheet.](https://ai-creator.top/resources/browser-ai-privacy-explained/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Browse the Timeline Studio media library →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/photo-relighting-guide/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # AI Photo Relighting: A Practical Guide to Direction, Contrast and Realism Relighting estimates how a subject might appear under a different light direction or intensity. It is useful for portraits, product previews and creative studies, but realistic results require consistency. Highlights, cast shadows, background illumination and reflective materials should all tell the same visual story. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![AI Photo Relighting: A Practical Guide to Direction, Contrast and Realism visual guide](https://ai-creator.top/resources/articles/photo-relighting.webp) ## Start with a readable subject Images with a clearly visible subject and moderate exposure provide the model with useful shape information. Deeply clipped shadows contain little detail, while blown highlights cannot reveal their original surface texture. A neutral, evenly exposed source offers more room for controlled changes. Test the actual run ## Choose one dominant light direction Move the light gradually and observe the forehead, nose, cheek, chin and product edges. Strong conflicting directions can produce a synthetic look. If the original background contains obvious sunlight or lamps, align the new treatment with that environmental evidence. ## Protect skin and materials Skin should retain texture without plastic highlights. Glass, metal and glossy packaging need sharper reflections than fabric or matte paper. Review whether the relighting changes perceived color or creates halos around the subject boundary. ## Separate correction from creative grading Relighting, exposure correction and color grading solve different problems. First make sure the source has usable brightness and neutral color. Then adjust the apparent light direction with restrained intensity. Apply an overall creative color grade only after the spatial lighting looks coherent. Combining all three changes at maximum strength makes it difficult to identify why skin, shadows or product colors feel wrong and often produces an effect that is dramatic but not believable. Test the actual run ## Evaluate at final size A dramatic effect that looks impressive when zoomed out may reveal broken shadows at full size. Compare before and after, reduce the effect if necessary, and export only after checking the final crop used by the website, presentation or social post. RELIGHTING LAB · SEPTEMBER 7, 2026 ## Move the light, then check what the photograph cannot change White porcelain, reflective metal and wood make this coffee photograph useful for questioning a relighting result. Three production-browser exports reveal a directional change, over-bright highlights and a small black-edge defect. They also expose a mismatch between the initial slider display and the renderer’s internal strength. [![Original coffee cup, red saucer and metal spoon on a wooden table before any relighting](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) UNCHANGED SOURCE PHOTOGRAPH · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) Photo: Rachel Michetti · Coffee photograph courtesy of Pikolo Espresso Bar · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee). [Source and permission record](https://ai-creator.top/resources/evidence/2026-09-07/images/sources.json). The photograph is an established sample; the three exports below are newly recorded results. ### Keep the source fixed while changing two controls The session ran on [the public Photo Relighting page](https://ai-creator.top/relight/) in the Codex in-app browser on macOS arm64, around 13:23–13:25 Asia/Shanghai. The canvas and source were 600 × 400 pixels. The recorded pointer positions were (115, 77) and (481, 77), read from the pointer’s DOM style. These are image coordinates, not physical light angles. Color stayed at default opaque white, RGB 255/255/255. The first two exports only moved the pointer. The slider displayed 0.30, but source review found an internal initial strength of 0.40, unsynchronized until the slider changed. We did not capture the shader uniform directly: 0.40 is a source-based inference. The third export followed an explicit 0.70 adjustment. Filenames retain the original displayed-value labels. The implementation predicts 224 × 224 depth and renders a WebGL mesh. Files came directly from the download button without image edits. The session window does not measure inference speed. ### 1\. Left light: lift the wood without moving its shadows [![Unedited coffee relighting export with left white light, slider displaying 0.3; source analysis indicates shader strength 0.4. Inspect the cup rim, tabletop and one-pixel bottom/right black edge](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-left-030.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-left-030.png) LEFT, DISPLAY 0.30 (SOURCE: 0.40) · white RGB 255/255/255 · pointer (115, 77) · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-left-030.png) The left-hand treatment lifts the left tabletop and saucer, while the cup interior and porcelain rim also brighten. Wood grain remains recognizable. Yet the broad shadow beneath the service and the spoon’s reflection pattern remain attached to the original photograph. This is useful creative emphasis, but it does not show that the scene was reconstructed under a new physical light. ### 2\. Right light: direction changes more than the whole-image average [![Unedited coffee relighting export with right white light, slider displaying 0.3; source analysis indicates shader strength 0.4. Inspect the cup rim, tabletop and one-pixel bottom/right black edge](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-030.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-030.png) RIGHT, DISPLAY 0.30 (SOURCE: 0.40) · white RGB 255/255/255 · pointer (481, 77) · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-030.png) With the initial strength unchanged, the right tabletop receives more light and the far-left tabletop receives less than in the previous export. In the published left-table measurement box, mean RGB increases are 15.39 code values for left light and 5.40 for right light. In the right-table box they are 8.93 and 25.21. These encoded-pixel measurements confirm a spatial change; they do not measure exposure stops or lighting accuracy. ### 3\. Higher strength: brighter porcelain loses separation [![Unedited coffee relighting export with right white light, slider displaying 0.7; source analysis indicates shader strength 0.7. Inspect the cup rim, tabletop and one-pixel bottom/right black edge](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-070.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-070.png) RIGHT, EXPLICITLY SET 0.70 · white RGB 255/255/255 · pointer (481, 77) · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/coffee-right-070.png) Keeping the right pointer fixed and raising strength to 0.70 makes the tabletop and orange-red saucer more emphatic. The white rim and bright cup interior lose tonal separation. The spoon keeps its source reflections, and the underlying shadow remains. For a product brief requiring restrained highlights and faithful color, reject this setting. More intensity has not supplied missing material or lighting information. Endpoint counts in the untouched files; pointer coordinates are image pixels | File / setting | Pointer x, y | Any RGB channel = 255 | All RGB channels = 255 | | --- | --- | --- | --- | | Source photograph | — | 0.43% | 0.00% | | Left, display 0.30 (source: 0.40) | 115, 77 | 13.18% | 2.50% | | Right, display 0.30 (source: 0.40) | 481, 77 | 13.57% | 2.38% | | Right, explicitly set 0.70 | 481, 77 | 27.87% | 3.74% | A value of 255 counts an encoded channel endpoint. It does not prove every counted pixel is a newly clipped or objectionable highlight. Here, the rise from 0.43% in the source to 27.87% at 0.70 accompanies the visible loss of separation and gives the reviewer a reason to inspect the rim closely. ### A one-pixel edge is still an export defect All three PNGs are fully opaque, but their final row and rightmost column are solid black: 999 pixels, or 0.41625% of each image. Excluding that border, no RGB channel in these three outputs falls below its corresponding source value. The treatment therefore adds brightness in this sample; it does not replace the original illumination. The black boundary fails a clean, edge-to-edge product-image delivery check. We retain it in the downloads so the defect remains inspectable. ### Repeat the comparison and make a delivery decision To repeat this historical sequence, upload the original and move the pointer without touching the initial slider, then explicitly set 0.70 at the right position. A later initialization fix may change that sequence. For new comparisons, explicitly set and record strength first. Reject merged highlights, contradictory shadows, misleading product color or visible export edges. Download [the measurement script](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/measure-artifacts.py), `coffee.png` and all three named output files into one folder. With Python, Pillow and NumPy installed, run `python measure-artifacts.py`. It reads the files without rewriting images and reproduces hashes, dimensions, endpoint counts, region comparisons and border checks. This is one controlled source comparison, not a benchmark across subjects or devices. [Actual production run and parameters](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/run.json) · [File measurements and region coordinates](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/measurements.json) · [Artifact hashes](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/relight/manifest.json) · [Reviewed runtime and model fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/runtime.json) REFERENCE ## Frequently asked questions Can relighting recover detail from pure black? No. It can estimate appearance but cannot recover information that was never captured. Why do edges glow? A strong lighting change can expose segmentation or blending errors around the subject. Does it replace studio lighting? It is useful for experimentation, but critical commercial photography still benefits from controlled physical lighting. Can I relight product photos? Yes, especially when material reflections and brand colors are reviewed carefully. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Turn a Photo into Anime Responsibly**Track what survives and what the model redraws.](https://ai-creator.top/resources/photo-to-anime-responsibly/)[**Turn a Photo into Line Art**Judge contour hierarchy with an aligned split view.](https://ai-creator.top/resources/photo-to-line-art-guide/)[**Remove a Background Locally**Compare a real source and transparent output.](https://ai-creator.top/resources/remove-image-background-locally/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [AI Photo Relighting →](https://ai-creator.top/relight/) HISTORICAL ARTIFACT REVIEW ## Lighting changed without a hidden-scene claim The source and processed image keep the same portrait and street composition. The output shifts local brightness and warmth, especially across the face and background lights. It demonstrates a presentation edit, not reconstruction of the scene's original illumination. ![Night street portrait before the relighting treatment](https://ai-creator.top/home/matting-before.png) BEFORE 512 × 768 px ![The same portrait after a warmer and brighter relighting treatment](https://ai-creator.top/home/relight.png) AFTER 512 × 768 px EVIDENCE RECORD FIELD TEST ID RELIGHT-2026-09-04-01 STATUS Historical illustrative pair / exact generation runtime unrecorded WORKFLOW [September 7 controlled relighting case](https://ai-creator.top/resources/photo-relighting-guide/#relight-case-study) TEST INPUT [matting-before.png · 512 × 768 JPEG (legacy filename)](https://ai-creator.top/home/matting-before.png) RECORDED OUTPUT [relight.png · 512 × 768 PNG](https://ai-creator.top/home/relight.png) ARTIFACT INTEGRITY Input SHA-256 08bc6a6dbd53… · output SHA-256 d3bf0b383b56… RECOVERED RUNTIME The exact generation runtime for this historical pair was not recorded. The separate September 7 case linked under Workflow documents the current model and runtime fingerprints. OBSERVED MEASUREMENT Mean luminance +1.4/255; 26.2% of pixels brighten by more than 5 levels and 11.0% darken by more than 5. REVIEW METHOD Compare the same composition for local brightness, warmth, highlight clipping and material consistency. SAMPLE LIMIT One uncontrolled night portrait; no color chart, exposure metadata or calibrated-light reference. REPRODUCE THE CHECK 1. Download the two published historical files and inspect them at their shared 512 × 768 dimensions; their original generation settings are unrecorded. 2. Compare skin, glasses, hair, shirt and bright signs for clipped highlights, color patches or flattened texture. 3. Use the separate September 7 controlled case for an actual tool rerun with its published source, recorded controls and runtime fingerprints. 01 ### What visibly changed The face and shirt read brighter, skin appears warmer, and the street lighting has a more pronounced glow. The framing, glasses, hair and background pedestrians remain in corresponding positions, allowing a direct visual comparison. 02 ### What the pixel audit records Across the two same-size files, mean luminance rises by 1.4 levels on a 0–255 scale. The average hides the local edit: 26.2 percent of pixels brighten by more than five levels while 11.0 percent darken by more than five. Near-white clipping falls from 0.75 to 0.67 percent in this artifact. 03 ### What needs restraint Warmth is not the same as accurate skin tone, and brighter highlights can reduce facial texture. The output cannot reveal the true location, color or softness of lights that were not captured. It should be treated as a creative grade rather than recovered lighting data. 04 ### Why the historical portrait is repeated The same historical reference also appears in the matting and anime artifact reviews. Reusing it provides a common visual subject, not a controlled experiment across tools. This review considers tonal placement and material appearance; other reviews use different criteria for selection boundaries or stylized detail. 05 ### How to review the treatment Switch between source and result while watching eyes, teeth, skin boundaries, hair and bright signs. Bright skin beside unchanged dark hair, orange patches, gray teeth or lost highlight contrast are reasons to reduce the treatment or protect the affected region. Use a calibrated display when color consistency matters. **REVIEW BOUNDARY** Both files are 512 × 768 pixels, which makes composition-level comparison reasonable. No color chart, exposure metadata or controlled reference light is available, so this example does not support claims about colorimetric accuracy. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/photo-to-anime-responsibly/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # Photo to Anime: Better Inputs, More Consistent Results and Responsible Sharing Photo-to-anime conversion changes texture, color and facial rendering while trying to preserve the source composition. It works best as a creative interpretation. The output may alter identity cues, age, skin texture, accessories or background details, so it should be reviewed before sharing. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 8, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Photo to Anime: Better Inputs, More Consistent Results and Responsible Sharing visual guide](https://ai-creator.top/resources/articles/photo-anime.webp) STYLE-TRANSFER LAB · SEPTEMBER 7, 2026 ## A plausible picture can still contain a conversion error A repeated colored mesh is not automatically part of an anime treatment. Our first coffee and cat exports were recognizable, but fine grid patterns and colored fringes covered the pictures. Investigating that result exposed a pixel-channel conversion error. We kept those files, corrected the conversion and uploaded both original photographs again. The new outputs make the repair inspectable while also showing the texture changes that style transfer still introduces. ### Two sources, four actual browser exports The runs used the Codex in-app browser on macOS arm64 and the local preview at `127.0.0.1:4173/animatechange/`. The first pair followed a repair to the waiting-status interface. Coffee and Chelsea were then rerun after the channel-layout fix, around 13:48 and 13:50 Asia/Shanghai. Every file came directly from the download button; no output was cropped, recolored or re-encoded. We used the default automatic conversion and never selected HD. The model weights, worker and size rules stayed the same. These are local-preview observations; the old files below document the earlier conversion and do not represent the corrected version. ### Fix the conversion before judging the style The model expects each pixel’s red, green and blue values together. The recovered client instead grouped channels separately on input and read the returned channels in the wrong order. Correcting both boundaries changed the colors and patterns presented to the model and returned to the canvas. The [model-layout review](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/layout-review.json) and [eight source-level checks](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/layout-test-report.json) document that diagnosis. Those checks verify conversion logic; the fresh browser runs supply the separate image evidence. ### Coffee: continuous color returns, but wood and metal are reinterpreted [![Original coffee cup, red saucer and shiny spoon on a wooden table](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) UNCHANGED SOURCE · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) [![Historical coffee export before the channel-layout fix, with a regular fine colored grid and edge fringes](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-before-layout-fix.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-before-layout-fix.png) BEFORE LAYOUT FIX · HISTORICAL OUTPUT · 1536 × 1016 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-before-layout-fix.png) [![Fresh coffee export after the layout fix, with continuous stylized porcelain and coffee regions, enlarged wood ridges and faceted spoon reflections](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-output.png) AFTER LAYOUT FIX · FRESH BROWSER EXPORT · 1536 × 1016 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/coffee-output.png) Photo: Rachel Michetti · Coffee photograph courtesy of Pikolo Espresso Bar · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee). Source and both browser exports remain unmodified. The old export retains the cup and saucer silhouette, which could make the fine grid look like an intentional finish. In the corrected run that prominent regular pattern is no longer apparent at ordinary inspection. The cup interior, porcelain and table form more continuous regions, and the broad arrangement of the handle, saucer and spoon remains readable. That does not make the result a faithful product photograph. Fine wood grain becomes larger ridges and patches. The spoon’s reflection is reshaped into bright facets, while the liquid surface and cup shading are simplified. Accept it as a creative draft when those changes fit the brief. Reject it when the deliverable must preserve an item’s exact surface texture, material appearance or color. ### Chelsea: the pupils remain, while fur becomes painted structure [![Original close photograph of Chelsea the cat, showing dark pupils, green eyes, fine striped fur and white whiskers](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) UNCHANGED SOURCE · 451 × 300 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) [![Historical cat export before the channel-layout fix, with repeated fine grid texture and colored fringes across face and background](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-before-layout-fix.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-before-layout-fix.png) BEFORE LAYOUT FIX · HISTORICAL OUTPUT · 1536 × 1016 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-before-layout-fix.png) [![Fresh cat export after the layout fix, retaining dark pupils and nose while converting fine fur into larger angular patches and the background into broad color regions](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-output.png) AFTER LAYOUT FIX · FRESH BROWSER EXPORT · 1536 × 1016 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/chelsea-output.png) Photo: Stefan van der Walt · Chelsea the cat · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.chelsea). Source and both browser exports remain unmodified. Both dark pupils, the eye surrounds, nose and broad stripe pattern remain recognizable in the new export. Several long image-left whiskers also survive. Compared with the old grid-covered image, the new face is organized into larger continuous color regions. The fur is still substantially redrawn: narrow strands merge into angular segments and outlined patches, and the soft background becomes broad color fields. Short cheek details are reinterpreted. A recognizable cat is not proof of faithful fur or identity preservation. Compare pupils, nose shape, stripe placement and whisker connections with the source before approving a portrait treatment. ### Separate a changed file from a quality score Measured files; the final column compares equal-size old and corrected exports | Case | Source pixels | Each export | Mean absolute RGB difference | | --- | --- | --- | --- | | Coffee | 600 × 400 | 1536 × 1016 | 14.21 | | Chelsea the cat | 451 × 300 | 1536 × 1016 | 11.32 | All four exports are opaque 1536 × 1016 PNGs. This matches the default sizing rule, including its rounding of the short dimension. Larger dimensions do not establish recovered detail. The differences above use encoded RGB values on a 0–255 scale and confirm that the new files changed; they are not fidelity scores or a ranking of artistic quality. No resampled source comparison or processing-speed benchmark is claimed. ### Repeat the corrected workflow with a clear acceptance test Download an original, open [Photo to Anime](https://ai-creator.top/animatechange/), upload it unchanged and wait for a visible result before saving. Inspect broad composition first, then eyes, reflections, small textures and colored edge artifacts at full size. Keep the source alongside the chosen stylized result and disclose the transformation when a viewer could mistake it for a photograph. The CC0 examples here provide traceable inputs; using someone else’s recognizable portrait still requires appropriate permission. Place [the measurement script](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/measure-artifacts.py), both sources and the four named output PNGs in one folder. With Python, Pillow and NumPy installed, run `python measure-artifacts.py` to reproduce dimensions, hashes, opacity and the old/new file differences without rewriting images. [Actual runs and corrected-runtime fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/run.json) · [Measurements and definitions](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/measurements.json) · [Artifact hashes](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/manifest.json) · [Model-layout inspection script](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/anime/inspect-model-layout.mjs) · [Source permissions](https://ai-creator.top/resources/evidence/2026-09-07/images/sources.json) ## Use a well-lit source A front or three-quarter portrait with visible facial features gives the model a clearer foundation. Heavy filters, extreme shadows, tiny faces and crowded group shots increase ambiguity. Keep hair and important accessories inside the crop. Keep the source attached ## Expect interpretation, not identity preservation The model may simplify eyes, nose, jaw and skin differently from the original. Generated features should not be treated as an accurate prediction of a person's appearance in another medium. Compare the result and avoid identity-sensitive claims. ## Inspect hands and background objects Style models focus attention on prominent faces, which means hands, signs, jewelry and distant people may receive less coherent treatment. Check the entire frame and crop or discard results with distracting artifacts. ## Build consistency across a series When creating several portraits for one project, use similar crops, lighting, subject scale and background complexity. Changing all of those variables at once can make the outputs look as though they came from unrelated visual systems. Select one representative image first, establish an acceptable input pattern and then process the remaining set. Consistency should be evaluated across facial proportions, line weight, color temperature and background treatment, not merely by whether every image looks individually attractive. Test the actual run ## Get permission before publishing A stylized portrait is still derived from a person's likeness. Use your own photos or obtain appropriate permission, especially for minors, clients and commercial promotion. Do not use the result for impersonation or deception. REFERENCE ## Frequently asked questions Will the result look exactly like the person? No. Style transfer preserves some cues but also changes facial rendering. Why are hands inconsistent? Small complex anatomy is difficult for many image models. Can group photos work? They can, but smaller faces usually receive less detail. Is permission still needed? Yes. Stylization does not cancel privacy, likeness or copyright obligations. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Relight a Photo Without Inventing Certainty**Separate a creative lighting edit from recovered truth.](https://ai-creator.top/resources/photo-relighting-guide/)[**Remove a Background Locally**Compare a real source and transparent output.](https://ai-creator.top/resources/remove-image-background-locally/)[**Browser Talking Portraits: Encoder Test and Model Costs**Inspect the one-second encoder result, audio window and model budget.](https://ai-creator.top/resources/create-talking-digital-human-in-browser/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Photo to Anime →](https://ai-creator.top/animatechange/) HISTORICAL ARTIFACT REVIEW ## A recognizable style transfer with changed detail This older portrait pair preserves a visible style transformation. Its generation settings were not recorded, so it remains separate from the reproducible September 7 coffee and cat runs above. ![Source night street portrait before anime-style transformation](https://ai-creator.top/home/matting-before.png) BEFORE 512 × 768 px ![Anime-style interpretation of the portrait with simplified facial and street details](https://ai-creator.top/home/animate-after.jpg) AFTER 600 × 901 px EVIDENCE RECORD FIELD TEST ID ANIME-2026-09-04-01 STATUS Historical illustrative pair / exact generation runtime unrecorded WORKFLOW [September 7 controlled anime conversion case](https://ai-creator.top/resources/photo-to-anime-responsibly/#anime-case-study) TEST INPUT [matting-before.png · 512 × 768 JPEG (legacy filename)](https://ai-creator.top/home/matting-before.png) RECORDED OUTPUT [animate-after.jpg · 600 × 901 JPEG](https://ai-creator.top/home/animate-after.jpg) ARTIFACT INTEGRITY Input SHA-256 08bc6a6dbd53… · output SHA-256 0ae39943fa20… RECOVERED RUNTIME Historical runtime unrecorded. The linked September 7 case provides separate model fingerprints, corrected conversion code and fresh browser outputs. OBSERVED MEASUREMENT Both files are JPEGs. Dimensions change from 512 × 768 to 600 × 901, with a slight aspect-ratio change; this is not a pixel-aligned comparison. REVIEW METHOD Compare composition and recognizable attributes while recording redrawn identity and background details. SAMPLE LIMIT One consenting portrait reference; no identity score, style-authorship claim or commercial-rights determination. REPRODUCE THE CHECK 1. Download the linked historical portrait and illustration; this check inspects existing files rather than reproducing their unknown generation settings. 2. Compare pose, glasses, hair, clothing and street structure at matching display size, accounting for unequal dimensions and JPEG compression. 3. Use the linked September 7 case to rerun its published coffee or cat input through the corrected workflow. 01 ### Retained composition, redrawn detail The centered pose, glasses, cat ears, long hair, white shirt and night street remain recognizable. Eyes, mouth, face shape and background edges are redrawn; fine texture becomes broad color regions and pedestrians and signage are simplified. Inspect these landmarks before accepting a portrait treatment, and label the transformation when sharing it. 02 ### Why the files are not pixel aligned The source is a 512 × 768 JPEG despite its .png filename; the result is a 600 × 901 JPEG. The output is one pixel taller than proportional 600 × 900 scaling. Unequal dimensions and JPEG compression prevent a direct per-pixel comparison. The same source appears in the matting and relighting reviews, but those historical pairs were not a controlled experiment across tools. **REVIEW BOUNDARY** The files have different dimensions and compression. This comparison demonstrates a visible style transformation only; it does not establish identity accuracy, artistic originality, model provenance or suitability for commercial character design. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/photo-to-line-art-guide/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # How to Turn a Photo into Useful Line Art A line-art model simplifies tones and textures into visible contours. The best result is not necessarily the one with the most lines. Useful line art preserves recognizable structure, separates important shapes and avoids turning noise, hair or foliage into an unreadable web. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![How to Turn a Photo into Useful Line Art visual guide](https://ai-creator.top/resources/articles/photo-line-art.webp) ## Choose clear shapes Use a source with a distinct subject, readable silhouette and controlled background. Strong overlap, low contrast and heavy motion blur make it difficult to decide which boundaries matter. Cropping around the subject reduces irrelevant detail. Test the actual run ## Control visual noise Fine fabric, skin texture, leaves and compressed JPEG blocks can produce excessive marks. A lightly cleaned or resized source may create a clearer drawing. Avoid aggressive sharpening before conversion because every sharpened artifact can become a line. ## Match line density to the purpose A tracing reference can retain internal construction lines, while a children's coloring page needs larger enclosed regions and fewer marks. Tattoo concepts, craft templates and technical references each require different levels of simplification. Print a small test or view the image at final size: if important shapes merge or texture dominates the subject, simplify the source and convert again rather than expecting every generated contour to remain useful. ## Review structural landmarks For portraits, inspect the eyes, nose, mouth, jaw and hairline. For objects, check corners, openings and perspective lines. Remove or redraw misleading contours before using the output as a painting reference or educational worksheet. Keep the human check ## Respect the source A style conversion does not remove copyright or personality rights. Confirm permission before distributing line art derived from somebody else's photograph, illustration, character or product design. LINE-ART LAB · SEPTEMBER 7, 2026 ## A cup keeps its shape. A cat loses part of its gaze. The earlier portrait comparison is a single source/output composite. These two new cases publish separate source photographs and untouched PNG exports, so readers can repeat the complete transformation. A coffee service tests manufactured contours against wood grain and reflections. A cat tests whether important facial landmarks survive when fur supplies far more edges than the eyes do. ### The exact run behind these files Both images were uploaded through the visible Photo to Line Art interface in the Codex in-app browser on macOS arm64, using a local static preview at `127.0.0.1:4173/linechange/`. A long-running busy-status fault had first been repaired: the old percentage display could crash while waiting. The repair changed the status interface, with the same sketch model, worker, normalization and image conversion retained. Each run finished with a visible result and a PNG saved through the download button. No mask, density setting, recoloring or output cleanup was applied. These are local-preview observations; the record does not establish production-origin behavior. The session included other work, so its elapsed window is not presented as processing speed. ### Coffee: the cup reads clearly, but its surroundings compete [![Original coffee cup, red saucer and reflective spoon on a textured wooden tabletop](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) SOURCE PHOTOGRAPH · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) [![Line-art export retaining the cup and saucer contours alongside dense diagonal wood-grain lines and fragmented spoon-reflection marks](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/coffee-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/coffee-output.png) UNEDITED LINE-ART EXPORT · 1152 × 768 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/coffee-output.png) Photo: Rachel Michetti · Coffee photograph courtesy of Pikolo Espresso Bar · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee). The linked source is unchanged; the output is the newly recorded browser export. The cup opening, handle and elliptical saucer remain immediately recognizable. Large pale interiors separate them from much of the scene. This supports using the export as a first structural tracing reference: the main objects have not dissolved into unrelated marks. The difficult part is deciding which lines deserve to remain. Diagonal wood grain becomes a dense competing field, particularly at the left and lower-right edges. The saucer has several adjacent rim contours. Bright reflections on the spoon become nested fragments inside its outline, while spots on the handle become isolated loops. Those marks follow visible contrast, but they are not necessarily construction lines. Reject the raw export as a clean coloring page; select the main silhouette and remove background and reflection-derived clutter before that use. ### Chelsea: a recognizable face is not a faithful gaze [![Original close photograph of Chelsea the cat with green eyes, dark pupils, fine fur and long white whiskers](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) SOURCE PHOTOGRAPH · 451 × 300 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) [![Cat line-art export with dense fur marks, a thin contour replacing the image-left pupil and an almost empty image-right eye interior](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/chelsea-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/chelsea-output.png) UNEDITED LINE-ART EXPORT · 1152 × 768 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/chelsea-output.png) Photo: Stefan van der Walt · Chelsea the cat · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.chelsea). The linked source is unchanged; the output is the newly recorded browser export. The nose, eye surrounds and broad face structure survive. Forehead stripes and fine fur become strong, closely packed marks. Several long whiskers extending toward image-left also remain visible, but smaller strands break into fragments. The source already crops the ears and body, so incomplete framing is not a model reconstruction failure. The pupils expose a more consequential loss. The image-left pupil becomes a thin internal contour instead of a dark filled shape; the image-right pupil largely disappears into the white eye interior. The cat is still recognizable, yet its gaze changes. For a portrait brief, that is a rejection condition even if the fur looks detailed. Restore the pupils from the original and choose meaningful fur lines before accepting the drawing. We did not perform that repair on the downloadable result. ### What the file measurements can actually tell us Actual source and output files, measured without resampling | Case | Source pixels | Output pixels | Near-white pixels | Non-gray pixels | | --- | --- | --- | --- | --- | | Coffee | 600 × 400 | 1152 × 768 | 82.90% | 3.17% | | Chelsea the cat | 451 × 300 | 1152 × 768 | 76.08% | 6.78% | Both exports are 1152 × 768 pixels. The reviewed preprocessing sets the short edge to 768 and rounds the scaled long edge down to a multiple of eight; these files match that rule. Their larger dimensions do not establish recovered detail. Source and output sizes differ, so a direct pixel-error score would require additional alignment choices that this review does not make. “Near-white” means every RGB channel is at least 250. “Non-gray” means the channels are not identical; the dark red marks visible in the exports make clear that these are not purely monochrome drawings. All alpha values are 255, so the white background is opaque. These counts describe file distribution, not contour accuracy, preserved identity or readiness for print. The cat has fewer near-white pixels while still losing important pupil information. ### Repeat the test, then judge it at the intended size Download either original, open [Photo to Line Art](https://ai-creator.top/linechange/), upload it unchanged and wait for a real result before downloading. Compare the cup opening, saucer, spoon, eye interiors and whiskers with the source. Inspect dense marks at full size, then view the drawing at its intended print or display size. Reject confusing edge hierarchies, missing landmarks or open regions that undermine the intended use. This raster export contains no editable vector paths. Place [the measurement script](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/measure-artifacts.py), `coffee.png`, `chelsea.png` and both named output PNGs in one folder. With Python, Pillow and NumPy installed, run `python measure-artifacts.py` to reproduce dimensions, hashes, opacity and threshold counts without rewriting images. [Actual run and patched-runtime fingerprints](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/run.json) · [Measurements and definitions](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/measurements.json) · [Artifact hashes](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/lineart/manifest.json) · [Source provenance and permissions](https://ai-creator.top/resources/evidence/2026-09-07/images/sources.json) REFERENCE ## Frequently asked questions Why are there too many lines? The source may contain strong texture, noise or a complex background. Can I use it for coloring pages? Yes, after checking that regions are clear and sufficiently enclosed. Does it create vector files? The current result is an image; vector tracing is a separate workflow. Should I simplify the background first? Usually yes when the subject is the main purpose of the drawing. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Relight a Photo Without Inventing Certainty**Separate a creative lighting edit from recovered truth.](https://ai-creator.top/resources/photo-relighting-guide/)[**Turn a Photo into Anime Responsibly**Track what survives and what the model redraws.](https://ai-creator.top/resources/photo-to-anime-responsibly/)[**Remove Unwanted Objects from Photos**Review a marked repair against nearby texture and lines.](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Photo to Line Art →](https://ai-creator.top/linechange/) OBSERVED OUTPUT / LINE EXTRACTION ## A split view of what the lines retain This composite places the photograph on the left and its line interpretation on the right. Because the center split aligns the same face and street scene, it makes preserved contours, omitted color information and unwanted background detail directly inspectable. ![Split comparison with the source portrait on the left and extracted line art on the right](https://ai-creator.top/home/lineart.png) SOURCE / OUTPUT SPLIT 1266 × 1314 px EVIDENCE RECORD FIELD TEST ID LINE-2026-09-04-01 STATUS Available / public browser workflow WORKFLOW [Open Photo to Line Art](https://ai-creator.top/linechange/) TEST INPUT [Left half of lineart.png · source photograph](https://ai-creator.top/home/lineart.png) RECORDED OUTPUT [Right half of lineart.png · raster line result](https://ai-creator.top/home/lineart.png) ARTIFACT INTEGRITY Composite SHA-256 6fe35a89b792… · 1266 × 1314 RGB image RECOVERED RUNTIME Recovered implementation: sketch-model.onnx in a Web Worker with ONNX Runtime WASM SIMD. OBSERVED MEASUREMENT Aligned split comparison; 36.77% of the composite is near-white, so blank area is not counted as recovered detail. REVIEW METHOD Use an aligned split view to judge retained contours, omitted color and unwanted background marks. SAMPLE LIMIT One raster composite; no vector paths, stroke-width measurement or cross-model comparison. REPRODUCE THE CHECK 1. Open the split artifact and use the center boundary to compare corresponding facial and street features. 2. Confirm that glasses, face contour, cat ear and hair remain readable in the line half. 3. Judge the result at its intended size; do not treat the raster output as measured vector geometry. 01 ### What remains readable The glasses, eye, face contour, cat ear and long hair remain recognizable in the line half. Major street shapes also survive, showing that the output is a scene-level edge interpretation rather than a manually isolated portrait drawing. 02 ### What becomes noise Highlights, hair texture, signs, pedestrians and blurred street lights create competing marks. Some contours are doubled or broken, and the red-brown line color is part of this output rather than proof of a clean monochrome drawing. 03 ### What the file measurement adds The published 1266 × 1314 artifact is a single aligned RGB composite, and 36.77 percent of its pixels are near-white. That figure describes the large blank regions in this specific output; it is not a universal cleanliness score or a substitute for checking whether the remaining lines are meaningful. 04 ### A failure signature worth rejecting A usable line drawing needs hierarchy. If background lights create darker or denser marks than the face and glasses, the extraction has preserved contrast without preserving intent. Crop, simplify the source or remove background clutter before asking the model for a second pass. 05 ### Match the result to the job For a coloring page, remove stray background marks and preserve larger closed regions. For tracing reference, retain structural lines but do not assume geometric accuracy. Compare the final drawing at normal size because an image can look detailed while zoomed in and still have weak visual hierarchy. **REVIEW BOUNDARY** The source and line result are already combined into one 1266 × 1314 image. This supports a visible transformation comparison, but it is not a vector-quality test and does not measure performance against other extraction methods. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/remove-image-background-locally/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # How to Remove an Image Background Locally in Your Browser Background removal is useful for product listings, profile images, presentations and reusable design assets. A local-first browser workflow can identify the main subject without requiring an account or a traditional desktop editor. The important part is not only creating transparency, but also checking difficult edges and exporting the result in a format that preserves them. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![How to Remove an Image Background Locally in Your Browser visual guide](https://ai-creator.top/resources/articles/background-removal.webp) BACKGROUND REMOVAL LAB · SEPTEMBER 7, 2026 ## Three new photographs: a cup, fine whiskers, and a crowded launch pad The earlier portrait is a single example of subject retention. This new set tests three different decisions: whether a cup and its accessories stay together, whether thin whiskers survive, and whether a small rocket can be isolated among larger towers. Each source photograph is linked beside the actual browser export. We publish imperfect results because the point is to show where automatic selection needs review. Test environment Codex in-app browser on macOS arm64, viewing the local static deployment preview at http://localhost:4173/removebackground/. Run conditions Three separate real browser uploads and completed worker inferences. Default automatic processing; no hand-drawn mask, edge repair, output crop or re-encoding. This is a local deployment-preview run, not a production-network speed test. Model and settings rmbg\_model\_quantized.onnx with the site's removebackground.worker-1b297622.js and ONNX Runtime WASM SIMD. The interface uses a 1024 × 1024 model input and restores the aspect ratio with a 1024-pixel long edge. Limits of the measurements Alpha percentages count transparent, partial and opaque pixels. Even alpha 254 counts as partial, so this is not the area of damaged edges. These values are not accuracy, quality, confidence or pass-rate scores. No hand-labelled ground-truth mask or timing benchmark is claimed. **Public-site recheck:** A separate September 7 visit to [the hosted tool](https://ai-creator.top/removebackground/) used its built-in portrait sample and reached the actual comparison view: an 896 × 1440 source and a 637 × 1024 PNG preview. That confirms one public sample-to-preview path. The download event was not captured, cache was not cleared, and the three cases below remain labelled as local-preview tests. See the [public-browser record](https://ai-creator.top/resources/evidence/2026-09-07/public-browser-check/run.json). ### 1\. Product still life: define whether the accessories belong **Review target:** Keep the complete coffee service: cup, saucer and spoon. Remove the wooden tabletop. [![Photograph of an espresso cup, red saucer and metal spoon on a wood-grain table](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) SOURCE PHOTOGRAPH · 600 × 400 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) [![Actual automatic background-removal output retaining the cup, saucer and spoon with transparent surroundings](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-output.png) UNEDITED BROWSER EXPORT · 1024 × 682 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-output.png) [![Coffee source and unchanged automatic output composited on light and dark backgrounds at matching display sizes](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-review.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-review.png) The same exported alpha is composited onto light and dark fields for inspection. These backgrounds are diagnostic additions; the downloadable output above retains transparency. **Observed result:** The automatic output retains the cup, saucer and both visible ends of the spoon while removing the surrounding wood grain. On light and dark review fields, the service remains readable as a group and the saucer's outer ellipse stays connected. The bright line around the porcelain rim is also visible in the source; it should not automatically be mistaken for an alpha halo. **Publication decision:** Accept as a draft cutout of the complete coffee service at ordinary display size. Reject for a cup-only catalog brief: the saucer and spoon remain. Automatic foreground selection does not know which accessory a shop intends to sell. Alpha in this export 51.49% fully transparent; 1.91% partial alpha; 46.6% fully opaque. Size behavior 600 × 400 input → 1024 × 682 output. This workflow resizes as part of processing; larger dimensions do not establish recovered detail. [View the recorded browser comparison](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee-browser.jpg) Photo: Rachel Michetti · Coffee photograph courtesy of Pikolo Espresso Bar · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee). The source file is unmodified. The cutout is our newly recorded model output. ### 2\. Fine fur: a recognizable face still loses boundary detail **Review target:** Keep the visible cat and the thin whiskers extending beyond its cheek, while removing the soft background. [![Close-up photograph of Chelsea the cat with thin white whiskers against a blurred background](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) SOURCE PHOTOGRAPH · 451 × 300 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea.png) [![Actual automatic cutout of the cat, with the main face retained and simplified fine whiskers at the right edge](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-output.png) UNEDITED BROWSER EXPORT · 1024 × 681 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-output.png) [![Cat source and unchanged automatic output on light and dark fields, showing truncated fine whiskers near the right cheek](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-review.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-review.png) The same exported alpha is composited onto light and dark fields for inspection. These backgrounds are diagnostic additions; the downloadable output above retains transparency. **Observed result:** The eyes, nose and broad fur silhouette remain. Long whiskers crossing the body on the left are visible, but that alone does not prove good extraction: those strands sit over retained foreground. At the right cheek, where fine strands cross the removed background, the exported boundary shortens or merges their outer tips. The effect is easier to see over the dark field. The original framing already cuts through the ears and body; the output cannot supply those missing regions. **Publication decision:** Keep as an inspectable draft, but reject when the brief requires the complete visible whisker silhouette or a polished animal cutout. Refine the right-side boundary manually in an editor with mask controls. This automatic result does not establish hair-matting quality. Alpha in this export 12.31% fully transparent; 36.52% partial alpha; 51.16% fully opaque. Size behavior 451 × 300 input → 1024 × 681 output. This workflow resizes as part of processing; larger dimensions do not establish recovered detail. [View the recorded browser comparison](https://ai-creator.top/resources/evidence/2026-09-07/images/chelsea-browser.jpg) Photo: Stefan van der Walt · Chelsea the cat · [CC0, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.chelsea). The source file is unmodified. The cutout is our newly recorded model output. ### 3\. Crowded scene: the selected foreground is broader than the brief **Review target:** Isolate the central rocket alone. Exclude the four surrounding towers and the launch-pad lights. [![Falcon 9 at dusk with four surrounding lattice towers and bright launch-pad lights](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg)](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg) SOURCE PHOTOGRAPH · 640 × 427 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg) [![Actual output removes most sky but retains the rocket, all four towers and bright starburst lights](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-output.png) UNEDITED BROWSER EXPORT · 1024 × 683 px · [Download original file](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-output.png) [![Rocket source and real output on light and dark fields; all four towers and several flares remain despite sky removal](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-review.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-review.png) The same exported alpha is composited onto light and dark fields for inspection. These backgrounds are diagnostic additions; the downloadable output above retains transparency. **Observed result:** Most of the blue sky becomes transparent, while the central rocket, all four towers and several starburst lights remain. Many openings in the lattice towers are also cleared. The file therefore demonstrates considerable background removal, yet it does not deliver the requested rocket-only subject. The near-white review field makes the unwanted infrastructure and retained light flares especially easy to inspect. **Publication decision:** Reject for the stated rocket-only task. The scene has several strong foreground structures, and the automatic interface offers no subject prompt to exclude the towers. Use an editor with an explicit selection or mask, then review the rocket's fine support geometry separately. A high transparent-pixel percentage does not mean the intended object was isolated. Alpha in this export 71.59% fully transparent; 26.77% partial alpha; 1.64% fully opaque. Size behavior 640 × 427 input → 1024 × 683 output. This workflow resizes as part of processing; larger dimensions do not establish recovered detail. [View the recorded browser comparison](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket-browser.jpg) Photo: SpaceX · Falcon 9 carrying DSCOVR at the launch complex · [Public domain, as documented by scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.rocket). The source file is unmodified. The cutout is our newly recorded model output. ### What changes between these three jobs A product cutout is judged against a delivery brief: keeping a saucer may be correct for a coffee-service image and wrong for a cup-only catalog. Fine fur calls for a different decision: a readable cat silhouette can still lose real whiskers. In a crowded scene, the first question is whether the model selected the intended object at all. These are three distinct acceptance tests, so a single “background removed” status does not settle any of them. ### Repeat the test with the identical inputs 1. Download one source photograph above and open [Background Remover](https://ai-creator.top/removebackground/). Upload the file without cropping or re-encoding it, then wait for the model to load and the comparison view to appear. 2. Use the default automatic run; the tested interface has no subject prompt or manual mask refinement. Save the PNG before editing. Repeat separately for the other two sources. 3. Inspect the PNG over white and a dark neutral field. Compare the saucer and spoon, the whiskers outside the cheek, and the rocket against the neighbouring towers. Match the desired subject to the original photograph. 4. Download [the measurement script](https://ai-creator.top/resources/evidence/2026-09-07/images/measure-artifacts.py) into the same folder as the six source/output files. Name the exports `coffee-output.png`, `chelsea-output.png` and `rocket-output.png`. With Python, Pillow and NumPy installed, run `python measure-artifacts.py` to reproduce the dimensions, SHA-256 hashes and alpha counts. The optional [review-sheet script](https://ai-creator.top/resources/evidence/2026-09-07/images/make-review-sheets.py) rebuilds the labelled light/dark comparisons. [Run notes and review decisions](https://ai-creator.top/resources/evidence/2026-09-07/images/run.json) · [Actual file measurements and SHA-256 hashes](https://ai-creator.top/resources/evidence/2026-09-07/images/measurements.json) · [Complete artifact manifest](https://ai-creator.top/resources/evidence/2026-09-07/images/manifest.json) · [Source provenance and permissions](https://ai-creator.top/resources/evidence/2026-09-07/images/sources.json) The three sources are established sample photographs distributed by [scikit-image](https://scikit-image.org/docs/stable/api/skimage.data.html). Their hashes match its [v0.25.2 data registry](https://github.com/scikit-image/scikit-image/blob/v0.25.2/skimage/data/_registry.py). They broaden the subjects in this guide, but are not a representative benchmark, a new photo shoot or a basis for a universal success percentage. ## What background removal actually does A segmentation model estimates which pixels belong to the foreground subject and which belong to the background. The result is converted into an alpha mask: opaque areas remain visible, transparent areas disappear, and partially transparent pixels preserve soft transitions. Hair, fur, glass, motion blur and shadows are difficult because their boundaries are not binary. A useful result therefore depends on both the model and the source image. Test the actual run ## Choose a suitable source image Use the highest-resolution original available. Clear contrast between subject and background usually improves the initial mask. Avoid screenshots that have already been compressed several times. If the subject has fine hair or transparent fabric, even lighting and a simple background make edge estimation easier. Cropping excessive empty space before processing can also keep the subject large enough for the model to analyze. ## A reliable four-step workflow First, open the background remover and select the source image. Second, wait for the local model to initialize and generate the mask; the first visit may be slower because model files are cached by the browser. Third, inspect the result at full size, especially around hair, fingers, product handles and soft shadows. Finally, export as PNG or another format that supports transparency. JPEG does not store a transparent alpha channel. ## How to judge the result Place the cutout over both a light and a dark temporary background. A pale outline that is invisible on white may become obvious on black. Look for missing interior spaces, clipped accessories, color spill from the old background and unnaturally sharp edges. For ecommerce images, keep important product shadows only when they help communicate shape and remain consistent across the catalog. Inspect the actual output ## Privacy and limitations The core workflow is designed to run in the browser whenever the device supports it. Browser processing reduces unnecessary file transfer, but it does not make every linked service local. Review the privacy description for each workflow and avoid confidential material when using remote features. Very large images can require substantial memory, while older phones and browsers may be slower or unsupported. REFERENCE ## Frequently asked questions Why does the first run take longer? The browser may need to download and initialize the AI model. Later visits are often faster after caching. Which format keeps transparency? PNG and WebP can preserve transparency; JPEG cannot. Can I use the result commercially? Your ability to use it depends on the rights to the source image and any people, products or trademarks shown. Why is hair difficult? Individual strands mix foreground and background colors, so the edge contains many partially transparent pixels. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Matting Export Failure Review**Inspect an opaque JPEG export and repeat the transparency check.](https://ai-creator.top/resources/image-matting-vs-background-removal/)[**Remove Unwanted Objects from Photos**Review a marked repair against nearby texture and lines.](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/)[**Relight a Photo Without Inventing Certainty**Separate a creative lighting edit from recovered truth.](https://ai-creator.top/resources/photo-relighting-guide/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [AI Background Remover →](https://ai-creator.top/removebackground/) OBSERVED OUTPUT / BACKGROUND REMOVAL ## A real cutout, reviewed on its edges This pair is included as review evidence, not as a promise of a perfect result. The output removes the dark portrait background and preserves the main silhouette. It also shows why a transparent PNG still needs inspection before publication. ![Portrait before background removal, with a dark studio-like background](https://ai-creator.top/home/bg-before.jpeg) BEFORE 896 × 1440 px ![Transparent PNG after background removal, showing the retained portrait subject](https://ai-creator.top/home/bg-after.png) AFTER 637 × 1024 px EVIDENCE RECORD FIELD TEST ID RMBG-2026-09-04-01 STATUS Available / public browser workflow WORKFLOW [Open Background Remover](https://ai-creator.top/removebackground/) TEST INPUT [bg-before.jpeg · 896 × 1440 JPEG](https://ai-creator.top/home/bg-before.jpeg) RECORDED OUTPUT [bg-after.png · 637 × 1024 transparent PNG](https://ai-creator.top/home/bg-after.png) ARTIFACT INTEGRITY Input SHA-256 08e842c71ea6… · output SHA-256 280696bf9bfb… RECOVERED RUNTIME Recovered implementation: rmbg\_model\_quantized.onnx in a Web Worker with ONNX Runtime WASM SIMD. OBSERVED MEASUREMENT Output alpha: 32.54% fully transparent, 16.62% partially transparent, 50.84% fully opaque. REVIEW METHOD Compare subject retention and alpha-edge behavior over contrasting backgrounds. SAMPLE LIMIT One portrait; no product, glass, fur or batch-throughput claim. REPRODUCE THE CHECK 1. Download the linked source image and open it in Background Remover. 2. Wait for a visible cutout, export the PNG and keep the untouched source beside it. 3. Review the whole silhouette at delivery size, then inspect hair, fingers and accessories at 100 percent over light and dark colors. 01 ### What the result supports The person, hair ornament, hand, clothing and most of the outer silhouette remain recognizable after the background is removed. The transparent output can be placed over a new background and is materially different from the source. 02 ### What the alpha channel records The published PNG is not a flattened preview. File inspection finds 32.54 percent fully transparent pixels, 16.62 percent partially transparent pixels and 50.84 percent fully opaque pixels. The substantial partial-alpha region is why hair and soft boundaries need review rather than a binary pass or fail. 03 ### What still needs review Fine hair against the original dark background is the hardest boundary. The right-side ribbon and dark wisps retain soft or uneven pixels, while some delicate details around the hair ornament are simplified. Check those areas over both a light and dark test color, and reject the export if the new background shows through solid subject areas. 04 ### A failure signature worth rejecting A dark halo over a light destination background means old-background color survived in partially transparent pixels. A pale cut line over a dark destination means the mask removed too much edge color. Either defect is easier to see after compositing than on a checkerboard. **REVIEW BOUNDARY** The two files have different pixel dimensions, so this comparison evaluates segmentation and edge behavior—not sharpness, scale retention or identity accuracy. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/remove-unwanted-objects-from-photos/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # How to Remove Unwanted Objects from Photos Without Making the Edit Obvious AI object removal combines a user-painted mask with image completion. The goal is not simply to erase pixels: the replacement must continue nearby texture, lighting and perspective convincingly. Small distractions on simple backgrounds are easier than large subjects that cover unique details. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![How to Remove Unwanted Objects from Photos Without Making the Edit Obvious visual guide](https://ai-creator.top/resources/articles/object-removal.webp) ## Paint a precise mask Cover the complete unwanted object, including shadows or reflections that belong to it, but avoid masking unrelated edges. A slightly expanded mask gives the model enough room to blend. Very broad masks force it to invent more of the scene and usually reduce reliability. Test the actual run ## Work from simple to complex Remove isolated objects first and review each result before continuing. Walls, sky and soft ground textures are predictable; faces, hands, text, architecture and repeated patterns are more difficult. Several focused edits are often safer than one enormous selection. ## Check texture and perspective Zoom out to judge whether the replacement fits the scene, then inspect at full resolution for repeated patches, blurred seams and bent lines. Compare the direction of floorboards, tiles, shadows and highlights with surrounding areas. ## Diagnose a failed reconstruction If an edit looks artificial, undo it rather than repeatedly processing the same damaged result. Reduce the mask, begin from a cleaner boundary and remove the object in logical pieces. A replacement often fails because the selected region contains too little surrounding evidence, crosses a unique line or asks the model to reconstruct hidden content that cannot be inferred. In those cases, a manual clone or crop may be more honest and reliable. Test the actual run ## Use edits responsibly Object removal can improve composition, but it can also change the meaning of documentary or news imagery. Keep an original file, disclose material edits where accuracy matters and never use the tool to misrepresent evidence or remove ownership marks without permission. OBJECT REMOVAL LAB · SEPTEMBER 7, 2026 ## A spoon that stayed, and a small flare that disappeared These two new runs test different editing decisions. The coffee photograph deliberately uses an incomplete spoon mask; the rocket photograph uses a short stroke over one small glare. Both completed on the production [Object Remover](https://ai-creator.top/photomodify/) and exported PNGs. Completion is separate from acceptance: the first still fails its brief, while the second needs close inspection where the glare crossed a thin structure. The runs used the in-app browser on macOS arm64 during approximately 13:38–13:46 China Standard Time. That is an observation window, not an inference-time benchmark. The recovered MI-GAN worker/model were in use, before the newer progress-status patch. Model and worker fingerprints are in the [run record](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/run.json). ### Coffee: painting the bowl did not remove the spoon [![Original coffee cup and saucer with a reflective spoon on the right](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png)](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png) Unchanged source · [download](https://ai-creator.top/resources/evidence/2026-09-07/images/coffee.png). [![Partial spoon-removal result: dark mottled bowl shape and reflective outline remain](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/coffee-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/coffee-output.png) Untouched browser export · [download PNG](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/coffee-output.png). The intended delivery was a spoon-free coffee image. With brush radius 30, two strokes covered the bowl region but omitted much of the handle and related reflections. The exported bowl becomes darker and mottled; its metal rim and spoon-shaped silhouette remain readable. The handle above and alongside the cup still identifies the object. Bright reflected shapes on the cup also survive. This is a useful failure because the operation returned an image without fulfilling the task. A smaller bright highlight is not equivalent to a missing spoon. For another attempt, I would trace the entire visible spoon, inspect its reflection separately, and check that the replacement follows the saucer's curvature and glossy texture. That is a proposed next edit, not a result established by these two strokes. ### Rocket: inspect the structure after removing its light [![Original launch image with a small bright flare near the outer left tower at source pixel 81,350](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg)](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg) Unchanged source · [download](https://ai-creator.top/resources/evidence/2026-09-07/images/rocket.jpg). [![Saved repair with the small left flare removed while the tower silhouette and central rocket remain](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/rocket-output.png)](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/rocket-output.png) Untouched browser export · [download PNG](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/rocket-output.png). The target was the small star-shaped flare on the outer left tower, around pixel (81,350), not the larger lamps along the bottom. A radius-15 stroke ran from (81,347) to (82,354). An earlier misplaced mask was undone; only the final calibrated operation's saved export is shown. The glare disappears, while the tower's main line, the central rocket and the other lamps remain recognizable. At the repaired point, the replacement has lower contrast. Follow the thin vertical member through that patch and compare the nearby lattice: removing a dazzling spot can expose an unconvincing continuation. This is usable as a small decorative repair at display size; the source cannot establish what the obscured tower detail actually looked like. ### The coordinates are a record, not a saved mask For coffee, the recorded screen drags were (422,440)→(428,492) and (409,453)→(424,483). Its displayed canvas began at (85,204), measured 562.5×375 CSS pixels and had a 1125×750 backing store. Mapping to the 600×400 source gives approximately (359.47,251.73)→(365.87,307.20) and (345.60,265.60)→(361.60,297.60). The [full record](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/run.json) also preserves the rocket canvas geometry. We did not export either pixel mask or every intermediate pointer sample. Drag endpoints and brush settings support an approximate manual rerun; they do not guarantee identical antialiasing, mask resampling or output bytes. ### A color profile can masquerade as a large edit The rocket JPEG embeds Adobe RGB (1998), while its exported PNG has no ICC profile. Comparing their raw channel values flags 106,601 pixels at a difference threshold of 16. Converting the source to sRGB in memory first reduces that count to 517, concentrated around the repaired light. The published image files were never transformed for this measurement. Profile-aware comparison of the same-size files | Case | Pixels differing by ≥16 in any RGB channel | Difference bounds \[x0,y0,x1,y1) | | --- | --- | --- | | Coffee · 600×400 | 5,579 | 317, 222, 396, 336 | | Rocket · 640×427 | 517 | 67, 333, 96, 369 | These counts locate changes; they are neither mask area nor reconstruction accuracy. Browser/Pillow decoding and color conversion can also differ. Download the four images and [measurement script](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/measure-artifacts.py) into one folder, install Pillow and NumPy, then run `python3 measure-artifacts.py`. It writes JSON measurements and hashes, never images. [Full measurements and color assumptions](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/measurements.json) · [SHA-256 manifest](https://ai-creator.top/resources/evidence/2026-09-07/image-workflows/inpainting/manifest.json). To repeat the editing, upload the original file, apply the recorded brush operation, run once and save before retouching. Judge the whole object and adjacent structure before accepting the export. Sources: [Rachel Michetti's coffee photograph, courtesy of Pikolo Espresso Bar, CC0](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee); [SpaceX's Falcon 9/DSCOVR photograph, public domain](https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.rocket), distributed by scikit-image. [Source provenance and registry hashes](https://ai-creator.top/resources/evidence/2026-09-07/images/sources.json). New material consists of the recorded edits, unchanged exports, measurements and review. REFERENCE ## Frequently asked questions Why does the filled area look blurry? The model may not have enough nearby structure to reconstruct a convincing texture. Should the mask include the shadow? Yes, when the shadow clearly belongs to the removed object. Can it remove text? It may remove text, but rebuilding structured backgrounds behind it can be difficult. Should I keep the original? Always keep an untouched source for comparison and future edits. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Browser-Based Image and Video Repair**Understand the rights and restoration boundaries.](https://ai-creator.top/resources/remove-watermarks-from-images-and-video-in-browser/)[**Remove a Background Locally**Compare a real source and transparent output.](https://ai-creator.top/resources/remove-image-background-locally/)[**Follow One Wikimedia Image Into a Saved Video Project**Compare the source fields retained by a main image and an overlay.](https://ai-creator.top/resources/open-media-library-inside-browser-video-editor/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [AI Object Remover →](https://ai-creator.top/photomodify/) OBSERVED OUTPUT / OBJECT REMOVAL ## One marked distraction, one inspectable repair The before image marks a pedestrian on the right side of the street scene in red. In the after image, that marked figure is absent and the surrounding storefront and pavement are reconstructed. The pair is useful precisely because the repaired area can be checked against nearby lines and texture. ![Portrait with a pedestrian on the right marked in red for removal](https://ai-creator.top/home/brush-before.jpg) BEFORE 626 × 936 px ![Portrait after the marked pedestrian has been removed from the street background](https://ai-creator.top/home/brush-after.jpg) AFTER 622 × 934 px EVIDENCE RECORD FIELD TEST ID INPAINT-2026-09-04-01 STATUS Available / public browser workflow WORKFLOW [Open Object Remover](https://ai-creator.top/photomodify/) TEST INPUT [brush-before.jpg · 626 × 936 JPEG](https://ai-creator.top/home/brush-before.jpg) RECORDED OUTPUT [brush-after.jpg · 622 × 934 JPEG](https://ai-creator.top/home/brush-after.jpg) ARTIFACT INTEGRITY Input SHA-256 6ee70edbb1ed… · output SHA-256 44d4f24171a2… RECOVERED RUNTIME Recovered implementation: migan\_pipeline\_v2.onnx in a two-thread ONNX Runtime WASM Worker. OBSERVED MEASUREMENT Output is 4 px narrower and 2 px shorter; review is visual, not a pixel-aligned benchmark. REVIEW METHOD Evaluate one marked repair by following lines, texture, brightness and blur through the edited region. SAMPLE LIMIT One pedestrian-sized repair in a street scene; no claim for faces, text, watermarks or documentary restoration. REPRODUCE THE CHECK 1. Download the marked source and open it in Object Remover. 2. Cover only the marked pedestrian, run the repair and export the resulting image. 3. Compare storefront and pavement continuity at normal size and 100 percent; reject a patch with repeated or mismatched texture. 01 ### What the result supports The marked pedestrian is removed while the foreground portrait remains substantially unchanged. The edit reconstructs enough of the sidewalk and storefront to make the distraction less noticeable at ordinary viewing size. 02 ### What cannot be claimed The pair does not prove what was truly behind the pedestrian; that region is generated from surrounding context. Small differences in dimensions and compression also prevent a pixel-for-pixel quality claim. The result should not be described as recovery of hidden evidence. 03 ### How to review the repair Follow the storefront edge into the repaired area and out the other side. Repeat for curb direction and pavement texture, then compare blur and brightness across the boundary at normal size and 100 percent. Removing the pedestrian is only acceptable if the fill also fits its surroundings. 04 ### A failure signature worth rejecting Repeated bricks, doubled poles, a locally smoother patch or a sudden change in JPEG texture can expose the fill. If one large mask produces these symptoms, divide the repair into smaller passes and preserve more surrounding context between runs. **REVIEW BOUNDARY** The red overlay identifies the requested edit and is not a model artifact. This example supports a limited object-removal workflow; it does not justify removing watermarks, disclosures or material facts from documentary images. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/remove-watermarks-from-images-and-video-in-browser/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) LOCAL RESTORATION · MI-GAN WEBGPU # Removing Watermarks from Images and Video, Frame by Frame Removing a mark from one photograph and removing it from a moving video look like different products. In Timeline Studio they share one carefully bounded operation: select a region, reconstruct only that region with MI-GAN, feather it back into the original pixels and keep the result editable. Video adds a second clock. Each repair region has a time range, a moving box can be described with position keyframes, every source frame is repaired locally, and FFmpeg.wasm composes the sequence back into an MP4 with the available source audio. This is not a universal eraser. It is a local restoration workflow for media you own or are authorized to modify, with previews, cancellation and explicit limits instead of an unexplained one-click promise. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Jul 27, 2026 · **PRACTICAL GUIDE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Removing Watermarks from Images and Video, Frame by Frame visual guide](https://ai-creator.top/resources/articles/browser-migan-watermark-repair.webp) ## The feature is inpainting, not a blur brush A blur, crop or opaque patch can hide a watermark, but it also advertises that something was covered. Timeline Studio takes a different path. The selected pixels become unknown input to a compact MI-GAN generator, while nearby visible pixels provide context for reconstructing plausible color and texture. The current model is a 256-pixel ONNX generator loaded in a dedicated Worker and executed through ONNX Runtime Web's WebGPU provider. The browser downloads a pinned model revision, stores it in Cache Storage and reuses the session for later frames. No source image or video is sent to a repair service by this code path. Model files still have to arrive from a configured Hugging Face or ModelScope mirror, but inference runs on the user's device. Test the actual run ## One normalized box works at every source resolution The repair dialog stores each selection as x, y, width and height values between zero and one. That makes the same region independent of the preview element's CSS size. At inference time, the selection is converted into integer source pixels and a one-byte mask is filled only inside that rectangle. Normalized geometry also matters for video: a 23-percent-wide box means the same thing while the interface is resized or the frame is sampled at another moment. The UI clamps minimum size and keeps the box inside the picture. Users can draw, move and resize a region, choose a corner preset, maintain several regions and undo or redo region edits without touching the underlying clip. ## The model sees a crop, not an unnecessarily shrunken frame Sending a complete 4K frame into a 256-pixel network would discard most of the evidence around a small corner mark. The Worker first finds the mask bounds, then creates an inference crop centered around them. It adds roughly 192 pixels of context and chooses a crop at least 512 pixels wide and high when the source allows, rounded to a multiple of 256. That crop is sampled down to the model's 256 by 256 input. The first channel tells MI-GAN which pixels are known; the remaining channels carry normalized RGB values multiplied by that known-pixel mask. After inference, the result is sampled back to the crop's source resolution. This does not invent lost detail, but it spends the model's limited input area on the neighborhood that can actually explain the hole. ## Only the selected region is composed back The generator returns a complete crop, yet the application does not replace that whole crop. It extracts only the requested rectangle and leaves all other original pixels intact. Along the rectangle boundary, a smoothstep feather blends reconstructed and original RGB values. Feather width adapts to the smaller side of the selection, with a practical range from six to thirty-six pixels. The blend becomes fully reconstructed away from the edge and increasingly original near a boundary that has surrounding pixels. This reduces the hard seam that a raw rectangular paste would create. The image path also measures changed-pixel ratio and mean channel delta, then reports the composed change rather than assuming any model output is automatically useful. ## Images stop after one frame—and remain reversible For an image, Timeline Studio captures the current bitmap, applies every active region in sequence and produces a PNG preview. A draggable divider lets the editor compare before and after at the same scale. Applying the result creates a new user asset and replaces the selected visual's active source, but the segment's repair metadata preserves the original source, blob, dimensions, source timing and track-frame information. The chosen regions, backend and processed result are recorded alongside it. This is an important product boundary: local AI repair becomes another editable project state rather than destroying the original upload. If the context reconstruction looks wrong, the editor can revise the mask or return to the preserved source. ## Video adds time ranges before it adds frames A watermark may appear only during an intro, disappear behind a cut or move to another corner. Applying one mask for an entire clip wastes inference and can erase legitimate content. Each video region therefore carries its own start and end time. The repair timeline displays those intervals independently, supports dragging either boundary or moving the whole interval, and allows multiple simultaneous regions. During processing, a frame is repaired only when its clip-local timeline time falls inside at least one interval. Frames outside all active ranges are captured unchanged. This temporal gate is both an editorial control and a performance control: it makes the request describe when an object should be absent instead of treating every decoded frame as identical. ## Position keyframes track a moving target A fixed logo needs one rectangle. A moving overlay needs a path. For each timed region, the dialog can record selection keyframes at different clip-local times. The processor sorts those points and, for every frame between two of them, linearly interpolates x, y, width and height. Before the first point it holds the first box; after the last it holds the final box. This is deliberately simpler than optical flow or object tracking. It gives the editor direct, inspectable control and avoids claiming that the system can discover any moving watermark automatically. The practical workflow is to place keyframes at meaningful changes in position, size or direction, preview representative frames, and add another point where interpolation no longer follows the target closely. ## Source time, timeline time and playback rate stay separate Video repair must respect non-destructive edits already applied to a clip. Timeline Studio reads sourceStart, sourceDuration and playbackRate from the selected segment. It seeks the media element to sourceStart plus the local source-frame time, while region ranges and position keyframes live in clip-local timeline time. The conversion is timeline time equals local source time divided by playback rate. This prevents a trimmed clip from accidentally repairing the beginning of its original file, and it keeps a sped-up clip's repair intervals aligned with what the editor sees. The output frame count is derived from the retained source duration and a clamped frame rate; the current UI requests twenty-five frames per second. ## Every active frame passes through the same image repair core The video loop does not contain a second inpainting implementation. It seeks the source video, creates an ImageBitmap for the current frame, resolves all regions active at that moment and calls the same repairMiganFrame function used for still images. When several regions overlap the same frame, the repaired Blob from one pass becomes the bitmap for the next. The UI can display each completed frame while progress advances, and an AbortController can stop decoding, inference and encoding. Reusing one core keeps mask construction, crop logic, MI-GAN preprocessing, feathering and diagnostics consistent across image and video. The media-specific code is responsible for clocks and composition, not for inventing different repair semantics. ## FFmpeg.wasm turns PNG frames back into an MP4 The current compositor asks the frame producer for every output PNG, writes the sequence into FFmpeg's in-memory filesystem and encodes H.264 with a veryfast preset, CRF 18, yuv420p and faststart. When the source Blob is available, it writes that media as a second input, trims audio using the selected source start and duration, maps the optional audio stream, encodes AAC at 192 kbps and uses shortest to keep streams bounded. The result is an MP4 Blob. Temporary frame files, audio input and output are deleted afterward; cancellation terminates the FFmpeg instance and clears the cached loader. This is portable browser composition, but it is not free: accumulating PNG frames can consume substantial memory on long or high-resolution clips. ## Applying creates a new asset instead of hiding the operation After video processing, the dialog does not immediately overwrite the timeline. It presents the repaired clip as a comparison preview and enables Apply Video only when a composed result exists. Applying creates a named MP4 user asset, swaps the selected segment to the new Blob URL and stores repair metadata containing the original and processed sources, regions, backend, frame rate and frame count. Source timing resets to the new media because the encoded result already represents the retained source range. The full selected visual duration remains part of the editable project. This two-stage process—process, review, then apply—matters when a reconstruction can look plausible on one frame but shimmer or reveal a seam in motion. ## The honest limits are visible in the architecture MI-GAN reconstructs plausible surroundings; it cannot recover the exact pixels that existed before a watermark was added. Large masks, faces, typography, hands, fences and highly regular patterns can expose incorrect synthesis. The 256-pixel model and nearest sampling limit fine detail, while independent per-frame inference can produce temporal inconsistency because the network has no memory of the previous frame. Position keyframes move the mask, not the generated texture. WebGPU availability, model download, GPU memory, video seeking and FFmpeg.wasm memory all affect whether a device can finish. There is currently no automatic watermark detector or semantic object tracker. These limits make preview and full playback part of the workflow, not optional polish. Name the limit clearly ## Removal capability does not grant removal rights A watermark often communicates ownership, licensing, attribution or provenance. A tool that can reconstruct pixels does not cancel those obligations. Appropriate uses include cleaning your own exported draft after changing the overlay workflow, removing an accidental timestamp from footage you created, restoring licensed archival material under an agreement, or removing an object from personal media. It should not be used to strip attribution, evade a stock provider's license, disguise another creator's work or misrepresent provenance. Keep the original project and license evidence, disclose material alteration when context requires it, and prefer obtaining an authorized clean source whenever one exists. The technical design is local-first; responsible use still depends on the editor. REFERENCE ## Frequently asked questions Does Timeline Studio upload my image or video for watermark removal? The MI-GAN inference and frame composition paths run in the browser. A pinned model file must be downloaded from a configured mirror, but this implementation does not send the source media to a repair API. Can it process both images and videos? Yes. Images are repaired as one or more masked frames and saved as PNG assets. Videos reuse the same frame repair core, apply timed regions across decoded frames and compose an MP4. Can it follow a moving watermark? The editor can record position and size keyframes for a repair region. The processor linearly interpolates the box between keyframes; it does not currently perform automatic tracking. Does video repair preserve audio? When the selected source Blob contains audio, the compositor maps an optional source audio stream, trims it to the repaired source range and encodes it as AAC in the MP4. Why can repaired video flicker? MI-GAN evaluates frames independently and has no temporal consistency model. Complex texture can therefore vary slightly from frame to frame even when the mask path is accurate. Will it recover the exact original pixels? No. Inpainting synthesizes a plausible replacement from surrounding context. The pixels hidden by the original mark are not available to the model. Is any watermark legal to remove? No. Only alter media you own or have permission to modify. Removing attribution or license marks from another creator's work may violate rights or terms even when the software can do it. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Remove Unwanted Objects from Photos**Review a marked repair against nearby texture and lines.](https://ai-creator.top/resources/remove-unwanted-objects-from-photos/)[**Browser AI Privacy: Source Review and Checks**Trace the reviewed file path and use the network inspection worksheet.](https://ai-creator.top/resources/browser-ai-privacy-explained/)[**FFmpeg Media Pipelines for Web Playback**Separate demuxing, decoding, compatibility and export.](https://ai-creator.top/resources/ffmpeg-web-player-media-pipeline/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Try local AI repair in Timeline Studio →](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[Privacy](https://ai-creator.top/privacy/)[Terms](https://ai-creator.top/terms/)[Cookies](https://ai-creator.top/cookies/)[Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices)[About](https://ai-creator.top/about/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/video-editing-agent-transaction-boundary-deepseek-harness/ [AI Creator](https://ai-creator.top/)[Resources / Field Notes](https://ai-creator.top/resources/) Pinned source · Runner replay · September 8, 2026 # A video-editing Agent needs a transaction boundary. [dsh-timeline-studio-plugin](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/src/index.js) connects DeepSeek Harness to Timeline Studio without pretending that a language model should manipulate a project by intuition. Its source defines seven narrow tools that delegate inspection, diff, writes and rendering to Timeline Studio. This review replays six runner-boundary tests and distinguishes those new results from the upstream historical render report. Published August 18, 2026 Reviewed September 8, 2026 By Martin Delophy Open source · Agent architecture · Video editing BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Aug 18, 2026 · REVIEWED Sep 8, 2026 · **ENGINEERING FIELD NOTE** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![Concept illustration of the plugin connecting project inspection, timeline operations and intended MP4 verification; not a recorded test result](https://ai-creator.top/resources/articles/dsh-timeline-studio-plugin-transaction-boundary.webp) Concept illustration of the intended inspect, diff, apply and render workflow. It is not a screenshot or retained artifact from the Harness E2E test. **THE SHORT VERSION** An editing Agent should not own the editor's rules. It should express intent through a small, testable contract while Timeline Studio remains responsible for project truth. 01 ## This is an action bridge, not another editor The tempting way to integrate an Agent with a video editor is to build a second editing surface around the model: another panel, another representation of tracks, another set of partial rules. That is also how three versions of the same product logic begin to drift apart. The plugin takes a thinner position. DeepSeek Harness owns discovery, validation, cancellation and model-facing results. The plugin launches Timeline Studio's command runner. Timeline Studio owns project parsing, edit validation, transactional writes and rendering. The plugin is mounted inside Harness and does not add a separate visual panel. It also bundles the `edit-timeline-studio` Agent Skill, so the model receives both the tools and the operating guidance required to use them responsibly. The browser editor remains the place for visual preview, WebGPU features and composition that still needs direct human judgment. DeepSeek HarnessDSH pluginTimeline command layer.timeline + MP4 A thin adapter is easier to trust because there is one implementation of editing semantics—not one in the editor, one in a plugin and one hidden in prompts. Keep the edit reversible 02 ## Seven tools are enough when their boundaries are honest The [seven tool definitions at commit `201ccc5`](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/src/index.js#L26-L88) keep the model-facing API small. Four read tools inspect a project, track, clip or transcript. One previews a semantic project diff. One applies a batch. One renders. That separation gives the Agent a predictable rhythm: understand before proposing, preview before writing and verify after changing. **project\_inspect**Read dimensions, revision, tracks and portable project structure. **track\_inspect**Examine one track without expanding the entire archive. **clip\_inspect**Resolve stable clip identity, timing and source offsets. **transcript\_inspect**Read speech evidence needed for caption and editorial decisions. **project\_diff**Run the real command registry as a dry run without writing output. **project\_apply / render**Apply a validated batch, then produce and verify the supported MP4. A dry run matters only if it exercises the same reducers and revision rules as the real write. The [adapter forwards diff and apply](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/src/index.js#L62-L76) to `project.diff` and `project.run`; it does not implement a second reducer. The separate [September 7 CLI case](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/) compares an actual preview with a saved write. That case does not run the Harness adapter. Also, “diff before apply” is guidance in the tool description: this adapter does not retain a token proving a previous diff succeeded. Every tool answers one stage of the workflow and can fail before a destructive ambiguity becomes a file. 03 ## The transaction begins with revision and identity Editing is retry-heavy. An Agent call may time out after the command has already written a result. A user may change the project between inspection and apply. Without explicit identity, a retry can move the same clip twice; without a base revision, an apparently valid plan can overwrite a newer edit. The plugin uses both. A successful non-empty operation batch increments the project revision once. Reusing an already-applied operation ID is an idempotent no-op. A stale base revision carrying new operations fails. If validation or any operation fails, the batch does not leave a half-edited archive behind. Source projects are not overwritten by default; a new editable project becomes the result. The [separate CLI handoff record](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/report.json) verifies revision one, a repeated operation ID producing no new edit, and a stale new operation returning `REVISION_CONFLICT`. It uses Timeline Studio commit `68980d1` directly, so it is supporting evidence for the command layer, not a rerun of the historical Harness test. For this plugin review, inspect the [fixed `201ccc5` snapshot](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/tree/201ccc563bcbccac6f5a0b88fc2b138495dc6e08) rather than a moving branch. Idempotency and optimistic concurrency are ordinary backend ideas. In Agent-controlled creative software, they separate a retry from an accidental second edit. 04 ## The filesystem boundary is part of the product A path argument is not permission. The plugin's `allowedRoots` setting is a real filesystem boundary for project, plan, output and asset paths. The [runner resolves real paths and checks project, imported-asset and output paths](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/src/command-runner.js#L21-L121). Existing output symlinks are rejected and new output parents are canonicalized. These are the path cases exercised below; this is not a complete security audit of arbitrary archive contents or filesystem races. Cancellation is visible in the [child-process call](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/src/command-runner.js#L124-L144): the runner passes the supplied `AbortSignal` to Node `execFile` and converts an abort into a canceled error. This review does not test cancellation or prove that every descendant FFmpeg process terminates. A separate executed case below verifies conversion of a deliberate `ok:false` child response into an error. “Local-first” is incomplete without an enforceable root. A local process with unrestricted paths is not a privacy boundary. 05 ## Six runner checks have a replayable record On September 8, 2026, we ran six unchanged tests from [the pinned upstream command-runner suite](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/test/command-runner.test.js). They call the real runner against the test file's synthetic child CLI. That child echoes arguments or deliberately returns `INVALID_PROJECT`; it does not load Timeline Studio's command engine. **6**runner checks executed and passed **1**registration test excluded by name **0**Harness E2E runs in this review The passing cases cover command/path forwarding, an out-of-root project, an out-of-root output, an out-of-root imported asset, an output symlink, and a structured child error. The [run report](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/results/report.json) records Node 22.14.0 on macOS arm64, exit status zero and six passed tests. The [unaltered TAP log](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/results/stdout.tap) lists each result. The full plugin declares Node 22.20+ or 24+; this isolated runner check does not establish full-plugin compatibility on the older runtime. Download the [complete reproduction kit](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/deepseek-harness-runner-kit.zip), check [its checksums](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/SHA256SUMS), then run `node reproduce.mjs ./my-run`. The [method and limitations](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/README.md) explain the exact name filter and synthetic child boundary. The [source manifest](https://ai-creator.top/resources/evidence/2026-09-08/deepseek-harness/source-manifest.json) pins every included file. No account, package installation, model, API key or network call is needed. The registration test that imports `dsh-tools` is omitted; Cordis, media import, cancellation and rendering are not exercised. ## The old MP4 result remains a historical report The [upstream testing document](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/docs/testing.md#L32-L42) reports seven unit tests and one Harness/Cordis E2E pass on August 15, 2026, using Node 24.11.1, Harness rc.6, Cordis 4.0.1 and FFmpeg 8.0.1. It also explicitly says that generated media lived in the OS temporary directory and were not retained in the repository. No original run log or MP4 was available in the checked snapshot. Those counts are therefore attributed historical claims, not independently verified results from this review. The [actual E2E definition](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/test/deepseek-harness.e2e.test.js#L48-L75) creates a one-second synthetic blue visual, imports it, changes the ratio, inspects the result and requests a 180×320 render. Its [media assertions](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/test/deepseek-harness.e2e.test.js#L129-L138) expect `hasAudio: false`, a nonempty MP4, positive duration and matching dimensions. They do not fully decode the MP4 or test an audio stream. Finding these assertions establishes what the test is written to check, not whether that historical run passed. A different, retained example is the [September 7 archive-and-render case](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/). Its [record](https://ai-creator.top/resources/evidence/2026-09-07/editorial-workflows/results/report.json) covers a six-second 180×320 slate-and-tone MP4, byte-preserved archive entries and full FFmpeg decoding. It executes the Timeline Studio CLI directly, without Harness or Cordis. It must not be presented as the missing artifact from the August plugin test. The evidence has three distinct scopes: current runner execution, fixed-source inspection and an upstream historical E2E report. Only the first has a new execution log here. Keep the human check 06 ## The durable outcome is an editable project The most important design choice is not technical. The plugin does not reduce video editing to “prompt in, MP4 out.” The rendered video is a deliverable; the versioned `.timeline` archive remains the record a person can reopen, review and change. That is why inspection, diff and apply are first-class tools instead of hidden implementation steps. The intended workflow is concrete: inspect current state, preview a plan, write a new editable project and verify the output media. This review establishes a bounded part of that workflow and publishes enough source and execution detail to repeat it. A current full Harness integration still needs its own retained run and media artifacts. The Agent is a collaborator at the boundary. It is not the source of truth for the project, the filesystem or the final media. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Edit a Timeline Archive Without Losing Its Media**Compare preserved archive bytes, a native render and a rejected caption.](https://ai-creator.top/resources/edit-timeline-project-file-before-browser-render/)[**One Video-Editing Plan Across Agent Channels**Inspect one committed move, its retry and a stale new request.](https://ai-creator.top/resources/one-video-editing-skill-across-agent-channels/)[**A Generation Plugin Should Return Media**Keep provider adapters outside timeline ownership.](https://ai-creator.top/resources/browser-video-editor-generation-plugin-media-boundary/) ## Questions people ask Is this another video editor? No. It is an action bridge for DeepSeek Harness. Timeline Studio remains the editor and owns deterministic project operations and supported rendering. Why does the Agent need both diff and apply? The diff is a real semantic dry run over the current project. It gives the Agent and user a reviewable preview before the same command registry writes a new archive. What happens if the project changes before apply? A plan with a stale base revision and new operation IDs fails. Previously applied operation IDs are idempotent no-ops, which makes retries safer. ## Inspect the bridge. Keep the project editable. [Inspect the pinned test record](https://github.com/MartinDelophy/dsh-timeline-studio-plugin/blob/201ccc563bcbccac6f5a0b88fc2b138495dc6e08/docs/testing.md)[Open Timeline Studio](https://video-editor.ai-creator.top/) **AI Creator**[Resources](https://ai-creator.top/resources/)[About](https://ai-creator.top/about/)[Privacy](https://ai-creator.top/privacy/)[Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/resources/whisper-transcription-workflow/ [AI Creator](https://ai-creator.top/)/[Resources](https://ai-creator.top/resources/) PRACTICAL GUIDE # A Practical Workflow for Browser-Based Whisper Transcription Automatic transcription turns speech into editable text, but the first draft should be treated as an assistant rather than an authoritative record. Audio quality, accents, overlapping speakers, specialist vocabulary and background noise all affect accuracy. A structured review process is more important than choosing a model and accepting its first output. BY [Martin Delophy](https://ai-creator.top/about/) · PUBLISHED Jul 27, 2026 · REVIEWED Sep 7, 2026 · **OBSERVED OUTPUT** · [TESTING METHOD](https://ai-creator.top/about/#testing-method) · ![A Practical Workflow for Browser-Based Whisper Transcription visual guide](https://ai-creator.top/resources/articles/whisper-transcription.webp) TRANSCRIPTION LAB · SEPTEMBER 7, 2026 ## 29.4 seconds, one reference, and every correction exposed The earlier 3.5-second Mandarin sample establishes only that the pipeline returned text. This longer English reading adds a reference transcript, the unedited browser result, an explicit scoring rule and a correction trail. The reference comes from the LibriSpeech corpus; it is not another model's answer and we do not claim a new independent human annotation. [audio sample](https://ai-creator.top/resources/evidence/2026-09-07/audio/librispeech-1272-128104-0004.wav) LibriSpeech dev-clean · 1272-128104-0004 · 29.400 seconds · 16 kHz mono. Download the [tested WAV](https://ai-creator.top/resources/evidence/2026-09-07/audio/librispeech-1272-128104-0004.wav) or [source FLAC](https://ai-creator.top/resources/evidence/2026-09-07/audio/librispeech-1272-128104-0004.flac). ### Rechecked on the public website A separate September 7 check opened the public [Whisper page](https://ai-creator.top/whisper/), loaded this exact recording through its audio-URL control, selected English and reached “Transcript ready — review against audio”. The [untouched hosted result](https://ai-creator.top/resources/evidence/2026-09-07/public-browser-check/whisper-draft.txt) matches the local draft below, including its unsupported extra ending and 38.24% sample WER. This confirms that one hosted URL-input task completed. Cache was not cleared, and the local-file picker and cold-start speed were not verified. Read the [separate public-browser record](https://ai-creator.top/resources/evidence/2026-09-07/public-browser-check/run.json) for those limits. ### The language selector uncovered a real defect The recovered interface displayed language choices but did not send the selected value to its worker. The worker always requested Chinese. The September 7 fix sends the selected language, waits for the complete model pipeline before enabling transcription, and releases the busy state after an error. The recorded English result below was collected after that fix. The separate short Mandarin result remains a historical observation. Environment Codex in-app browser on macOS arm64; local static preview served at 127.0.0.1:4173. Execution The visible Whisper tool loaded the WAV through its file chooser, English was selected, and the output was captured from the rendered transcript. This is a local browser run of the release preview, not a server-side recognizer. Model and settings Local quantized Whisper tiny; English; transcribe; 30-second chunks; 2-second stride. No remote transcription service. Sample score 26 word edits / 68 reference words = 38.24% WER under the published normalization. This is one sample, not a general accuracy claim. ### Unedited browser draft > The Nils pictures are sort of upguards and add them paintings, and Mason's exquisite Idols are as national as a jingle poem. Mr. Burke at Foster's Landscapes, smile at one much in the same way that Mr. Parker used to flash his teeth. And Mr. John Collier gives his sitter a cheerful slap in the back, before he says, like a shampooper and a Turkish bath. Next man, and people are gonna talk about next man [Download the untouched model draft](https://ai-creator.top/resources/evidence/2026-09-07/audio/hypothesis.txt) ### Corpus reference transcript > LINNELL'S PICTURES ARE A SORT OF UP GUARDS AND AT EM PAINTINGS AND MASON'S EXQUISITE IDYLLS ARE AS NATIONAL AS A JINGO POEM MISTER BIRKET FOSTER'S LANDSCAPES SMILE AT ONE MUCH IN THE SAME WAY THAT MISTER CARKER USED TO FLASH HIS TEETH AND MISTER JOHN COLLIER GIVES HIS SITTER A CHEERFUL SLAP ON THE BACK BEFORE HE SAYS LIKE A SHAMPOOER IN A TURKISH BATH NEXT MAN [Download the corpus reference](https://ai-creator.top/resources/evidence/2026-09-07/audio/reference.txt). Its original uppercase spelling and word boundaries are retained for the reproducible score; a publication editor would still need to add punctuation and decide how to present names. What needs correction in this reading | Browser draft | Reference | Review implication | | --- | --- | --- | | The Nils | LINNELL'S | A painter’s name becomes two unrelated words. Verify names against the source, not fluent spelling. | | are sort of | ARE A SORT OF | Restore the missing article; even small omissions should stay visible in a literal transcript. | | upguards and add them | UP GUARDS AND AT EM | An unusual quoted phrase is merged and rewritten. Preserve the reference wording before adding editorial punctuation. | | Idols / jingle | IDYLLS / JINGO | Both substitutions produce plausible words but change the art criticism. | | Mr. Burke at Foster’s | MISTER BIRKET FOSTER'S | Resolve the full proper name. The scorer separately retains the Mr/mister spelling difference instead of hiding it. | | Mr. Parker | MISTER CARKER | Correct the surname. A familiar name can sound more convincing than the right one. | | Mr. John Collier | MISTER JOHN COLLIER | The name is retained; Mr/mister is a transcription convention counted by this strict scorer, not a different spoken meaning. | | slap in the back / shampooper and | SLAP ON THE BACK / SHAMPOOER IN | Restore the prepositions and the uncommon occupation word. | | Next man, and people are gonna talk about next man | NEXT MAN | Delete the unsupported extra ending. The result needs checking against the audio even after the recognizer reports completion. | [Download the reference-based corrected reading](https://ai-creator.top/resources/evidence/2026-09-07/audio/reviewed-transcript.txt). This version restores the corpus words and adds editorial case and punctuation. It is clearly separated from both the untouched model draft and the original scoring reference. ### Repeat the run and recompute the score 1. Download the tested WAV above and open [Whisper Transcription](https://ai-creator.top/whisper/). Wait until the model is ready, upload the WAV, choose English and start transcription. 2. Copy the whole returned draft before editing. Replay the audio while checking the proper names and unusual phrases against the supplied reference; keep disputed wording visible. 3. Download [the zero-dependency scorer](https://ai-creator.top/resources/evidence/2026-09-07/audio/score-transcript.mjs), the reference and your draft. Run `node score-transcript.mjs reference.txt hypothesis.txt`. The script lowercases text, removes punctuation, retains word boundaries and computes word-level Levenshtein edits. It does not silently expand “Mr” into “mister”. The scorer is scoped to this English sample: it keeps ASCII letters, digits and whitespace after normalization. It removes hyphens instead of creating new word boundaries and is not a general multilingual scoring recipe. [Full run record and corrections](https://ai-creator.top/resources/evidence/2026-09-07/audio/run.json) · [SHA-256 artifact manifest](https://ai-creator.top/resources/evidence/2026-09-07/audio/manifest.json) · [Recorded browser result](https://ai-creator.top/resources/evidence/2026-09-07/audio/browser-result.jpg) ### What this example does not establish This is a single clean English audiobook speaker, with several uncommon names. It does not establish meeting accuracy, speaker separation, noisy-room performance, Mandarin quality, timestamp alignment or processing speed on another device. A low sample error count would not make an unchecked quotation reliable. The useful deliverable is the audio together with a reviewed transcript and an explicit correction trail. Source: [LibriSpeech ASR corpus](https://www.openslr.org/12/), Vassil Panayotov, Guoguo Chen, Daniel Povey and Sanjeev Khudanpur, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Retrieved through [Hugging Face's fixed-revision test subset](https://huggingface.co/datasets/hf-internal-testing/librispeech_asr_dummy/tree/5be91486e11a2d616f4ec5db8d3fd248585ac07a). Audio was losslessly decoded from FLAC to PCM WAV; the corpus reference is unchanged. Our inference output, correction commentary and scorer are new. ## Prepare intelligible audio Use the cleanest recording available. Keep voices at a consistent level and reduce steady background noise when this can be done without distorting speech. Compressed audio can work, but repeated transcoding removes detail. For long recordings, splitting at natural topic boundaries can make review easier and reduce the memory required by a browser-based model. Listen before publishing ## Select language intentionally Automatic language detection is convenient, but short clips and multilingual speech can confuse it. Choose the known language when the interface supports that option. Names, product terms and abbreviations deserve special attention because common-language models may replace unfamiliar sounds with more probable words. ## Review against the recording Read the transcript while replaying the source. Correct names, numbers, dates, negations and statements that carry legal, medical or financial meaning. Mark uncertain passages instead of inventing a confident sentence. If timestamps are available, preserve them during editing so reviewers can return to the relevant audio quickly. ## Turn speech into readable text Spoken language contains repetitions, false starts and incomplete sentences. Decide whether the deliverable is verbatim, lightly cleaned or editorially rewritten. Do not silently present a rewritten summary as a verbatim quote. For captions, keep lines short enough to read, synchronize them with speech and include meaningful non-speech audio when accessibility requires it. Listen before publishing ## Consent and confidentiality Make sure participants know how a recording will be used and that you have the necessary permission to transcribe it. Local-first processing can reduce file upload, but the resulting transcript is itself sensitive and may be easier to search or share than the audio. Store and publish it accordingly. REFERENCE ## Frequently asked questions Is an AI transcript ready to publish? Not usually. Important names, numbers and quotations should be checked against the recording. Why does the first load take time? The browser needs to download and initialize speech-recognition model files. Can background music reduce accuracy? Yes. Music, echoes and overlapping speakers can obscure speech features. Should I keep timestamps? Yes, especially during review, because they make uncertain passages easier to verify. CONTINUE THROUGH THE EVIDENCE ## Related field notes [**Fix Audio Source Offsets After a Split**Keep source time correct through non-destructive edits.](https://ai-creator.top/resources/fix-audio-source-offset-after-timeline-split/)[**A Reviewable Browser Auto-Edit**See how candidate frames become an editable caption draft.](https://ai-creator.top/resources/browser-auto-edit-scene-detection-caption-rough-cut/)[**From a Creative Brief to a Checked Timing Change**Check a one-second audio move against its linked label and source.](https://ai-creator.top/resources/from-creative-brief-to-editable-video-timeline-skill/) AUTHOR ## Martin Delophy Independent full-stack and algorithm engineer in China with 10 years of frontend, AI and audio/video development experience, including 5 years focused on AI. His open-source work covers browser AI, ONNX, WebGPU, Transformers, Stable Diffusion and local-first creative tools. [About the author →](https://ai-creator.top/about/) Explore the system in practice [Whisper Audio Transcription →](https://ai-creator.top/whisper/) OBSERVED OUTPUT / SPEECH TRANSCRIPTION ## A browser transcript that can be checked against its source The recovered Whisper workflow was tested with the 3.5-second Chinese recording shipped with the site. The model initialized in the browser, accepted the decoded waveform and returned visible text rather than stopping at a progress indicator. TEST AUDIO / 3.5 SECONDS [audio sample](https://ai-creator.top/record.mp3) Chinese speech sample used for the browser transcription test EVIDENCE RECORD FIELD TEST ID WHISPER-ZH-2026-09-04-01 STATUS Available / public browser workflow WORKFLOW [Open Whisper Transcription](https://ai-creator.top/whisper/) TEST INPUT [record.mp3 · 3.5-second Chinese sample](https://ai-creator.top/record.mp3) RECORDED OUTPUT Visible draft transcript · quoted below ARTIFACT INTEGRITY Audio SHA-256 8ae871b52b1d… · MP3 · 44.1 kHz mono · 3.529 s · 57,722 bytes RECOVERED RUNTIME Recovered implementation: local models/whisper-tiny encoder and merged decoder through a quantized browser pipeline. OBSERVED MEASUREMENT Observed draft: ‘這是一旦測試英雄經典機工具覽開始操作’. No verified reference transcript, so no accuracy score is claimed. REVIEW METHOD Run the bundled audio through the browser workflow and compare every returned phrase with the recording. SAMPLE LIMIT One short Mandarin recording; no benchmark for accents, noise, long-form timing or other languages. REPRODUCE THE CHECK 1. Open the linked audio, listen once, then load the same file in Whisper Transcription with Chinese selected. 2. Wait for model initialization, decoding and visible transcript text rather than accepting a completed progress indicator alone. 3. Replay the recording while correcting names, numbers and uncertain phrases; treat this as one functional sample, not an accuracy benchmark. 01 ### What the run produced With Chinese selected, the interface returned the draft ‘這是一旦測試英雄經典機工具覽開始操作’. This is recorded as observed model output, not as a claim that every word matches the source. The attached audio lets a reviewer compare the draft with the actual speech. 02 ### What the result demonstrates The test exercises the real page, bundled sample, audio decoding, worker-based Whisper inference and visible transcript area. It shows that this short supported input reaches a completed output state. It does not prove accuracy across languages, accents, microphones or long recordings. 03 ### What the audio file establishes The linked test artifact is a 57,722-byte MP3 containing 3.529 seconds of 44.1 kHz mono audio. Its SHA-256 prefix is published in the evidence record so a future test can detect whether the source changed before comparing transcripts. 04 ### Why there is no accuracy percentage A word or character error rate requires a human-verified reference transcript and a documented normalization rule for script, punctuation and segmentation. This record publishes neither, so assigning a score would create false precision. The visible draft and playable source remain the evidence. 05 ### How to review a transcript Names, numbers and short technical terms can read smoothly while still being wrong. Replay each uncertain interval while following the draft, correct the wording and punctuation, and preserve ambiguity instead of guessing. A person should verify interviews, captions and consequential records against the source before reuse; keep that audio attached for later checks. **REVIEW BOUNDARY** This is one short functional sample, not a word-error-rate benchmark. Model output is probabilistic and may change with model versions, browser runtime, language selection and audio preprocessing. **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/) --- Source: https://ai-creator.top/terms/ # Terms of Service Terms governing access to and use of AI Creator browser-based tools. ## Acceptance By accessing AI Creator, you agree to these terms. If you do not agree, do not use the service. ## Service AI Creator provides browser-based image, audio, video and design utilities. Features may change, be unavailable on some devices or require model downloads. The service is provided without a guarantee of uninterrupted availability. ## Your content You retain responsibility for files and instructions you use with the service. You must have the rights and permissions required to process, modify and export that content. ## Acceptable use Do not use the service for illegal activity, infringement, harmful deception, unauthorized surveillance, malware, abuse, or attempts to disrupt the website or other users. Do not process highly sensitive information unless you have independently assessed the risks. ## AI results AI-generated or AI-modified results may be incomplete, inaccurate or unsuitable for a particular purpose. Review outputs before publication or professional use. ## Intellectual property The AI Creator site, interface and original materials are protected by applicable intellectual-property laws. Third-party models, libraries and linked services remain subject to their respective licenses and terms. ## Disclaimer The service is provided on an as-is and as-available basis to the extent permitted by law. We disclaim implied warranties of merchantability, fitness for a particular purpose and non-infringement. ## Limitation of liability To the extent permitted by law, AI Creator will not be liable for indirect, incidental, special or consequential loss arising from use of the service. ## Changes We may update these terms as the service evolves. The updated date on this page identifies the current version. ## Contact Questions about these terms can be sent to contact@ai-creator.top. --- Source: https://ai-creator.top/whisper/ # Whisper Audio Transcription Convert speech in an uploaded file, recording or audio URL into editable text with a Whisper model in the browser. The workspace also provides waveform regions and spectrogram inspection. ## Core capabilities - Whisper speech recognition - Recording and file input - Waveform regions and spectrogram - Multiple recognition languages ## How it works Whisper converts audio samples into tokens representing spoken language. The selected language helps guide recognition, while recording quality, accents, noise and overlapping speakers influence accuracy. Transcription is probabilistic and can hallucinate or omit words. Names, numbers, quotations and safety-critical content must be checked against the source audio. ## How to use Whisper Audio Transcription 1. Wait for the transcription model to load 2. Record audio, upload a file or provide an audio URL 3. Select the spoken language and run recognition 4. Review, correct and copy the generated text ## Practical uses - Drafting interview and meeting notes - Preparing captions and searchable transcripts - Reviewing selected waveform regions ## Limitations Accuracy is not guaranteed. Background noise, music, multiple speakers and specialized vocabulary can reduce quality. Large recordings require more memory and time, and browser sessions can be interrupted. ## Privacy and processing The Whisper model is designed to perform transcription in the browser after model download. An audio URL is fetched from its source, so the privacy properties of that external host also apply. ## Frequently asked questions Is the transcript guaranteed to be accurate? No. Always verify names, numbers, quotations and important claims against the recording. Which languages are available? The interface includes Chinese, English, French, German, Japanese, Korean and Spanish selections. Can I record directly in the browser? Yes. You can record, upload an audio file or enter an audio URL. Why is the model download large? Speech recognition models contain substantial learned parameters and must initialize before local inference. AI Creator tools run in modern desktop browsers. TRANSCRIPTION FIELD NOTES ## A transcript becomes useful after human review Speech recognition produces a probabilistic draft. Names, numbers, quotations and low-volume words can look fluent while being wrong, so accuracy cannot be judged by formatting alone. A reliable workflow preserves the audio, marks uncertainty and reviews important passages against the waveform. 01 ### Improve the input before recognition Use the cleanest recording available and select the spoken language deliberately. Avoid transcoding the same audio repeatedly. If one channel is much quieter, normalize conservatively rather than applying aggressive noise reduction that removes consonants. Long silence, overlapping speakers, music and reverberation can all increase omissions or invented phrases. Divide very long material at natural pauses when that makes review easier, but preserve the original timing reference. 02 ### Review information with consequences Listen to every name, date, amount, URL and direct quotation while reading the generated text. Use waveform regions to return to doubtful passages and mark words that cannot be confirmed instead of guessing. Speaker changes require human judgment unless a separate diarization step is available. Punctuation and paragraph breaks are editorial decisions too; they can change meaning even when every recognized word is correct. 03 ### Protect the recording and the people in it Browser processing can reduce unnecessary uploads, but model files and ordinary website assets still require network requests. Review the processing disclosure and avoid confidential audio on shared or untrusted devices. Obtain the required consent to record and transcribe. Keep the source audio, the reviewed transcript and a note of any unresolved passages so downstream summaries or captions do not silently promote uncertain text to fact. FINAL REVIEW ### Before you export - Select the actual spoken language. - Verify names, numbers and quotations against the audio. - Mark uncertain words instead of silently guessing. - Keep the original recording with the reviewed transcript. [Read the complete Whisper review workflow](https://ai-creator.top/resources/whisper-transcription-workflow/) **AI Creator** [Resources](https://ai-creator.top/resources/) [Privacy](https://ai-creator.top/privacy/) [Terms](https://ai-creator.top/terms/) [Cookies](https://ai-creator.top/cookies/) [Privacy & cookie settings](https://ai-creator.top/cookies/#privacy-choices) [About](https://ai-creator.top/about/) [Contact](https://ai-creator.top/contact/)