{
  "title": "Image transparency mask editor",
  "human_url": "https://happytails.ai/en/image-tools/image-transparency-mask-editor/",
  "agent_url": "https://happytails.ai/agents/en/image-tools/image-transparency-mask-editor/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/image-tools/image-transparency-mask-editor.md",
  "content": "Image transparency mask editor\nPaint a soft-edged transparency mask over an image to hide or bring back areas, then download the masked PNG and the mask itself as an editable grayscale PNG.\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 Image transparency mask editor\nChoose an image and run the tool once to open the painter.\nPick erase or paint, set the brush radius and feather, and drag over the preview.\nUse Undo or Redo as needed, then choose Apply strokes.\nCheck the mask and changed-pixel count, then download the masked PNG and the mask PNG.\nUseful next steps\nRemove background\nTrim transparent image margins\nSplit and combine image channels\nHow the mask works\nThe mask is a layer mask from 0 (hidden) to 255 (visible). The new alpha of each pixel is the original alpha x mask / 255, so existing transparency is kept and only reduced or restored by your strokes. Start fully visible to erase areas away, or fully hidden to paint areas in.\nBrush and feather\nEach stroke is a round brush dragged along straight segments between the points you paint. Inside the radius minus the feather the brush is solid; across the feather it fades along a Gaussian curve to exactly zero at the radius, so pixels outside every brush radius keep their transparency byte for byte. Strength scales the whole stroke.\nStrokes and undo\nStrokes are stored as a short JSON list of points, not as copies of the image, so undo never uses much memory. Points are in image pixels, where 0,0 is the center of the top-left pixel. The painter preview is approximate; Apply strokes recomputes the exact mask. You can save the strokes text from the report and paste it back later to repeat an edit.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Remove background",
      "url": "https://happytails.ai/en/image-tools/remove-background/"
    },
    {
      "name": "Trim transparent image margins",
      "url": "https://happytails.ai/en/image-tools/transparent-image-trim/"
    },
    {
      "name": "Split and combine image channels",
      "url": "https://happytails.ai/en/image-tools/image-channel-splitter/"
    }
  ],
  "tool": {
    "id": "image-transparency-mask-editor",
    "category": "image-tools",
    "built": true,
    "requirements": "Images stay in this browser and are never uploaded. Use one still PNG, JPEG or WebP image up to 20 MiB, 16,384 pixels per side and 8 million pixels. Up to 64 strokes, 20,000 points, 400,000 characters of stroke text and 32 million brushed pixel visits per run; brush radius 0.5 to 1,024 pixels. Processing stops after 30 seconds. You get the masked PNG, a grayscale mask PNG and a JSON report. Source metadata and color profiles are not copied.",
    "implementation": {
      "fields": [
        {
          "key": "strokes",
          "label": "Brush strokes (JSON, filled in by the painter)",
          "value": "[]",
          "type": "textarea",
          "maxLength": 400000,
          "help": "Paint on the preview after the first run, then choose Apply strokes. You can also paste strokes saved from an earlier report."
        },
        {
          "key": "initial",
          "label": "Mask starts as",
          "value": "reveal",
          "type": "select",
          "values": [
            "reveal",
            "hide"
          ],
          "labels": {
            "reveal": "Fully visible (paint hides nothing until you erase)",
            "hide": "Fully hidden (paint reveals)"
          }
        }
      ],
      "registrationFamily": "raster-masks-and-textures",
      "files": true,
      "input": false,
      "multiple": false,
      "accept": ".png,.jpg,.jpeg,.webp",
      "maxFileBytes": 20971520,
      "deferImagePreview": true,
      "note": "Images are processed in this browser and never uploaded. Use still PNG, JPEG or WebP files up to 20 MiB each.",
      "experience": {
        "automatic": false,
        "single": true,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Image to mask",
        "placeholder": "Choose a PNG, JPEG or WebP image",
        "help": "One still image up to 20 MiB and 8 million pixels. Run once, then paint on the preview. 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": "# Image transparency mask editor\n\n- Human page: https://happytails.ai/en/image-tools/image-transparency-mask-editor/\n- Markdown: https://happytails.ai/en/image-tools/image-transparency-mask-editor.md\n- Structured JSON: https://happytails.ai/agents/en/image-tools/image-transparency-mask-editor/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `image-transparency-mask-editor` |\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\nImages are processed in this browser and never uploaded. Use still PNG, JPEG or WebP files up to 20 MiB each.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\nAccepted browser files: `.png,.jpg,.jpeg,.webp`. 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| `strokes` | Brush strokes (JSON, filled in by the painter) | textarea | \"[]\" |  |\n| `initial` | Mask starts as | select | \"reveal\" | Allowed: reveal, hide |\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\nImages stay in this browser and are never uploaded. Use one still PNG, JPEG or WebP image up to 20 MiB, 16,384 pixels per side and 8 million pixels. Up to 64 strokes, 20,000 points, 400,000 characters of stroke text and 32 million brushed pixel visits per run; brush radius 0.5 to 1,024 pixels. Processing stops after 30 seconds. You get the masked PNG, a grayscale mask PNG and a JSON report. Source metadata and color profiles are not copied.\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\": \"image-transparency-mask-editor\",\n  \"category\": \"image-tools\",\n  \"built\": true,\n  \"requirements\": \"Images stay in this browser and are never uploaded. Use one still PNG, JPEG or WebP image up to 20 MiB, 16,384 pixels per side and 8 million pixels. Up to 64 strokes, 20,000 points, 400,000 characters of stroke text and 32 million brushed pixel visits per run; brush radius 0.5 to 1,024 pixels. Processing stops after 30 seconds. You get the masked PNG, a grayscale mask PNG and a JSON report. Source metadata and color profiles are not copied.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"strokes\",\n        \"label\": \"Brush strokes (JSON, filled in by the painter)\",\n        \"value\": \"[]\",\n        \"type\": \"textarea\",\n        \"maxLength\": 400000,\n        \"help\": \"Paint on the preview after the first run, then choose Apply strokes. You can also paste strokes saved from an earlier report.\"\n      },\n      {\n        \"key\": \"initial\",\n        \"label\": \"Mask starts as\",\n        \"value\": \"reveal\",\n        \"type\": \"select\",\n        \"values\": [\n          \"reveal\",\n          \"hide\"\n        ],\n        \"labels\": {\n          \"reveal\": \"Fully visible (paint hides nothing until you erase)\",\n          \"hide\": \"Fully hidden (paint reveals)\"\n        }\n      }\n    ],\n    \"registrationFamily\": \"raster-masks-and-textures\",\n    \"files\": true,\n    \"input\": false,\n    \"multiple\": false,\n    \"accept\": \".png,.jpg,.jpeg,.webp\",\n    \"maxFileBytes\": 20971520,\n    \"deferImagePreview\": true,\n    \"note\": \"Images are processed in this browser and never uploaded. Use still PNG, JPEG or WebP files up to 20 MiB each.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": true,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Image to mask\",\n      \"placeholder\": \"Choose a PNG, JPEG or WebP image\",\n      \"help\": \"One still image up to 20 MiB and 8 million pixels. Run once, then paint on the preview. 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\nPaint a soft-edged transparency mask over an image to hide or bring back areas, then download the masked PNG and the mask itself as an editable grayscale PNG.\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 Image transparency mask editor\n\n1. Choose an image and run the tool once to open the painter.\n2. Pick erase or paint, set the brush radius and feather, and drag over the preview.\n3. Use Undo or Redo as needed, then choose Apply strokes.\n4. Check the mask and changed-pixel count, then download the masked PNG and the mask PNG.\n\n## Useful next steps\n\n- [Remove background](https://happytails.ai/en/image-tools/remove-background/) ([Markdown](https://happytails.ai/en/image-tools/remove-background.md))\n\n- [Trim transparent image margins](https://happytails.ai/en/image-tools/transparent-image-trim/) ([Markdown](https://happytails.ai/en/image-tools/transparent-image-trim.md))\n\n- [Split and combine image channels](https://happytails.ai/en/image-tools/image-channel-splitter/) ([Markdown](https://happytails.ai/en/image-tools/image-channel-splitter.md))\n\n## How the mask works\n\nThe mask is a layer mask from 0 (hidden) to 255 (visible). The new alpha of each pixel is the original alpha x mask / 255, so existing transparency is kept and only reduced or restored by your strokes. Start fully visible to erase areas away, or fully hidden to paint areas in.\n\n### Brush and feather\n\nEach stroke is a round brush dragged along straight segments between the points you paint. Inside the radius minus the feather the brush is solid; across the feather it fades along a Gaussian curve to exactly zero at the radius, so pixels outside every brush radius keep their transparency byte for byte. Strength scales the whole stroke.\n\n### Strokes and undo\n\nStrokes are stored as a short JSON list of points, not as copies of the image, so undo never uses much memory. Points are in image pixels, where 0,0 is the center of the top-left pixel. The painter preview is approximate; Apply strokes recomputes the exact mask. You can save the strokes text from the report and paste it back later to repeat an edit.\n"
}