{
  "slug": "image-film-grain",
  "name": "gizza-ai/image-film-grain",
  "version": "0.1.0",
  "title": "Add Film Grain to an Image Online — Analog Noise Overlay — gizza.ai",
  "description": "Add realistic analog film grain to a photo, right in your browser — adjustable amount, neutral or colored grain, optional format convert. Nothing is uploaded, free.",
  "tags": [
    "image",
    "film grain",
    "grain",
    "noise",
    "analog",
    "photo",
    "effects",
    "vintage",
    "35mm",
    "texture",
    "filter",
    "png",
    "jpg",
    "webp"
  ],
  "category": "image",
  "urls": {
    "page": "https://gizza.ai/tools/image-film-grain/",
    "markdown": "https://gizza.ai/tools/image-film-grain/index.md",
    "descriptor": "https://gizza.ai/tools/image-film-grain/tool.json",
    "deep_link_example": "https://gizza.ai/tools/image-film-grain/?url=https://example.com/input&amount=20&monochrome=true&format=keep"
  },
  "cli": "gizza tool image-film-grain 'url=https://example.com/input' 'amount=20' 'monochrome=true' 'format=keep'",
  "tool": {
    "description": "Add analog film grain to an image. Provide either url (HTTP/HTTPS) or ref (id from a prior image tool call); optional amount 0-100 (default 20), monochrome true|false (default true — neutral luma-only grain vs colored grain), and format keep|png|jpg|webp (default keep).",
    "parameters": {
      "additionalProperties": false,
      "oneOf": [
        {
          "required": [
            "url"
          ]
        },
        {
          "required": [
            "ref"
          ]
        }
      ],
      "properties": {
        "amount": {
          "default": 20.0,
          "description": "Grain amount, 0-100. 0 leaves the image unchanged, 20 (the default) is a subtle film-like speckle, 50+ is heavy, pushed-film grain, 100 is the maximum. Example: 40 for a noticeable analog look.",
          "maximum": 100,
          "minimum": 0,
          "type": "number"
        },
        "format": {
          "default": "keep",
          "description": "Output format: keep (default) preserves the input format (and any animation); png, jpg or webp convert — an animated GIF keeps only its first frame when converting.",
          "enum": [
            "keep",
            "png",
            "jpg",
            "webp"
          ],
          "type": "string"
        },
        "monochrome": {
          "default": true,
          "description": "true (default) applies neutral gray grain to brightness only — the classic black-and-white film look that stays natural over color photos; false applies colored grain to every channel (RGB speckle), the look of pushed high-ISO color film.",
          "type": "boolean"
        },
        "ref": {
          "description": "Reference id from a prior tool call. Use either url or ref.",
          "type": "string"
        },
        "url": {
          "description": "Image URL (HTTP/HTTPS). Use either url or ref.",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}