Help

Knowledge Base

Detailed answers for the website, API, billing, and privacy — the same facts as the docs, written for humans.

45 of 45 articles

Getting started

What Comprestack is, compress vs convert, and how to try it.

What does Comprestack do?

Image optimization through two tools: compression and conversion. Compression makes your images much smaller while keeping their format and quality. Conversion turns an image into a different format (for example PNG to WebP or JPG to AVIF), and compresses it at the same time. The website and the API share one monthly allowance on self-serve plans.

When should I compress, and when should I convert?

Compress when you must keep the same format — for example a PNG logo that still has to be PNG. Compress never returns a larger file. Convert when you can change format: photos usually land on WebP or AVIF; HEIC from phones must be converted because we do not output HEIC. Convert always re-encodes and compresses in the same step.

Do I need an account?

No. Guests can process 3 images per day, up to 5 MB each, one file at a time. Create a free account when you want 20 images per month, batches of 5, history, and an API key. Guest and account quotas are separate.

How do I optimize my first image?

Open Compress or Convert, drop a file, and wait for the result. Large files and animated GIFs can take up to a couple of minutes. Download the output from the result panel. Links stay valid for one hour, then the files are deleted. For code, create an API key in the dashboard and follow the quickstart.

Where is the API documented?

The developer docs cover authentication, SDKs, every endpoint, errors, and limits. OpenAPI 3.1 is the source of truth. Official clients exist for Node.js, Python, PHP, Go, Ruby, a React dropzone, a CLI, and WordPress.

Compression & conversion

Quality, formats, lossless, batches, and why a file might not shrink.

Will my images really look the same?

Yes. Comprestack uses perceptual compression that removes data the human eye can't detect, so results are visually identical to the original in almost every case. For pixel-perfect needs, Pro and Business include a lossless compression mode. Convert still changes the codec, so compare the download if you are shipping logos or screenshots that must match pixel-for-pixel.

How do files get smaller without losing quality?

Most images are saved with far more data than they need: oversized color tables, metadata, and inefficient encoding. We re-encode them with modern codecs like WebP and AVIF and tune settings per image. How much you save depends on the file. Already-optimized WebP or a tiny icon may barely move. A 12 MB phone photo usually drops dramatically.

Which formats can I convert between?

Input: JPEG, PNG, WebP (including animated), AVIF, GIF (including animated), HEIC/HEIF, TIFF, BMP, and ICO. Output: the same list except HEIC — convert HEIC to JPEG, WebP, or AVIF. Animated GIF and WebP keep up to 48 frames. ICO output is capped at 256 × 256. Compress keeps the original format.

What are lossless mode, quality, and target size?

Free plans use presets. Pro and Business can send a custom quality level, lossless compression (same format, no perceptual loss), a target size in kilobytes, and max width or height. Lossless is for screenshots, UI, and logos where every pixel matters. Target size is a best-effort cap — if we cannot hit it without wrecking the image, we return the best safe result or an error instead of a worse-looking file.

Do you support animated GIF and WebP?

Yes. Animated GIF and WebP are accepted and can be returned as animated GIF or WebP. We keep up to 48 frames. Longer animations are truncated to that cap. AVIF animation is not an output path today — convert those stills to AVIF, or keep GIF/WebP for motion.

How many files can I send, and how large?

Guests: 1 file, up to 5 MB. Free: 5 files, 5 MB each. Pro: 10 files, 25 MB. Business: 10 files, 100 MB. Each image can take up to 120 seconds; the whole request up to 240 seconds. Files over your plan's size limit return 413 file_too_large and are not charged.

Why didn't my file get smaller?

Compress refuses to return a larger file. If the original is already well encoded, or you asked for lossless on a tiny PNG, savings can be zero and we keep the original. Convert to WebP or AVIF usually wins on photos. Metadata-only files, 1-bit icons, and already-minified assets are the usual 'no change' cases.

Is GPS and EXIF kept?

No by default. We strip hidden photo details such as GPS unless you send keep_metadata=true (website toggle or API flag). Keep metadata only when you truly need it — it can enlarge the file and leak location.

Website & dashboard

Uploads, downloads, guest limits, and your account.

What happens to my images after I upload them?

Files are encrypted in transit, processed, and automatically deleted from our servers after 1 hour. We never use your images for anything other than compressing or converting them for you. Comprestack is not a backup or a CDN — save the download if you need the result later.

How long do download links last?

Results stay available for 1 hour, then they are deleted. The dashboard keeps a short list of recent downloads in this browser so you can grab a file again within that window. After that you must run the job again, which counts as another image.

I hit the guest daily limit. What now?

Guests get 3 images per calendar day (UTC), 5 MB max, one file per request. Sign in for the Free plan (20 / month) or buy an image pack. The guest cap is per visitor, not shared with a signed-in account.

Where do I create and revoke API keys?

Sign in, open the dashboard, then API. Keys start with csk_live_. Create, copy once, and store them in a server environment variable. If a key leaks, revoke it and create a new one. Keys never belong in NEXT_PUBLIC_* variables, mobile apps, or git.

How do I switch light and dark mode?

Use the sun/moon control in the header. The preference is stored in your browser only — we do not use it for advertising.

API & integrations

Keys, quotas, SDKs, WordPress, CLI, errors, and timeouts.

Is there an API?

Yes. Compress and convert are available over HTTPS at api.comprestack.com. Official SDKs wrap the same REST API. Your monthly images are shared between the website and the API, so the Free plan's 20 images work in both.

How do I authenticate?

Send Authorization: Bearer csk_live_… on every request. HTTPS is required. White-label partners receive a dedicated key from us; self-serve keys come from the dashboard. Never call the API from the browser with a live key — proxy through your server.

Does the API use a different quota from the website?

No. Self-serve Free, Pro, and Business share one monthly image count across the site and the API. Image packs add to that pool. White-label rooms use prepaid credits instead of a monthly plan.

Which official libraries exist?

npm/PyPI/RubyGems package comprestack, Packagist comprestack/sdk, Go module under the Comprestack-API repo, comprestack-react (server-only key + dropzone), comprestack-cli, and a WordPress plugin for Media Library and WooCommerce. All of them meter on the server — the SDK cannot bypass plan limits.

How long should my HTTP client wait?

Requests are synchronous. Set the client timeout to at least 5 minutes for large batches. Per image: 120 seconds. Per request: 240 seconds. Over that you get 422 processing_timeout. 429 and 503 are safe to retry after Retry-After. If the connection drops mid-process, nothing is charged; if it drops as the response is sent, retrying may charge again.

How are API errors shaped?

Errors use HTTP status codes and a JSON body with a stable code and a message. Failed images are not charged. Every response includes X-Request-Id — send that to support. Typical codes: 401 invalid_key, 413 file_too_large, 422 processing_timeout / unsupported_format, 429 rate_limited, 402 / quota errors on Free when the month is used up.

What are the rate limits?

Compress and convert are limited per account per calendar minute. The website and API share the cap. Free 10/min, Pro 60/min, Business 300/min. White label is negotiated. Over the limit you get 429 rate_limited with Retry-After.

Can I import OpenAPI or Postman?

Yes. OpenAPI 3.1 is published at the API host and mirrored on the site. A Postman Collection v2.1 is available for the same routes. They cover compress, convert, jobs, usage, and white-label billing — not master-key admin routes.

Billing & plans

What counts as an image, packs, yearly billing, tax, and cancel.

What counts as an image?

Each file you compress or convert counts as one image, whether you use the website or the API. Converting and compressing the same file in one step still counts once. A failed job is not charged. Retrying a successful job after the download expired counts again.

What happens when I reach my monthly limit?

On Free, processing pauses until images reset at the start of the next month, or you buy an image pack. On Pro, extra images are $3.5 per 1,000. On Business, $1.25 per 1,000. Overage is billed at the end of the month so work does not stop.

How do image packs work?

A pack is 500 images for $5, paid once. Pack images are used only after your monthly allowance runs out. They work on the website and the API, stay valid for 12 months, and can be stacked. File size still follows your current plan (Free pack buyers stay on the Free size cap).

When am I charged?

When you subscribe, and then at the start of each billing period. Extra images from the month that just ended are added to that invoice. On yearly plans, overage is still invoiced monthly. Packs are charged once at purchase.

Can I switch between monthly and yearly billing?

Yes. Yearly billing saves about 20% versus month to month. If you switch mid-cycle, the change is prorated. Manage this from Plan & billing in the dashboard.

Can I cancel anytime?

Yes. Upgrade, downgrade, or cancel from the dashboard. If you cancel, you keep the plan until the end of the period you have paid for. Unused pack images remain until they expire.

How do I pay, and do you add tax?

Checkout is handled by our payment partner, who acts as the merchant of record for tax where required. Prices are in US dollars. Download invoices from Plan & billing.

What is white label pricing?

White label is prepaid credits, not a subscription. First buy $70 (about 70,000 images at $1.00 per 1,000). Later top-ups from $500. Processing stops when the balance is empty. Unused credits stay valid 12 months. Apply via Contact — it is not self-serve checkout.

Privacy & security

Retention, AI training, GDPR, and how to report issues.

How long do you keep my images?

Uploads and outputs are deleted automatically within 1 hour. Account data stays while the account is open. Delete the account and personal details are removed within 30 days.

Do you train AI on my files?

No. Images are used only to compress or convert them for you. We do not sell them or use them for model training.

Who is the data controller, and where are you based?

Comprestack is the controller for account data, based in Belfast, United Kingdom, under UK GDPR and the Data Protection Act 2018. Email hello@comprestack.com for a copy or deletion request.

Who else sees my data?

Only what each provider needs: Supabase for sign-in and the account database, our image-processing servers for the short retention window, Vercel for hosting the website, and the payment partner for checkout. Card numbers are not stored on Comprestack servers.

Where should I report a vulnerability?

Email hello@comprestack.com with enough detail to reproduce the issue. Do not disrupt production. Give us a reasonable window before public disclosure.

Troubleshooting

Failed jobs, size limits, 429s, and when to check status.

I got file too large / 413.

The file is over your plan's max size (Free 5 MB, Pro 25 MB, Business 100 MB, guests 5 MB). Resize or compress locally first, or upgrade. The failed attempt is not charged.

The format was rejected.

Check that the file really is a supported type (extension lies sometimes). HEIC is input-only. Password-protected PDFs and non-image binaries are rejected. Try re-exporting from the camera or editor.

I am getting 429 rate_limited.

You sent more compress/convert requests than your plan allows in a calendar minute. Wait for Retry-After, then resume. Spread batches over time or upgrade for a higher cap. Safe to retry — you are not charged for the 429 itself.

The job timed out.

Very large megapixel images, long animations, or a full batch of 10 can hit the 120s-per-image or 240s-per-request cap. Split the batch, shrink dimensions with max width/height, or convert frames separately. Timed-out images are not charged.

The API says invalid_key.

The Bearer token is missing, truncated, revoked, or sent from a browser. Use csk_live_… from the dashboard, on HTTPS, from your server. After a revoke the old key dies immediately.

Is Comprestack down?

Check the status page for live API health, component history, and incidents. If compression is down, the public status note will say so. Include X-Request-Id when you write to support.

Still stuck? Contact support · API docs · Status