Smol API

Make files smaller. Keep nothing.

One HTTPS request compresses an image, a PDF or an audio file with the same engine as the Smol Mac app. The file streams through and is gone. Larger files run as jobs that delete themselves on a timer.

  • Direct requests store nothing
  • No ad or analytics scripts on these pages
  • Free when a file can’t be made smaller
one request
curl -X POST "https://api.smolmac.com/v1/compress" \
  -H "Authorization: Bearer $SMOL_API_KEY" \
  --data-binary @photo.jpg -o photo.min.jpg
photo.jpg77.0% smaller
371,580 byteswas 1,614,027
scans.pdf91.3% smaller
272,441 byteswas 3,132,498
artwork.png56.0% smaller
21,042 byteswas 47,769

Measured at default settings (quality 75, images fitted inside 2000 × 2000 pixels) on our test files. Your files will differ: an already-optimised file may not shrink at all, and then the request costs nothing.

Everything the Mac app does, as an endpoint.

Three operations cover it: compress, convert, and strip metadata. Send any supported file and the API works out what it is from its contents, not its name.

Images

Compress, convert and resize. The quality scale and defaults are the Mac app’s.

in: jpg png webp avif heic gif tiff bmp raw out: jpg png webp avif gif

PDFs

Five presets from email-sized to print. Text and vectors are left alone; embedded images are recompressed.

compress · render a page to png or jpg · strip metadata

Audio

Re-encode at five bitrate tiers, or name the bitrate yourself.

aac mp3 opus ogg flac wav alac

Documents

Word, Excel and PowerPoint to PDF, and between office formats.

docx xlsx pptx odt ods odp rtf → pdf

Tables and fonts

CSV, JSON, Markdown and XLSX tables. TTF, OTF, WOFF and WOFF2 containers.

csv tsv json ndjson md html xlsx · ttf otf woff woff2

Metadata

Remove camera, location, author and software details without touching a pixel. Rotation and colour stay correct.

images · pdf (rewritten, so removed data cannot be recovered)

VideoLimited preview

H.264, H.265 and VP9 at six quality tiers, as jobs. Enabled per account while we finish licensing.

mp4 mov webm mkv

Same engine

We checked it against the app, file by file.

The API runs the same encoders at the same versions with the same settings as Smol for Mac. We ran 182 file-and-setting combinations through both and compared the results. Where the two differ, it is because the API fixes a defect, and each fix is written down. In four, the app could not process the file and the API could.

How the quality scale maps to each encoder

142outputs match the Mac app, most of them byte for byte
36differ on purpose, where the API fixes rotation, colour or transparency handling
0unexplained differences

What happens to your files, exactly.

A compressor has to read a file to shrink it. So the promise is not that we can’t see it. The promise is how briefly it exists here, and that you can check.

What we do

  • Direct requests are never stored. The file streams to an engine and the result streams back.
  • Job inputs are deleted when the job ends. Success, failure or cancel.
  • Job outputs are deleted on a timer. One hour by default; you choose from one minute to a day, or delete at once.
  • Every job has a signed receipt. File hashes and deletion times, signed so you can verify it.
  • Results can go straight to your storage. Then we hold no copy at all.
  • Logs hold numbers, not names. Sizes, types, timings and error codes.

What we don’t claim

  • End-to-end encryption. The engine must read the file. It runs with no network access and a private folder per job.
  • That we inspect content. We don’t look inside files, so we can’t vet them. The terms cover what may be sent.
  • Certifications we haven’t earned. There is no SOC 2 report yet. The security page says what exists today.

The full file-handling description

Two ways in, one result format.

Small files answer in the same request. Large ones run as jobs. Both return the same result object and the same error format.

Direct

Up to 25 MB, in one request

For images, PDFs and audio on the request path of your own app.

  1. POST the file to /v1/compress
  2. Read the result from the response body
  3. Read sizes and savings from the headers
Jobs

Large files, documents and video

For work that takes longer than a web request should.

  1. Upload the file, or point to an https URL
  2. Create a job; get a signed webhook when it finishes
  3. Download from a signed link, or have it sent to your bucket

Try it on the sample files.

A test key runs the real engine on our published samples at no cost. Add a card when you’re ready to send your own files. Pricing is per file, and a file we can’t shrink is free.