Video Trimmer
Open Video Trimmer on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.
Tool capabilities
{
"id": "trim-video",
"category": "media-tools",
"built": true,
"requirements": "Preview boundaries and keyframe versus re-encoded cuts; aspect/audio handling.",
"implementation": {
"fields": [
{
"key": "start",
"label": "Start (seconds)",
"value": 0,
"type": "number",
"min": 0,
"max": 1800,
"step": "any"
},
{
"key": "end",
"label": "End (seconds)",
"value": 1,
"type": "number",
"min": 0.01,
"max": 1800,
"step": "any"
},
{
"key": "engine",
"label": "Processing location",
"type": "select",
"value": "browser",
"values": [
"browser",
"server"
],
"labels": {
"browser": "Browser (files stay here)",
"server": "Local server (larger files)"
}
}
],
"files": true,
"accept": ".mp4,.mov,.mkv,.webm,.avi",
"multiple": false,
"input": false,
"processing": "Browser or server",
"native": true,
"maxFileBytes": 20971520,
"note": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. ",
"hybrid": true,
"desktopAdapter": "ffmpeg-wasm-local-v1",
"experience": {
"automatic": false,
"single": false,
"inputMaxLength": 1000000,
"inputMode": "text",
"label": "Your text",
"placeholder": "Type or paste your input…",
"help": "Up to 1,000,000 characters. Review the settings before running.",
"helpParts": [
"Up to 1,000,000 characters.",
"Review the settings before running."
],
"action": null
},
"mode": "explicit",
"interactive": false
},
"execution": "POST /api/v1/tools/trim-video/run",
"api": {
"id": "trim-video",
"name": "Trim video",
"category": "media-tools",
"description": "Export a selected section of a video.",
"notes": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. ",
"human_path": "/en/media-tools/trim-video/",
"method": "POST",
"endpoint": "/api/v1/tools/trim-video/run",
"schema_url": "/api/v1/tools/trim-video",
"input_schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"input": {
"type": "string",
"maxLength": 1000000,
"default": "",
"description": "Plain text input. File tools use files instead unless otherwise documented."
},
"options": {
"type": "object",
"additionalProperties": false,
"properties": {
"start": {
"type": "number",
"description": "Start (seconds)",
"default": 0.0,
"minimum": 0,
"maximum": 1800
},
"end": {
"type": "number",
"description": "End (seconds)",
"default": 1.0,
"minimum": 0.01,
"maximum": 1800
},
"engine": {
"type": "string",
"description": "Processing location",
"default": "browser",
"enum": [
"browser",
"server"
]
}
}
},
"files": {
"type": "array",
"maxItems": 1,
"items": {
"type": "object",
"required": [
"name",
"base64"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Filename only, no path."
},
"mime": {
"type": "string",
"maxLength": 150
},
"bytes": {
"type": "integer",
"minimum": 0,
"description": "Optional decoded byte count; must match content if supplied."
},
"base64": {
"type": "string",
"contentEncoding": "base64",
"description": "File bytes as padded base64. Use the tool-specific limits.files_bytes value for the total decoded input size."
}
}
}
}
}
},
"output_schema": {
"type": "object",
"required": [
"tool",
"result"
],
"properties": {
"tool": {
"type": "string"
},
"result": {
"type": "object",
"required": [
"text",
"files"
],
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"data": {
"description": "Parsed JSON when the textual result is JSON."
},
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"mime",
"bytes",
"base64"
],
"properties": {
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"base64": {
"type": "string",
"contentEncoding": "base64"
}
}
}
}
}
}
}
},
"processing": "Server; self-hosted native engine, no external conversion service",
"limits": {
"request_bytes": 31457280,
"input_characters": 1000000,
"files_bytes": 20971520,
"max_files": 1,
"timeout_seconds": 90
}
},
"agent_processing": "Server; self-hosted native engine, no external conversion service",
"browser_agent": {
"supported": true,
"name": "run_current_tool",
"discovery": "WebMCP on the human page in a supporting browser",
"verification": "See audit/API-AUDIT.md; availability is not verification"
}
}Page guide
Keep the section of a video you need.
How to use Trim video
- Choose an MP4, MOV, MKV, WEBM or AVI video.
- Enter the start and end of the clip in seconds, then run the tool.
- Download the trimmed MP4.
Useful next steps
What to expect
Export a selected section of a video. Browser processing keeps files on this device. Server processing is currently unavailable.