TutuCut
Embeddable widget

One line of code — add a video editor to your site in seconds

Embed the TutuCut timeline editor (trim / subtitles / effects / transitions) into any of your sites. Visitors edit videos right on your site; configure theme and tools, product updates apply automatically, and you maintain nothing.

Copy & paste — place it before your site's </body>
<script src="https://tutucut.com/embed.js"
        data-key="pk_live_YOUR_KEY"
        data-mount="#cc-editor" defer></script>

Replace pk_live_YOUR_KEY with a key you generate yourself in the console (any registered user, no review, effective instantly); the container #cc-editor must have a width and height. Register your embed URL when integrating (a whitelist; use localhost for local dev) — it only shows on the sites you register.

Try it live

Click the button below to try the embedded video editor right on this page.

JS API (for callbacks / customization)

<script src="https://tutucut.com/embed.js"></script>
<script>
  const cc = TutuCut.mount('#cc-editor', {
    key: 'pk_live_YOUR_KEY',
    theme: 'auto',            // auto | light | dark
    onSave: (file) => {
      // file.dataUrl = current frame image (base64)
      upload(file.dataUrl);
    }
  });
  cc.open('https://your.site/clip.mp4'); // import a media clip
</script>

Full parameter reference

ParameterTypeDescription
keystringYour public key pk_ (generated in the console). Required.
theme'auto'|'light'|'dark'Theme; auto follows the host/system light-dark mode.
hideHeaderbooleanHide the top bar (when you build your own UI and export via export()).
hideOpenbooleanHide the "Open media" button.
hideExportbooleanHide the "Export & download" button.
saveTextstringText of the "Done" button (default "Done & send back", ≤16 chars).

Methods

  • cc.open(url, name?)Import a media clip into the timeline (video/audio/image url or dataURL).
  • cc.export(format?)Export the current frame → Promise<{dataUrl,mime,size}>.
  • cc.setTheme('dark')Switch the theme at runtime.
  • cc.destroy()Unmount the widget (removes the iframe).

Event callbacks

  • onReady()The editor is ready.
  • onSave(file)User taps "Done" → file.dataUrl is the current frame image.
  • onError(e)e.message is human-readable (not enabled / no permission / load failed).
  • onClose()The fullscreen overlay was closed.

Security · auto-updates

  • · Self-service, auto-approved: any registered user gets a key by registering a site name + embed URL in the console, effective instantly.
  • · The key is public; abuse is prevented by a registered-URL allow/deny list (deny takes priority). Unregistered domains are rejected with a prompt to register; you can enable or disable at any time.
  • · Real-origin analytics: every load is counted by Origin (blocked ones too); the console shows a per-origin breakdown, and unregistered domains can be whitelisted in one click.
  • · The editor runs on TutuCut's own domain (isolated); your page cannot access any TutuCut credentials, and a visitor's private works on TutuCut never appear in the embedded widget.
  • · The widget is self-hosted and auto-updated by TutuCut — feature upgrades require no code changes from you and zero maintenance.