← All posts

September 21, 2026

Can Your AI Assistant Make a PDF Small Enough to Send?

Yes — give it a link and it compresses the PDF in your browser, reports the new size and saves the file; you only step in to judge whether the pages still read well.

Yes. An AI assistant can compress a PDF for you with the MyTools PDF compressor: given a link to the file, it opens mytools.com/pdf/compress-pdf/by-url?url=... with the PDF already loaded, compresses it, reads back the exact new size, and saves the result. A 13.9 MB photo report comes out at 319 KB on the default setting. There is no account to create and no CAPTCHA, and the compression runs inside your browser rather than on a server.

What your assistant cannot do is look at the result the way you will. That is where you come back in, and it takes one sentence.

What your assistant is actually deciding

When you say "make this PDF small enough to email", your assistant is not comparing compressors. It is checking whether it can finish without handing the job back to you halfway. Most online PDF tools fail that check on the first or second question.

Is there an account? A sign-up wall stops an assistant before it starts. It cannot register for you, confirm an email address, or accept terms of service in your name. MyTools has no sign-up and no login; every tool works on the first visit.

Is there a CAPTCHA? A CAPTCHA exists to prove the visitor is not software, and software should not try to get around one. MyTools has none.

Can it get the file in? An upload box that only takes a drag-and-drop is asking for a human hand. MyTools tools accept a remote file as a query parameter, so the page opens with your PDF already loaded. If the PDF is only on your computer, you pick it once and everything after that stays with the assistant. The compressor says so itself when it is empty: "No PDFs loaded. Call open_mytools_tool with slug 'compress-pdf' and one or more urls, or ask the user to add them."

Will the result be usable? Some tools stamp a watermark on the output or put the download behind a paywall. An assistant that hands you back that file has wasted more of your time than if it had refused. MyTools adds nothing to your pages, and there is no free-tier cap to run into.

Where does the file go? A careful assistant should think twice before sending your contract or medical records to a server it knows nothing about. On MyTools the compression happens in your browser; nothing is stored on a server, so there is nothing anyone could keep. The one exception is the link entry point below: to load a PDF from a URL, our server fetches that URL so your browser has the bytes to work with. It does not keep them.

None of these checks is about quality. Each is a condition that must hold before an assistant can act at all.

The URL it can build

This part works in any browser, with no special support:

https://mytools.com/pdf/compress-pdf/by-url?url=https%3A%2F%2Fexample.com%2Fsite-survey.pdf

Add /by-url?url= to the tool's address, followed by the PDF's URL-encoded http or https address, and the compressor opens with that file loaded, ready to run. The link has to point at the PDF itself. A "view in browser" page from a file-sharing service serves a web page, not a PDF, and won't load.

The tools it can call

In a browser that supports WebMCP, MyTools also registers named functions the assistant can call directly, rather than reading a page designed for your eyes. The compressor registers three:

  • get_compress_pdf_state: the loaded PDFs with their byte sizes, the selected level and, once it has run, how much each file shrank
  • run_compress_pdf: compress at screen, recommended or print
  • download_compress_pdf: save the result to your device

Reading the state first is what lets the assistant answer the question you actually asked. "Get it under 10 MB" means nothing until it knows the file is 13.9 MB. And run_compress_pdf does not return until the compression has finished, so there is no progress bar to watch and no guessing when it is done. Here is a real exchange with a four-page site survey full of photographs:

get_compress_pdf_state({})

→ { "phase": "configure",
    "files": [{ "name": "site-survey.pdf", "bytes": 13902636 }],
    "level": "recommended", "compressed": null,
    "hint": "Call run_compress_pdf with a level, or with no arguments to use
             the one selected on screen. It does not return until compression
             has finished." }

run_compress_pdf({ level: "recommended" })

→ "Compressed 1 PDF(s) at the 'recommended' level.
   Call download_compress_pdf to save it."

get_compress_pdf_state({})

→ { "phase": "download", "level": "recommended",
    "compressed": [{ "name": "site-survey-compressed.pdf",
                     "originalBytes": 13902636,
                     "compressedBytes": 319204, "failed": false }], … }

download_compress_pdf({})

→ "Saving site-survey-compressed.pdf to the user's device."

From 13.9 MB to 319 KB, and the run call came back in under two seconds on this four-page file. Longer documents take longer, because every page is processed in turn.

To be exact about where this works: the browser built into the ChatGPT desktop app supports WebMCP, and Chrome exposes it to origin-trial participants such as MyTools up to and including Chrome 156. The specification is a W3C community-group draft, so treat it as something to check for rather than assume. The link above works without any of it.

Where you come back in

An assistant can read byte counts. It cannot tell whether the dimensions on page three of your site plan are still legible, or whether the signature on the last page still looks like a signature. The compressor works by redrawing each page as an image at a lower resolution, so how much detail survives is a judgement about what the pages show, and only someone looking at them can make it.

That handover is the reason this is a web page and not a background job. If nobody needed to look at the result, it would be an API call and nobody would put a page in front of it. Because you do need to look, the assistant does all the mechanical work (loads the file, compresses it, reports the size, saves it), then hands you the one decision that needs your eyes, and picks the job back up when you have answered.

In practice the round trip is one sentence from you. You open the compressed file, and if the small print has gone soft you say so. The assistant runs again at a sharper level, and the tool starts again from your original, not from the already-compressed copy:

get_compress_pdf_state({})
→ … "level": "recommended", "compressedBytes": 319204

    ← you open it: "the measurements on page 3 are blurry"

run_compress_pdf({ level: "print" })
→ "Compressed 1 PDF(s) at the 'print' level.
   Call download_compress_pdf to save it."

get_compress_pdf_state({})
→ … "level": "print", "originalBytes": 13902636, "compressedBytes": 950841

At 951 KB it is still far under any email limit, and now the page reads the way you need it to. The same works the other way: if a portal allows only 200 KB, screen brought this file down to 108 KB.

You can also give your answer with a click instead of a sentence. Pick Screen, Recommended or Print in the compressor, and get_compress_pdf_state reports the level you chose, so an assistant calling run_compress_pdf with no arguments compresses at exactly that level.

What to say to your assistant

Give it a link and a limit, and let it pick the level:

Compress this PDF so I can email it, it needs to be under 10 MB: https://example.com/site-survey.pdf

This has to go through a portal that only accepts files up to 2 MB. Use MyTools to shrink it and tell me the new size: https://example.com/application.pdf

Compress this for printing, keep the text sharp: https://example.com/brochure.pdf

And when the PDF is on your own computer, say so, and the assistant will open the tool and wait for you:

Open the MyTools PDF compressor. I'll add the file, then compress it at the recommended level and save it.

If your assistant says it cannot compress PDFs, pointing it at mytools.com/pdf/compress-pdf/by-url?url= with your link usually changes the answer. The objection is rarely about compression. It is about not having a tool it can open.

When this won't work

You want it fully hands-off with a file on your laptop. An assistant cannot read your files, and WebMCP carries no file contents, so nothing lets it put a local PDF into the page by itself. That costs one step from you, not the whole job: it opens the compressor, you pick the file, and the state, run and download functions all work on it from there. Only the completely unattended version needs the PDF at a URL. The upload route also takes several PDFs at once and can save them as a single ZIP; the link route loads one. If you would rather skip the assistant, how to compress a PDF walks through the three clicks.

You need to select or search the text afterwards. Because each page is redrawn as an image, the compressed file has no selectable text, no clickable links and no fillable form fields. For a scan that loses nothing, since a scan was a picture all along. For a document you will search, fill in or copy from, keep the original. Why is my PDF so large explains when this trade is worth making.

The PDF is mostly text. Text is already tiny in a PDF, and turning it into images makes it bigger, not smaller. When that happens the tool gives you back your original file unchanged and the state reports the same number of bytes before and after. The assistant can see that and tell you, so you won't be handed a heavier file. If a text-heavy document is still too big, sending only the pages that matter or splitting it into parts works better.

The PDF is behind a login. If the URL needs you to be signed in, our server cannot fetch it either, and the page shows an error instead of your file.

The file is enormous. We impose no size limit and there is no quota. But the work happens in your browser, so a very large document is bounded by your computer's memory, and a long one takes longer to run.

The short version

  • The tool: https://mytools.com/pdf/compress-pdf
  • Open it with a PDF already loaded: https://mytools.com/pdf/compress-pdf/by-url?url={url-encoded PDF url}, one PDF per link; several at once through the upload page
  • Callable tools, where WebMCP is available: get_compress_pdf_state, run_compress_pdf({ level: "screen" | "recommended" | "print" }), download_compress_pdf
  • The judgement stays yours: look at the result, say "sharper" or "smaller", and the assistant reruns from your original
  • What it changes: every page becomes an image, so text stops being selectable; if that would make the file bigger, you get your original back
  • Accounts, CAPTCHAs, watermarks, quotas: none
  • Your file: compressed in your browser, not on a server; the ?url= fetch is the only thing that touches ours, and it keeps nothing