{
  "title": "Rotate GIF",
  "human_url": "https://happytails.ai/en/image-tools/rotate-gif/",
  "agent_url": "https://happytails.ai/agents/en/image-tools/rotate-gif/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/image-tools/rotate-gif.md",
  "content": "Rotate GIF\nTurn an animated GIF by 90, 180 or 270 degrees while keeping every frame.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Rotate GIF\nChoose a GIF and select a clockwise rotation of 90, 180 or 270 degrees. Run the tool, check the preview and download the rotated GIF.\nThe same rotation applies to every composited frame. A quarter turn swaps the width and height. Frame order, delays and the original loop count are preserved.\nUseful next steps\nCrop GIF\nReverse GIF\nGIF maker\nTurn your animation\nChoose a GIF and select a clockwise rotation of 90, 180 or 270 degrees. Run the tool, check the preview and download the rotated GIF.\nTiming and loops stay intact\nThe same rotation applies to every composited frame. A quarter turn swaps the width and height. Frame order, delays and the original loop count are preserved.\nLimits and privacy\nProcessing stays 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. Re-encoding can slightly change colors. GIF transparency is binary. Your original file is unchanged.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Crop GIF",
      "url": "https://happytails.ai/en/image-tools/crop-gif/"
    },
    {
      "name": "Reverse GIF",
      "url": "https://happytails.ai/en/image-tools/reverse-gif/"
    },
    {
      "name": "GIF maker",
      "url": "https://happytails.ai/en/image-tools/gif-maker/"
    }
  ],
  "tool": {
    "id": "rotate-gif",
    "category": "image-tools",
    "built": true,
    "requirements": "Processing stays 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. Re-encoding can slightly change colors. GIF transparency is binary. Your original file is unchanged.",
    "implementation": {
      "fields": [
        {
          "key": "angle",
          "label": "Clockwise rotation",
          "value": "90",
          "type": "select",
          "values": [
            "90",
            "180",
            "270"
          ]
        }
      ],
      "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"
    }
  },
  "markdown": "# Rotate GIF\n\n- Human page: https://happytails.ai/en/image-tools/rotate-gif/\n- Markdown: https://happytails.ai/en/image-tools/rotate-gif.md\n- Structured JSON: https://happytails.ai/agents/en/image-tools/rotate-gif/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `rotate-gif` |\n| Category | image-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRuns 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.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\nAccepted browser files: `.gif,image/gif`. Choose one file.\n\nBrowser file-input limit: 20971520 bytes in total. HTTP limits can differ.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `angle` | Clockwise rotation | select | \"90\" | Allowed: 90, 180, 270 |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nProcessing stays 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. Re-encoding can slightly change colors. GIF transparency is binary. Your original file is unchanged.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"rotate-gif\",\n  \"category\": \"image-tools\",\n  \"built\": true,\n  \"requirements\": \"Processing stays 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. Re-encoding can slightly change colors. GIF transparency is binary. Your original file is unchanged.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"angle\",\n        \"label\": \"Clockwise rotation\",\n        \"value\": \"90\",\n        \"type\": \"select\",\n        \"values\": [\n          \"90\",\n          \"180\",\n          \"270\"\n        ]\n      }\n    ],\n    \"files\": true,\n    \"multiple\": false,\n    \"input\": false,\n    \"accept\": \".gif,image/gif\",\n    \"maxFileBytes\": 20971520,\n    \"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.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Your text\",\n      \"placeholder\": \"Type or paste your input…\",\n      \"help\": \"Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nTurn an animated GIF by 90, 180 or 270 degrees while keeping every frame.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Rotate GIF\n\n1. Choose a GIF and select a clockwise rotation of 90, 180 or 270 degrees. Run the tool, check the preview and download the rotated GIF.\n2. The same rotation applies to every composited frame. A quarter turn swaps the width and height. Frame order, delays and the original loop count are preserved.\n\n## Useful next steps\n\n- [Crop GIF](https://happytails.ai/en/image-tools/crop-gif/) ([Markdown](https://happytails.ai/en/image-tools/crop-gif.md))\n\n- [Reverse GIF](https://happytails.ai/en/image-tools/reverse-gif/) ([Markdown](https://happytails.ai/en/image-tools/reverse-gif.md))\n\n- [GIF maker](https://happytails.ai/en/image-tools/gif-maker/) ([Markdown](https://happytails.ai/en/image-tools/gif-maker.md))\n\n## Turn your animation\n\nChoose a GIF and select a clockwise rotation of 90, 180 or 270 degrees. Run the tool, check the preview and download the rotated GIF.\n\n### Timing and loops stay intact\n\nThe same rotation applies to every composited frame. A quarter turn swaps the width and height. Frame order, delays and the original loop count are preserved.\n\n### Limits and privacy\n\nProcessing stays 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. Re-encoding can slightly change colors. GIF transparency is binary. Your original file is unchanged.\n"
}