# Crop GIF

- Human page: https://happytails.ai/en/image-tools/crop-gif/
- Markdown: https://happytails.ai/en/image-tools/crop-gif.md
- Structured JSON: https://happytails.ai/agents/en/image-tools/crop-gif/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `crop-gif` |
| Category | image-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Runs entirely in your browser. Up to 20 MiB, 120 frames and 16 million decoded pixels in total. GIF colors may change slightly when re-encoded; transparency is binary. Original timing and loop count are preserved except when you change speed. Very short delays may play differently across browsers.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

Accepted browser files: `.gif,image/gif`. Choose one file.

Browser file-input limit: 20971520 bytes in total. HTTP limits can differ.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `x` | Left (pixels) | number | 0 | min=0 max=1919 step=1 |
| `y` | Top (pixels) | number | 0 | min=0 max=1919 step=1 |
| `width` | Crop width (pixels) | number | 100 | min=1 max=1920 step=1 |
| `height` | Crop height (pixels) | number | 100 | min=1 max=1920 step=1 |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Files stay in your browser. Use one GIF up to 20 MiB, 120 frames, 1,920 pixels per side and 16 million decoded pixels across all frames. GIF transparency is binary; re-encoding can slightly change colors. Your original file is unchanged.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "crop-gif",
  "category": "image-tools",
  "built": true,
  "requirements": "Files stay in your browser. Use one GIF up to 20 MiB, 120 frames, 1,920 pixels per side and 16 million decoded pixels across all frames. GIF transparency is binary; re-encoding can slightly change colors. Your original file is unchanged.",
  "implementation": {
    "fields": [
      {
        "key": "x",
        "label": "Left (pixels)",
        "value": 0,
        "type": "number",
        "min": 0,
        "max": 1919,
        "step": 1
      },
      {
        "key": "y",
        "label": "Top (pixels)",
        "value": 0,
        "type": "number",
        "min": 0,
        "max": 1919,
        "step": 1
      },
      {
        "key": "width",
        "label": "Crop width (pixels)",
        "value": 100,
        "type": "number",
        "min": 1,
        "max": 1920,
        "step": 1
      },
      {
        "key": "height",
        "label": "Crop height (pixels)",
        "value": 100,
        "type": "number",
        "min": 1,
        "max": 1920,
        "step": 1
      }
    ],
    "files": true,
    "multiple": false,
    "input": false,
    "accept": ".gif,image/gif",
    "maxFileBytes": 20971520,
    "note": "Runs entirely in your browser. Up to 20 MiB, 120 frames and 16 million decoded pixels in total. GIF colors may change slightly when re-encoded; transparency is binary. Original timing and loop count are preserved except when you change speed. Very short delays may play differently across browsers.",
    "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.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "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 one rectangle from an animated GIF. Crop every frame without losing its timing.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use Crop GIF

1. Upload a GIF. Enter the left and top offsets, then the width and height of the crop in pixels. The rectangle must fit inside the original image. Run the tool, preview the result and download it.
2. The same rectangle is applied to every composited frame. The animation keeps its frame order, timing and loop count. Cropping removes content outside the rectangle from the output.

## Useful next steps

- [Rotate GIF](https://happytails.ai/en/image-tools/rotate-gif/) ([Markdown](https://happytails.ai/en/image-tools/rotate-gif.md))

- [GIF maker](https://happytails.ai/en/image-tools/gif-maker/) ([Markdown](https://happytails.ai/en/image-tools/gif-maker.md))

- [Change GIF speed](https://happytails.ai/en/image-tools/change-gif-speed/) ([Markdown](https://happytails.ai/en/image-tools/change-gif-speed.md))

## Choose the area to keep

Upload a GIF. Enter the left and top offsets, then the width and height of the crop in pixels. The rectangle must fit inside the original image. Run the tool, preview the result and download it.

### The whole animation is cropped

The same rectangle is applied to every composited frame. The animation keeps its frame order, timing and loop count. Cropping removes content outside the rectangle from the output.

### Limits and privacy

Files stay in your browser. Use one GIF up to 20 MiB, 120 frames, 1,920 pixels per side and 16 million decoded pixels across all frames. GIF transparency is binary; re-encoding can slightly change colors. Your original file is unchanged.
