happytails.ai

Compress PDF

Open Compress PDF 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": "compress-pdf",
  "category": "pdf-tools",
  "built": true,
  "requirements": "Report size savings and visual loss; preserve selectable text where promised; handle already optimized files.",
  "implementation": {
    "fields": [
      {
        "key": "preset",
        "label": "Compression",
        "value": "Balanced",
        "type": "select",
        "values": [
          "High quality",
          "Balanced",
          "Smaller file"
        ]
      }
    ],
    "files": true,
    "input": false,
    "accept": ".pdf",
    "multiple": false,
    "maxFileBytes": 20971520,
    "note": "Runs on your device. Up to 20 MiB and 100 pages. Optimizes compatible JPEG images and PDF structure while keeping text, links and form fields. High quality and Balanced retain image dimensions; Smaller file also limits images to 2,400 pixels on the longest side. Some scans and already optimized PDFs may not shrink. Password-protected and digitally signed PDFs are not supported.",
    "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/compress-pdf/run",
  "api": {
    "id": "compress-pdf",
    "name": "Compress PDF",
    "category": "pdf-tools",
    "description": "Rewrite PDF objects and streams to reduce avoidable file overhead.",
    "notes": "Processed by the local, self-hosted engine. No third-party conversion service is used. Lossless structural optimisation and supported structural recovery. No image downsampling or guarantee of smaller output.",
    "human_path": "/en/pdf-tools/compress-pdf/",
    "method": "POST",
    "endpoint": "/api/v1/tools/compress-pdf/run",
    "schema_url": "/api/v1/tools/compress-pdf",
    "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": {}
        },
        "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

Make image-heavy PDFs smaller. Keep your text and page layout.

How to use Compress PDF
  1. Choose an unlocked PDF. Your file stays in this browser.
  2. Choose a compression preset. Smaller files trade some image detail for space; selectable text stays intact.
  3. Compare the original and result sizes, then download and review your PDF. If it cannot be made smaller, you receive the original.

Useful next steps

What to expect

Reduce PDF file size by optimizing large JPEG images. Processed entirely in your browser. Choose a quality preset; text, links and page layout stay in the document. Supports PDFs up to 20 MiB and 100 pages. Some image types are left unchanged. If the result is not smaller, you receive your original file. Check image quality before sharing.