Solo builder here. Tinify.dev started as free web tools (compress / resize / crop - no ads, no watermarks, files deleted after two hours) and grew an API because I wanted one with a contract I could rely on.
The parts I care about:
- Compression never returns a file larger than the input. If recompression would grow the file, you get your original bytes back and `optimized: false` in the metadata. No fake savings. (Scoped to compression on purpose: resize and crop report size changes plainly, and format conversion can legitimately grow a file.)
- Stable error envelope: every error is `{error: {code, message, details}, request_id}` with a fixed set of codes, plus `Retry-After` on 429/503.
- Idempotency keys are required, not optional. Retrying a request can't double-spend your quota.
- Batch endpoint takes up to 200 files.
Stack is Kotlin/Spring with sharp doing the pixel work, on a Hetzner box. Limits: 40 MB / 50 megapixels per image; results expire after two hours.
Free tier is 500 API operations a month, no card. Paid starts at $9/month for 2,000 operations.
Not affiliated with Tinify B.V. (the company behind TinyPNG).
Mostly after feedback on the API contract - error codes, the batch flow, what's missing. Happy to answer anything about running this on one machine.
larsenutvikling•1h ago
The parts I care about:
- Compression never returns a file larger than the input. If recompression would grow the file, you get your original bytes back and `optimized: false` in the metadata. No fake savings. (Scoped to compression on purpose: resize and crop report size changes plainly, and format conversion can legitimately grow a file.) - Stable error envelope: every error is `{error: {code, message, details}, request_id}` with a fixed set of codes, plus `Retry-After` on 429/503. - Idempotency keys are required, not optional. Retrying a request can't double-spend your quota. - Batch endpoint takes up to 200 files.
Stack is Kotlin/Spring with sharp doing the pixel work, on a Hetzner box. Limits: 40 MB / 50 megapixels per image; results expire after two hours.
Free tier is 500 API operations a month, no card. Paid starts at $9/month for 2,000 operations.
Not affiliated with Tinify B.V. (the company behind TinyPNG).
Mostly after feedback on the API contract - error codes, the batch flow, what's missing. Happy to answer anything about running this on one machine.